Примерно в середине февраля стало известно, что Уфанет плавно модернизирует свою сеть и теперь у некоторых абонентов локальные ресурсы стали доступны без 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 входит в минимальную поставку системы, поэтому в установке не нуждается.
1. Настроим сетевые интерфейсы.
Настроим локальный петлевой интерфейс, 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
2. Настроим приоритеты DNS-серверов.
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*
*
3. Создадим таблицы маршрутизации.
Добавим две таблицы с именами lunlim и iunlim, которые будут содержать маршруты ответственные за работу ответного трафика соединений устанавливаемых снаружи.
/etc/iproute2/rt_tables:
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
201 iunlim
202 lunlim
4. Настроим VPN-соединение.
Зададим опции для 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 *
freedom_login - это логин на подключение по тарифу "Свобода".
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
Для ручного включения и отключения соединения можно пользоваться командами:
pon iunlim - включить безлимитный интернет,
poff iunlim - отключить безлимитный интернет,
В файле /etc/network/interfaces настроена автоматическая установка VPN-соединения. Можете изменить настройки в этом файле по своему желанию - оставить соединение или отключить его. При этом вы всегда сможете установить или разорвать соединение вручную, командами описанными выше.
Ссылка на исходную статью:
Два VPN-подключения к Уфанет
Обновлено 6 апреля 2009 года.