Маршрутизация и VPN

В связи с тем, что macOS не принимает таблицу маршрутизации по расширениям протокола DHCP часто возникает проблема корректировки маршрутов при установки связи по VPN. Проблема возникает при необходимости использования соединения VPN в качестве маршрута по-умолчанию (при установки флажка "Отправлять весь трафик через VPN" в настройках соединения).

Для решения можно использовать up/down скрипты, вызываемые pppd: ip-up и ip-down. В качестве примера рассмотрим корректировку маршрутов на подсеть 10.0.0.0/8.

Немного теории

Скрипту ip-up передаются шесть параметров:

  • ifname - название нового ppp интерфейса

  • ttyname (у меня пустая строка)

  • ttyspeed (у меня пустая строка)

  • localip - ip, присвоенный ppp интерфейсу

  • remoteip - ip шлюза

  • oldgateway - ip прежнего шлюза по-умолчанию

Эти параметры могут помочь при написании логики работы скрипта.

Изменение маршрутов при подключении VPN

Запускаем терминал. Для удобства запускаем оболочку с правами root-а:

sudo csh

Переходим в каталог /etc/ppp:

cd /etc/ppp

Создаем файл ip-up:

vi ip-up

Жмем клавишу i (режим вставки) и набираем следующий текст:

#!/bin/sh
ifname=$1
ttyname=$2
ttyspeed=$3
localip=$4
remoteip=$5
oldgateway=$6
/sbin/route add 10.0.0.0/8 $oldgateway
exit 0;

Сохраняем файл - Esc : w q Enter.

Изменяем права доступа к файлу для того, чтобы разрешить выполнение скрипта:

chmod 755 ip-up

Теперь при подключении VPN в таблицу маршрутизации будет добавлена запись на локальные подсети через прежний шлюз.

Изменение маршрутов при отключении VPN

Обратные действия реализуются с помощью скрипта ip-down. В том же каталоге /etc/ppp создаем файл ip-down:

/etc/ppp/ip-down
#!/bin/sh
/sbin/route delete 10.0.0.0/8
exit 0;

Изменяем права доступа к файлу для того, чтобы разрешить выполнение скрипта:

chmod 755 ip-up

Теперь при отключении мы получим начальную таблицу маршрутов.

Last updated

Was this helpful?