У меня стали спрашивать, как бы переделать два VPN-подключения на новую схему, чтобы можно было обойтись одним подключением, а локальный трафик направить через Ethernet. Я решил написать второй вариант настройки, однако проверить я его не могу, поэтому работоспособность не гарантирую (впрочем, как и раньше). Если что не получается - вам придётся приложить усилия к наладке самостоятельно, я по мере возможности постараюсь помочь.
Для настройки двух VPN-соединений нам понадобятся пакеты pptp-linux, resolvconf, iproute, ifupdown, bind9-host. Их можно установить командой:
# aptitude install pptp-linux resolvconf iproute bind9-hostifupdown входит в минимальную поставку системы, поэтому в установке не нуждается.
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 done2. Настроим приоритеты 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 lunlim4. Настроим 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 года.
14 комментариев:
Привет,ppp0 поднимается на локальные ресурсы заходит,а на внешку не пускает
morbo,route выдает default eth0,вроде должно быть ppp0,ppp0 поднимается IP выдает но на внешку не пускает,на все локальные ресурсы заходит нормально,в скриптах слово lunlim наверно вообще можно удалить?
Это могло произойти, если не сработал DHCP-сценарий.
Сейчас посмотрел и нашёл ошибку в статье, вместо команды
cp /sbin/dhclient-script /root/bin/dhclient/ufanet
должна быть
cp /sbin/dhclient-script /root/bin/dhclient-ufanet
Возможно дело в этом, если вы пунктуально настраивали всё буква в букву по статье.
/root/bin/dhclient-ufanet это я сразу увидел сделал как нужно,все равно не срабатывет ,а /ip-up.d/route и /ip-down.d/route прописывает на ppp0,/root/bin/dhclient-ufanet все сделал как у вас ,не знаю куда залить тут выложу,может что не так сделал? :) вы его не утверждайте просто посмотрите :)
fi
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
fi
if [ "$new_ip_address" != "$alias_ip_address" -a -n "$alias_ip_address" ];
then
ifconfig $interface:0- inet 0
ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
route add -host $alias_ip_address $interface:0
fi
make_resolv_conf
;;
EXPIRE|FAIL|RELEASE|STOP)
if [ -n "$alias_ip_address" ]; then
# Turn off alias interface.
ifconfig $interface:0- inet 0
fi
if [ -n "$old_ip_address" ]; then
# Shut down interface, which will delete routes and clear arp cache.
ifconfig $interface inet 0
fi
if [ -n "$alias_ip_address" ]; then
ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
route add -host $alias_ip_address $interface:0
fi
;;
TIMEOUT)
if [ -n "$alias_ip_address" ]; then
ifconfig $interface:0- inet 0
fi
ifconfig $interface inet $new_ip_address $new_subnet_arg \
$new_broadcast_arg $mtu_arg
set -- $new_routers
first_router="$1"
if [ -z "$first_router" ] || ping -q -c 1 $first_router; then
if [ "$new_ip_address" != "$alias_ip_address" -a \
-n "$alias_ip_address" ]; then
ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
route add -host $alias_ip_address dev $interface:0
fi
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
make_resolv_conf
else
# Changed from 'ifconfig $interface inet 0 down' - see Debian bug #144666
ifconfig $interface inet 0
exit_with_hooks 2 "$@"
fi
;;
esac
exit_with_hooks 0
и /etc/dhcp3/dhclient.conf я просто вставил вот так
#
interface "eth0" {
script "/root/bin/dhclient-ufanet";
}
#
option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
#send host-name "andare.fugue.com";
спасибо :)
А после настройки dhcp перезапускали сеть?
Например так:
/etc/init.d/networking restart
Или так:
ifdown eth0
ifup eth0
Или просто перезагрузкой компьютера.
Если не применить настройки к интерфейсу eth0, то сценарий /root/bin/dhclient-script не сработает.
Привет
перезапускал и перезагружал,на внешку не пускает
route выдает
default 10.162.x.x 0.0.0.0 UG 0 0 0 eth0 ---наверно должно быть ppp0 все дело в этом
добавил в /root/bin/dhclient-ufanet в двух местах
route add default ppp0 все заработало:) так можно или это не правильно?
>добавил в /root/bin/dhclient-ufanet в двух местах
>route add default ppp0 все заработало:) так можно или это не правильно?
Это правило должно добавляться через сценарий /etc/ppp/ip-up.d/route вот этой строчкой:
ip route add default dev $PPP_IFACE src $PPP_LOCAL table main
morbo,сейчас удалил из /root/bin/dhclient-ufanet строки ip route add default ppp0,перезапустил dhcp и все заработало,странно это все :)
default * 0.0.0.0 U 0 0 0 ppp0
ваш man 100% рабочий
вопрос настроил iptables, на ufadeb.homelinux.org не заходит,на другие www нормально
TCP DROP: IN=eth0 OUT= MAC=:14:08:00 SRC=172.x.x.x72 DST=10.16.x.x LEN=60 TOS=0x00 PREC=0x00 TTL=60 ID=0 DF PROTO=TCP SPT=80 DPT=57902 WINDOW=5632 RES=0x00 ACK SYN URGP=0
правило у меня есть $IPT -A INPUT -p tcp -m tcp -m multiport --dport 1024:65535 -j ACCEPT --sports 80
может из за флага ACK SYN ?
комментарии можно удалять,а то понаписали за день :)
спасибо за помощь
>вопрос настроил iptables, на ufadeb.homelinux.org не заходит,на другие www нормально
>TCP DROP: IN=eth0 OUT= MAC=:14:08:00 SRC=172.x.x.x72 DST=10.16.x.x LEN=60 TOS=0x00 PREC=0x00 TTL=60 ID=0 DF PROTO=TCP SPT=80 DPT=57902 WINDOW=5632 RES=0x00 ACK SYN URGP=0
У меня с сервером всё в порядке, проверил только что. Без правил iptables к ufadeb.homelinux.org подключается нормально?
>правило у меня есть $IPT -A INPUT -p tcp -m tcp -m multiport --dport 1024:65535 -j ACCEPT --sports 80
Освойте модуль conntrack, с его помощью не придётся прописывать обратные разрешающие правила. Тогда в цепочке INPUT у вас будут только правила, разрешающие подключения к ВАШЕМУ компьютеру (если вы запустили на своём компьютере какие-либо сервисы), а в цепочке OUTPUT ОТ ВАШЕГО (если вы хотите защититься от троянов или вирусов, рассылающих спам).
>может из за флага ACK SYN ?
(пожимает плечами) Может быть, а может быть из-за чего-то ещё. Нужно вооружаться tcpdump-ом, хорошим знанием iptables и принципов работы необходимых сервисов - www, ftp, smtp и т.п. :)
>комментарии можно удалять,а то понаписали за день :)
Пусть остаются. Может у кого-то возникнут похожие проблемы, почитают комментарии и может что-то поймут.
Доброго времени суток!
спасибо за мануал, меня очень интересует настройка Билайн+Уфанет (уфанет используется только для локала, без впн)
если что то не описал мыло: keeper0null@gmail.com
>меня очень интересует настройка Билайн+Уфанет (уфанет используется только для локала, без впн)
У меня нет Билайна, поэтому описать такую конфигурацию я не смогу, да и она мне не интересна. Можете попробовать настроить по аналогии.
после вашец настройки у меня не запускается сеть. прописываю sudo ifconfig eth0 up и ничего не происходит
>прописываю sudo ifconfig eth0 up и ничего не происходит
А что должно произойти?
Отправить комментарий