По-умолчанию, при поднятии VPN соединения, Mac OS X пропишет только один статический маршрут, соответствующий создаваемому туннелю. Но бывают ситуации когда необходимо прописать несколько маршрутов для подсетей или хостов. Решить данный вопрос в GUI Mac OS X невозможно. Но возможно через консоль(терминал).
Итак, открываем терминал. Для решения данной задачи создадим файл /etc/ppp/ip-up, и сделаем его исполняемым:
sudo touch /etc/ppp/ip-up
sudo chmod a+x /etc/ppp/ip-up
Открываем созданный файл для редактирования
sudo vim /etc/ppp/ip-up
и пропишем в нем:
Итак, открываем терминал. Для решения данной задачи создадим файл /etc/ppp/ip-up, и сделаем его исполняемым:
sudo touch /etc/ppp/ip-up
sudo chmod a+x /etc/ppp/ip-up
Открываем созданный файл для редактирования
sudo vim /etc/ppp/ip-up
и пропишем в нем:
#!/bin/sh ifname=$1 # the interface name used by pppd (e.g. ppp3) ttyname=$2 # the tty device name speed=$3 # the tty device speed localip=$4 # the local IP address for the interface remoteip=$5 # the remote IP address ipparam=$6 # the current IP address before connecting to the VPN case "$remoteip" in 172.24.38.116) /sbin/route add -net 192.0.2.0/24 -interface $ifname /sbin/route add -host 192.168.12.54 -interface $ifname ;; esac exit 0;
В данном примере 172.24.38.116 это ip-адрес сервера VPN. 192.0.2.0/24 и 192.168.12.54 подсеть и хост, которые пойдут через VPN туннель. IP-адрес сервера можно посмотреть после установления VPN соединения командой ifconfig и найти интерфейс ppp0.
ppp0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1448 inet 192.168.20.57 --> 172.24.48.116 netmask 0xffffff00
Аналогично можно сделать скрипт для удаления маршрутов /etc/ppp/ip-down, который будет вызываться при остановке VPN туннеля:
/sbin/route delete -net 192.0.2.0/24 -interface $ifname /sbin/route delete -host 192.168.12.54 -interface $ifname
Если есть вопросы - задавайте!