четверг, 6 февраля 2014 г.

Маршрутизация в Mac OS при VPN подключении

Появилась задача подключатся по VPN к рабочей сети, чтобы иметь доступ к внутренним ресурсам. Столкнулся с тем что по-умолчанию при поднятий подключения, 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

и пропишем в нем:


#!/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.42.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.42.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.42.38.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

PS

sudo route add -net 192.0.2.0 -netmask 255.255.255.0 172.42.38.116
sudo route add -host 192.168.12.54 -netmask 255.255.255.0 172.42.38.116

1 комментарий:

  1. подскажите, у меня по команде ifconfig после соединения VPN показывает "inet 192.168.200.138 --> 192.168.200.137", а на самом деле ip-адрес сервера VPN совсем другой

    ОтветитьУдалить