- Ложка дёгтя
Использовать сервер для раздачи билайновского интернета дома у меня не получилось. С сервера интернет работал как часы, но у клиентов через NAT глючило и весьма странным образом. Пинги, трассировка проходили, но сайты открывались не все. Яндекс, Гугль - ок, но тот же hh.ru не открывался (тайм-аут). Техподдержка билайна доказывала мне, что проблема в настройках моего сервера так как если напрямую подключить комп с виндой, то все сайты работают (это так, я пробовал).
После безуспешной борьбы с билайновцами, в качестве эксперимента подключился к ростелекому, тот же сервер, поднял VPN - все сайты, что не открывались через билайн, тут открываются.
Выводы делайте сами, но у меня теперь новый провайдер.
- Софт
Необходимо установить пакеты dnsutils и xl2tpd. Как вы их будете устанавливать - без разницы, я выпустил Raspberry Pi в инет через сервер, который подключен к другому провайдеру.# apt-get install dnsutils # apt-get install xl2tpd
- ip-адреса
eth0 - сетевой интерфейс на плате, статический ip, смотрит в локальную сеть
eth1 - D-Link DUB-E100, usb, динамический ip, смотрит в сеть провайдера
/etc/network/interfacesallow-hotplug eth0 iface eth0 manual
/etc/dhcpcd.conf - файлик в системе есть, пишем в началоinterface eth0 static ip_address=192.168.1.6/24 nogateway # не дает записать default route интерфейса в таблицу маршрутизации nohook resolv.conf # не дает записать dns интерфейса в /etc/resolv.conf interface eth1
Перезагружаемся, проверяем:# ifconfig eth0 Link encap:Ethernet HWaddr b8:27:eb:80:ab:fc inet addr:192.168.1.6 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::ba27:ebff:fe80:abfc/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:354 errors:0 dropped:0 overruns:0 frame:0 TX packets:329 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:31484 (30.7 KiB) TX bytes:88404 (86.3 KiB) eth1 Link encap:Ethernet HWaddr 90:8d:78:04:36:e6 inet addr:10.63.224.155 Bcast:255.255.255.255 Mask:255.255.248.0 inet6 addr: fe80::3f17:ad6e:828e:72c9/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1514 errors:0 dropped:0 overruns:0 frame:0 TX packets:392 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:141272 (137.9 KiB) TX bytes:112557 (109.9 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:148 errors:0 dropped:0 overruns:0 frame:0 TX packets:148 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:12792 (12.4 KiB) TX bytes:12792 (12.4 KiB)
Смотрим таблицу маршрутизации, маршрут по умолчанию должен смотреть в сеть провайдера# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 10.63.224.1 0.0.0.0 UG 203 0 0 eth1 10.63.224.0 * 255.255.248.0 U 203 0 0 eth1 192.168.1.0 * 255.255.255.0 U 202 0 0 eth0
Смотрим dns-сервера# cat /etc/resolv.conf # Generated by resolvconf domain beeline nameserver 213.234.192.8 nameserver 85.21.192.3
Делаем трассировку до dns-серверов, трассировка должна идти через eth1# 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) 2.080 ms 2.379 ms 3.020 ms [SKIPPED] 10 nlb1.beeline.ru (85.21.192.11) 11.898 ms 11.781 ms 11.731 ms root@raspberrypi:/etc# traceroute 85.21.192.3 traceroute to 85.21.192.3 (85.21.192.3), 30 hops max, 60 byte packets 1 10.63.224.1 (10.63.224.1) 1.737 ms 2.415 ms 2.949 ms [SKIPPED] 12 nlb1.beeline.ru (85.21.192.11) 11.822 ms 8m-iptv-bb-vl23.corbina.net (85.21.226.75) 13.462 ms 13.675 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.205
Пингуем:# 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.575 ms 64 bytes from 89.179.75.238: icmp_seq=2 ttl=252 time=0.424 ms 64 bytes from 89.179.75.238: icmp_seq=3 ttl=252 time=0.539 ms 64 bytes from 89.179.75.238: icmp_seq=4 ttl=252 time=0.403 ms ^C --- 89.179.75.238 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 2999ms rtt min/avg/max/mdev = 0.403/0.485/0.575/0.074 ms # ping 89.179.75.205 PING 89.179.75.205 (89.179.75.205) 56(84) bytes of data. 64 bytes from 89.179.75.205: icmp_seq=1 ttl=251 time=0.778 ms 64 bytes from 89.179.75.205: icmp_seq=2 ttl=251 time=0.618 ms 64 bytes from 89.179.75.205: icmp_seq=3 ttl=251 time=0.514 ms 64 bytes from 89.179.75.205: icmp_seq=4 ttl=251 time=0.513 ms ^C --- 89.179.75.205 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 2999ms rtt min/avg/max/mdev = 0.513/0.605/0.778/0.112 ms
- iptable
Сразу же врубаем брандмауер, записываем правила в /etc/rc.local# по умолчанию для всего запрет iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # разрешаем loopback iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # разрешаем lan iptables -A INPUT -i eth0 -j ACCEPT iptables -A OUTPUT -o eth0 -j ACCEPT # разрешаем исходящие на провайдера # нужно для соединения с vpn провайдера iptables -A OUTPUT -o eth1 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT # разрешаем уже установленные соединения iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
- Настраиваем маршрутизацию
/etc/sysctl.conf, разрешаем маршрутизацию пакетов:net.ipv4.ip_forward=1 net.ipv6.conf.all.forwarding=1
- Настраиваем xl2tpd
/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.xl2tpdlcp-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
/etc/ppp/chap-secrets# Secrets for authentication using CHAP # client server secret IP addresses <логин_beeline> * <пароль_beeline>
<логин_beeline>, <пароль_beeline> - это ваши логин и пароль для подключения (без угловых скобок, конечно)
/etc/ppp/optionslcp-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-сервера через eth1
- добавляем маршрут на билайновскую сеть 10.63.0.0 через eth1 (этот момент нужно будет периодически проверять, чтобы сеть вдруг не изменилась)
- добавляем маршрут на dns-сервера через eth1
- удаляем маршрут по умолчанию
- задаем адрес 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-сервер)
- добавляем маршрут по умолчанию на eth1
- Запускаем
Добавляем xl2tpd в автозагрузку:# 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)
- Иногда само все не стартует, поэтому для автоматизации хорошо бы написать скриптик, проверяющий успешное поднятие интерфейса, а также пинг хотя бы до того же яндекса (да-да, у билайна бывает и так, что интерфейс поднялся, а пакеты не идут).
Статья опубликована: 2016-02-28 23:08:00
Последние правки: 2018-03-11 20:27:21
Делаем из Raspbian Jessie роутер для доступа в интернет.
Подключаемся к Beeline.