Примерно в середине февраля стало известно, что Уфанет плавно модернизирует свою сеть и теперь у некоторых абонентов локальные ресурсы стали доступны без VPN-подключения. По неофициальной информации от сотрудников Уфанет локальные ресурсы доступны без VPN-подключения тем абонентам, которые по DHCP получают адреса из диапазона 10.160.0.0-10.191.255.255 (10.160.0.0/11). Проверьте адрес, который вам выдаёт DHCP-сервер, возможно вы один из счастливчиков :)
У меня стали спрашивать, как бы переделать два VPN-подключения на новую схему, чтобы можно было обойтись одним подключением, а локальный трафик направить через Ethernet. Я решил написать второй вариант настройки, однако проверить я его не могу, поэтому работоспособность не гарантирую (впрочем, как и раньше). Если что не получается - вам придётся приложить усилия к наладке самостоятельно, я по мере возможности постараюсь помочь.
Для настройки двух VPN-соединений нам понадобятся пакеты pptp-linux, resolvconf, iproute, ifupdown, bind9-host. Их можно установить командой:
# aptitude install pptp-linux resolvconf iproute bind9-host
ifupdown входит в минимальную поставку системы, поэтому в установке не нуждается.
Настроим локальный петлевой интерфейс, Ethernet-интерфейс Уфанет, и автоматическое подключение внешнего VPN-соединения.
/etc/network/interfaces:
auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp auto iunlim iface iunlim inet ppp provider iunlim
Добавляем в файл конфигурации DHCP-клиента /etc/dhcp3/dhclient.conf новую секцию, связанную с интерфейсом eth0:
interface "eth0" { script "/root/bin/dhclient-ufanet"; }
Вам может понадобиться заменить в файлах инициализации интерфейс eth0 (выше он выделен жирным шрифтом) на тот, к которому подключен Ethernet-кабель Уфанет.
Копируем сценарий, выполняющийся по умолчанию, в каталог /root/bin/ под именем dhclient-ufanet:
# mkdir /root/bin/ # cp /sbin/dhclient-script /root/bin/dhclient-ufanet
Заменяем в скопированном сценарии строчки следующего вида в двух местах:
for router in $new_routers; do route add default dev $interface gw $router $metric_arg done
на блок:
for router in $new_routers; do ip route add 81.30.176.0/20 via $router dev $interface src $new_ip_address table main ip route add 81.30.192.0/19 via $router dev $interface src $new_ip_address table main ip route add 89.189.128.0/19 via $router dev $interface src $new_ip_address table main ip route add 77.79.128.0/18 via $router dev $interface src $new_ip_address table main ip route add 92.50.128.0/18 via $router dev $interface src $new_ip_address table main ip route add 94.41.0.0/18 via $router dev $interface src $new_ip_address table main ip route add 94.41.128.0/21 via $router dev $interface src $new_ip_address table main ip route add 94.41.136.0/22 via $router dev $interface src $new_ip_address table main ip route add 94.41.140.0/23 via $router dev $interface src $new_ip_address table main ip route add 79.140.24.0/22 via $router dev $interface src $new_ip_address table main ip route add 79.140.16.0/21 via $router dev $interface src $new_ip_address table main ip route add 172.16.0.0/12 via $router dev $interface src $new_ip_address table main ip route add 10.0.0.0/8 via $router dev $interface src $new_ip_address table main ip route add default via $router dev $interface src $new_ip_address table lunlim ip rule add from $new_ip_address table lunlim done
DNS-серверы на интерфейсе ppp должны быть приоритетнее DNS-серверов на интерфейсе Ethernet, поэтому в файле /etc/resolvconf/interface-order строчку ppp* поместим перед eth*.
/etc/resolvconf/interface-order:
# interface-order(5) lo.inet* lo.dnsmasq lo.pdnsd lo.!(pdns|pdns-recursor) lo tun* tap* ppp* eth* ath* wlan* *
Добавим две таблицы с именами lunlim и iunlim, которые будут содержать маршруты ответственные за работу ответного трафика соединений устанавливаемых снаружи.
/etc/iproute2/rt_tables:
# # reserved values # 255 local 254 main 253 default 0 unspec # # local # #1 inr.ruhep 201 iunlim 202 lunlim
Зададим опции для PPP-соединения.
/etc/ppp/options:
asyncmap 0 auth crtscts lock hide-password modem proxyarp lcp-echo-interval 30 lcp-echo-failure 4 noipx usepeerdns
Зададим опции для PPTP-соединения.
/etc/ppp/options.pptp:
lock noauth nobsdcomp nodeflate persist maxfail 0
В файле /etc/ppp/chap-secrets пропишем логин и пароль на подключение к VPN-серверу Уфанет.
/etc/ppp/chap-secrets:
# Secrets for authentication using CHAP # client server secret IP addresses freedom_login vpn.ufanet.ru password *
Ваш логин необходимо прописать также в файле /etc/ppp/peers/iunlim далее по тексту (он выделен жирным шрифтом).
Файл /etc/ppp/peers/iunlim задаёт настройки подключения по безлимитному тарифу "Свобода" и привязывает его к интерфейсу ppp0.
/etc/ppp/peers/iunlim:
pty "pptp vpn.ufanet.ru --nolaunchpppd" name freedom_login remotename vpn.ufanet.ru file /etc/ppp/options.pptp ipparam iunlim unit 0
В скрипте /etc/ppp/ip-up.d/route происходит добавление маршрутов маршрутов к нелокальным узлам на внешнем соединении.
/etc/ppp/ip-up.d/route:
#!/bin/sh case "$PPP_IPPARAM" in iunlim) ip route add 81.30.199.50 dev $PPP_IFACE src $PPP_LOCAL table main ip route add 81.30.199.69 dev $PPP_IFACE src $PPP_LOCAL table main ip route add 81.30.199.238 dev $PPP_IFACE src $PPP_LOCAL table main ip route add 81.30.197.10 dev $PPP_IFACE src $PPP_LOCAL table main ip route add default dev $PPP_IFACE src $PPP_LOCAL table main ip route add default dev $PPP_IFACE src $PPP_LOCAL table iunlim ip rule add from $PPP_LOCAL table iunlim ;; *) echo "No PPP_IPPARAM defined" ;; esac
Не забудьте сделать скрипт исполняемым, например командой:
# chmod +x /etc/ppp/ip-up.d/route
В скрипте /etc/ppp/ip-down.d/route происходит удаление маршрутов к нелокальным узлам на внешнем соединении.
/etc/ppp/ip-down.d/route:
#!/bin/sh case "$PPP_IPPARAM" in iunlim) ip route del 81.30.199.50 dev $PPP_IFACE src $PPP_LOCAL table main ip route del 81.30.199.69 dev $PPP_IFACE src $PPP_LOCAL table main ip route del 81.30.199.238 dev $PPP_IFACE src $PPP_LOCAL table main ip route del 81.30.197.10 dev $PPP_IFACE src $PPP_LOCAL table main ip route del default dev $PPP_IFACE src $PPP_LOCAL table main ip route del default dev $PPP_IFACE src $PPP_LOCAL table iunlim ip rule del from $PPP_LOCAL table iunlim ;; *) echo "No PPP_IPPARAM defined" ;; esac
Не забудьте сделать скрипт исполняемым, например командой:
# chmod +x /etc/ppp/ip-down.d/route
Для ручного включения и отключения соединения можно пользоваться командами:
В файле /etc/network/interfaces настроена автоматическая установка VPN-соединения. Можете изменить настройки в этом файле по своему желанию - оставить соединение или отключить его. При этом вы всегда сможете установить или разорвать соединение вручную, командами описанными выше.
Ссылка на исходную статью: Два VPN-подключения к Уфанет
Обновлено 6 апреля 2009 года.