Меню

SLIDER.WEB studio

СоцСсылки

БЛОГ


Автоматическое добавление маршрутов через VPN

Как добавить статический маршрут через установленное VPN-соединение до выбранного ресурса?

Именно такой вопрос возникает у пользователя после знакомства с технологией VPN. Как известно не все протоколы туннелирования поддерживают динамическое добавление маршрута клиенту после подключения. Классический случай - установка маршрута по умолчанию через VPN-интерфейс, но это не всегда оправданно, особенно если VPN-сервер находится в другой стране или на другом континенте. Скорость такого подключения будет достаточно низкой.

Для решения этой проблемы достаточно прописать статический маршрут через установленное VPN-соединение, а маршрут по умолчанию оставить через своего провайдера. Но такой маршрут будет исчезать при отключении, так как будет уничтожаться ppp-интерфейс, и при повторном подключении необходимо будет заново лезть в консоль и добавлять маршрут в ручную.

Я лично считаю, что люблю действие, выполняемое более одного раза, должно быть автоматизировано!

Я расскажу о способе, который я использую в Mac OS, но так-же легко реализуется на любой UNIX-like системе, при организации туннеля по протоколу PPTP.

Так как протокол PPTP не поддерживает распространение маршрутной информации каким либо образом, то для имитации этого процесса мы можем воспользоваться возможностями банального shell-скрипта.

Для начала создадим два файла /etc/ppp/ip-up и /etc/ppp/ip-down, и сделаем их исполняемыми командой chmod a+x. Данные сироты будут автоматически исполняться при подключении и отключении туннеля соответсвенно.

Листинг /etc/ppp/ip-up (в моем случае ip адрес выдается динамически, поэтому я проверяю удаленный адрес моего подключения на стороне сервера, а качестве адреса назначения указана подсеть retracker.org, который не так давно включили в знаменитый реестр) =)

#!/bin/sh
# обозначаем возможные переменные для проверок
ifname=$1        # имя интерфейса pppd (e.g. ppp0)
ttyname=$2       # Имя tty-устройства 
speed=$3         # скорость tty-устройства
localip=$4       # локальный IP интерфейса
remoteip=$5      # IP-адрес удаленного "конца" туннеля
ipparam=$6       # текущий IP address до подключения к VPN
case "$remoteip" in
    192.168.0.1)
        /sbin/route add -net 195.82.146.0/23 -interface $ifname
        ;;
esac
exit 0;

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

Листинг /etc/ppp/ip-down (здесь все просто - убираем добавленный ранее маршрут через ppp-интерфейс)

#!/bin/sh
ifname=$1        # имя интерфейса
/sbin/route delete -net 195.82.146.0/23 -interface $ifname

Теперь, при каждом сеансе подключения к серверу будут добавляться наши маршруты, а при отключении - удаляться. PROFFIT

Posted in #япочинил, Инфраструктура, Полезности on фев 03, 2016