Билайн ориентирован на Windows-клиентов и поэтому подключение к Beeline для юниксоида - всегда экстрим. Начать с того, что девочки саппорта Билайна залипают когда ты говоришь им, что у тебя FreeBSD, а после отлипания выдают из скрипта "мы не занимаемся поддержкой клиентов с не Виндой". Настройка на FreeBSD проходила очень увлекательно, вплоть до мониторинга через tcpdump "а куда идут пакеты". Так что тренируйте пальцы - набирать конфигов придется много.
- Исходные данные
# uname -vr 3.16.0-4-686-pae #1 SMP Debian 3.16.7-ckt11-1 (2015-05-24)
Настраиваем для eth0
- Подготовка:
В системе должны быть установлены пакеты: udhcpcd, dnsutils и xl2tpd. Как вы их будете устанавливать - без разницы, я добавил в виртуалку eth1 со статическим ip и выпустил сервер в инет через хост-сервер, который подключен к основному провайдеру.# apt-get install udhcpd # apt-get install dnsutils # apt-get install xl2tpd
- Настраиваем eth0 и dhcpd:
Запись для eth0 в /etc/network/interfacesauto eth0 iface eth0 inet dhcp
Настраиваем dhcpd.
/etc/dhcp/dhclient.conf
Ищем строчкуoption rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
и меняем её наoption rfc3442-classless-static-routes code 249 = array of unsigned integer 8;
Чтобы через три дня наш сервер смог найти dhcp-сервер Билайна, ниже пишем ещё одну строчку:supersede dhcp-server-identifier 255.255.255.255;
Потом ищем строку, которая начинается на request и меняем её:request subnet-mask, broadcast-address, time-offset, routers, static-routes, domain-name, domain-name-servers, domain-search, host-name, netbios-name-servers, netbios-scope, interface-mtu, rfc3442-classless-static-routes, ntp-servers;
С настройкой dhcpd.conf закончили.
Команда для добавления udhcpd в автозапуск:# systemctl enable dhcpcd
Для чистоты эксперимента перезагружаем.
После перезагрузки смотрим таблицу маршрутизации. Должно быть что-то вроде этого:~# netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 10.63.224.1 0.0.0.0 UG 0 0 0 eth0 10.63.224.0 0.0.0.0 255.255.248.0 U 0 0 0 eth0 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
Смотрим, какие dns записало в /etc/resolv.conf~# cat /etc/resolv.conf domain beeline search beeline nameserver 213.234.192.8 nameserver 85.21.192.3
Пробуем трассировку до dns-серверов из /etc/resolv.conf~# traceroute 85.21.192.3 1 10.63.224.1 (10.63.224.1) 1.638 ms 2.212 ms 2.927 ms ... 11 nlb1.beeline.ru (85.21.192.11) 11.813 ms 11.774 ms 8m-iptv-bb-vl23.corbina.net (85.21.226.75) 12.600 ms ~# traceroute 213.234.192.8 traceroute to 213.234.192.8 (213.234.192.8), 30 hops max, 60 byte packets 1 10.63.224.1 (10.63.224.1) 1.497 ms 2.076 ms 2.792 ms ... 10 nlb1.beeline.ru (85.21.192.11) 11.863 ms 11.821 ms 11.773 ms
Далее, пробуем выяснить ip-адреса vpn-серверов
~# host tp.internet.beeline.ru tp.internet.beeline.ru has address 89.179.75.238 tp.internet.beeline.ru has address 89.179.75.225Пробуем пинговать
~# ping 89.179.75.225 PING 89.179.75.225 (89.179.75.225) 56(84) bytes of data. 64 bytes from 89.179.75.225: icmp_seq=1 ttl=251 time=0.607 ms 64 bytes from 89.179.75.225: icmp_seq=2 ttl=251 time=0.430 ms 64 bytes from 89.179.75.225: icmp_seq=3 ttl=251 time=0.437 ms 64 bytes from 89.179.75.225: icmp_seq=4 ttl=251 time=0.443 ms 64 bytes from 89.179.75.225: icmp_seq=5 ttl=251 time=0.412 ms ^C --- 89.179.75.225 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 3998ms rtt min/avg/max/mdev = 0.412/0.465/0.607/0.076 ms ~# ping 89.179.75.238 PING 89.179.75.238 (89.179.75.238) 56(84) bytes of data. 64 bytes from 89.179.75.238: icmp_seq=1 ttl=252 time=0.433 ms 64 bytes from 89.179.75.238: icmp_seq=2 ttl=252 time=0.355 ms 64 bytes from 89.179.75.238: icmp_seq=3 ttl=252 time=0.467 ms 64 bytes from 89.179.75.238: icmp_seq=4 ttl=252 time=0.795 ms ^C --- 89.179.75.238 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 2997ms rtt min/avg/max/mdev = 0.355/0.512/0.795/0.169 ms
/etc/xl2tpd/xl2tpd.conf
[global] access control = yes auth file = /etc/ppp/chap-secrets [lac beeline] lns = tp.internet.beeline.ru redial = yes redial timeout = 5 require chap = yes require authentication = no name = <логин_beeline> ppp debug = no pppoptfile = /etc/ppp/peers/options.xl2tpd require pap = no autodial = yes tx bps = 1000000000/etc/ppp/peers/options.xl2tpd
lcp-echo-interval 10 lcp-echo-failure 2 name <логин_beeline> remotename l2tp ipparam corbina connect /bin/true mtu 1460 nodeflate nobsdcomp persist maxfail 0 nopcomp noaccomp noauth noproxyarp<логин_beeline> - это ваш логин для подключения (без угловых скобок, конечно)
/etc/ppp/chap-secrets
# Secrets for authentication using CHAP # client server secret IP addresses <логин_beeline> * <пароль_beeline>/etc/ppp/options
lcp-echo-failure 10 lcp-echo-adaptive lcp-echo-interval 60Теперь пишем скрипты для смены маршрутов.
- при поднятии ppp-интерфейса, файл /etc/ppp/ip-up.d/0010beeline-up
#!/bin/sh #GW="10.63.224.1" GW=`cat /var/lib/dhcp/dhclient.eth0.leases | grep 'option routers' | tail -1 | awk '{print $3}' | sed 's/;//'` /sbin/route del $5 dev $1 /sbin/route add -host $5 gw $GW /sbin/route add -net 10.63.0.0 netmask 255.255.0.0 gw $GW for i in $(grep "^nameserver" /etc/resolv.conf | awk '{print $2}'); do /sbin/route add -host $i gw $GW done /sbin/route del default /sbin/route add default dev $1Здесь мы:
- узнаем маршрут по умолчанию (GW) из файла dhcpd нашего интерфейса (/var/lib/dhcp/dhclient.eth0.leases)
- удаляем маршрут до vpn-сервера через его же vpn-туннель (в Windows такой маршрут не вызывает никаких проблем, но то в Windows, а в unix получается петля и ничего не работает)
- добавляем маршрут до vpn-сервера через eth0
- добавляем маршрут на билайновскую сеть 10.63.0.0 через eth0 (этот момент нужно будет периодически проверять, чтобы сеть вдруг не изменилась)
- добавляем маршрут на dns-сервера через eth0
- удаляем маршрут по умолчанию
- задаем адрес vpn-сервера в качестве маршрута по умолчанию
- при выключении ppp-интерфейса, файл /etc/ppp/ip-down.d/0010beeline-down
#!/bin/sh #GW="10.63.224.1" GW=`cat /var/lib/dhcp/dhclient.eth0.leases | grep 'option routers' | tail -1 | awk '{print $3}' | sed 's/;//'` /sbin/route del default /sbin/route add default gw $GWкак видите, ничего сложного:
- снова находим адрес маршрута по умолчанию из dhcp
- удаляем маршрут по умолчанию (он сейчас ведет на vpn-сервер)
- добавляем маршрут по умолчанию на eth0
- добавляем в автозагрузку:
~# systemctl enable xl2tpd- запускаем:
~# service xl2tpd start- посмотреть что происходит:
~# systemctl status xl2tpd.serviceили же в файле /var/log/syslog
Если все подключение прошло удачно, то у вас появится новый сетевой интерфейс
ppp0 Link encap:Point-to-Point Protocol inet addr:XXX.XXX.XXX.XXX P-t-P:XXX.XXX.XXX.XXX Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1460 Metric:1 RX packets:4548 errors:0 dropped:0 overruns:0 frame:0 TX packets:3109 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:5925964 (5.6 MiB) TX bytes:234571 (229.0 KiB)