Домашний интернет билайн линукс

Соединение по l2tp c beeline

tp.internet.beeline.ru — для подключения по протоколу L2TP.
IP-адрес, маршруты, шлюз по умолчанию (Default Gateway), сервер доменных имен (DNS) — ваш компьютер или маршрутизатор получает по протоколу DHCP.
Для доступа к интернету используется VPN-подключение по L2TP- (без IPsec) или PPTP- протоколам.

Во-вторых, мои конфиги xl2tpd:

[global] access control = yes [lac beeline] lns = tp.internet.beeline.ru; pppoptfile = /etc/ppp/options.xl2tpd; autodial = yes; redial = yes; redial timeout = 10; require chap = yes; require pap = no; refuse chap = no; refuse pap = yes; name = login; [/cut] 
unit 0 remotename beeline mru 1460 mtu 1460 noaccomp nopcomp novj novjccomp nobsdcomp nodeflate noipx nomp defaultroute name login 
# Secrets for authentication using CHAP # client server secret IP addresses login * password * 

В-третьих, dhcp работает, и при подключении кабеля появляется:

Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.250.48.1 0.0.0.0 UG 202 0 0 eth0 10.250.48.0 0.0.0.0 255.255.248.0 U 202 0 0 eth0 85.21.78.93 10.250.48.1 255.255.255.255 UGH 202 0 0 eth0 
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.250.48.1 0.0.0.0 UG 202 0 0 enp1s0 10.250.48.0 0.0.0.0 255.255.248.0 U 202 0 0 enp1s0 85.21.78.93 10.250.48.1 255.255.255.255 UGH 202 0 0 enp1s0 89.179.75.100 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0 

Итог: пингуются только 85.21.78.93 и 89.179.75.100.

У Билайна свой, упоротый, впн в интернет.
Сохрани себе нервы и время, сделай мини-виртуалку с OpenWRT и LuCI настрой в ней подключение.

Шлюзом должен быть таки поднятый ppp0. Вот пример костыля, работающего уж который год (да, костыль, но работает). Локалка 192.168.3.0/24

#!/bin/bash echo "Starting. " #get default gw ip BEELINEGWIP=`route -n | grep 'UG[ \t]' | awk '' | tail -n 1` DNS1=85.21.192.3 ip route add $DNS1 via $BEELINEGWIP #get ips for tp.internet.beeline.ru. it`s try get all ip for tp.internet.beeline.ru 20 time with 1 second sleep count=0 while true; do if [ $count -eq 20 ]; then break fi IPS=`host tp.internet.beeline.ru $DNS1 | awk '' | cut -d. -f1,2,3 | sort -u` for IP in $IPS do if [ "$IP1" == "" ]; then IP1=$IP elif [ "$IP1" != "$IP" ]; then IP2=$IP break 2 fi done count=$(( $count+1 )) sleep 1 done echo "IP1: $IP1 IP2: $IP2" >> /var/log/xxxx.log #set routes for l2tp tunnel if [ "$IP1" != "" ]; then ip route add $.0/23 via $BEELINEGWIP fi if [ "$IP2" != "" ]; then ip route add $.0/24 via $BEELINEGWIP fi #add default route ip route del default ip route del $PPP_REMOTE dev $PPP_IFACE ip route add default dev $PPP_IFACE ip route del $PPP_REMOTE dev $PPP_IFACE ip route add 192.168.3.0/24 via 192.168.3.2 modprobe ip_conntrack_ftp modprobe nf_conntrack_pptp iptables -F iptables -t nat -F iptables -t mangle -F iptables -X #always accept lo iptables -P INPUT DROP iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -i enp1s0 -j ACCEPT iptables -A INPUT -p tcp --dport 51413 -j ACCEPT iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -m conntrack --ctstate NEW -i ! $PPP_IFACE -j ACCEPT #www iptables -A INPUT -m multiport -p tcp --dports 80,443 -j ACCEPT #ftp iptables -A INPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate ESTABLISHED,NEW -j ACCEPT -m comment --comment "Allow ftp connections on port 21" iptables -A OUTPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 21" iptables -A INPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment "Allow ftp connections on port 20" iptables -A OUTPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 20" iptables -A INPUT -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow passive inbound connections" iptables -A OUTPUT -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment "Allow passive inbound connections" iptables -P FORWARD DROP iptables -I FORWARD 1 -i enp1s0 -s 192.168.3.1/24 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu iptables -A FORWARD -i $PPP_IFACE -o enp1s0 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -i enp1s0 -o $PPP_IFACE -j ACCEPT iptables -A FORWARD -i $PPP_IFACE -o $PPP_IFACE -j REJECT iptables -t nat -A POSTROUTING -o $PPP_IFACE -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward 

olegkrutov ★★ ( 18.10.20 18:18:34 MSK )
Последнее исправление: olegkrutov 18.10.20 18:21:09 MSK (всего исправлений: 2)

Читайте также:  Посмотреть входящую скорость интернета

Источник

Как настроить Интернет подключение (соединение) к Beeline в Linux?

Аватар пользователя admin

В один прекрасный момент, я сменил своего Интернет-провайдера и обнаружил, что мой старый маршрутизатор не может работать по L2TP с нужной мне скоростью. В пыльной кладовке завалялся старый компьюетр с Core2Duo процессором, из которого и было решено сделать маршрутизатор, вставив туда ещё одну сетевую карту, в дополнении к сетевой карте на материнской плате. Однако, оказалось, что настроить соединение с Beeline не так-то просто. На просторах интернета мной было найдено немало рецептов, но увы, не один из них не оказался полностью рабочим — во всяком случае у меня. В итоге надёргав там и тут я всё-таки смог настроить подключение по L2TP к Beeline, и хочу поделиться моим способом с вами.

1. Системные требования

  1. Компьютер с процессором Intel Core2Duo и жестким диском на 110Gb. Как известно L2TP довольно сильно нагружает маршрутизаторы из-за шифрования данных, но Core2Duo хватает за глаза.
  2. ОС Linux дистрибутив CentOS 6.5. Дистрибутив, как видите, свежим не назовёшь, т.е. все современные дистрибутивы должны работать

2. Настройка

2.1. Установка и настройка xl2tpd.

Чтобы установить xl2tpd, необходимо подключить репзозиторий EPEL, а для этого в свою очередь необходимо установить пакет epel-release. Разумеется необходимо поставить и те пакеты, от которых зависит xl2tpd. После подключения и установки (с помощью yum), нам необходимо перез запуском xl2tpd настроить его должным образом. В моём случае файл /etc/xl2tpd/xl2tpd.conf выглядит так:

[global] access control = yes auth file = /etc/ppp/chap-secrets [lac beeline] lns = tp.internet.beeline.ru ;lns = tp.corbina.net redial = yes redial timeout = 10 require chap = yes require authentication = no name = xxxxxxxxx ppp debug = yes pppoptfile = /etc/ppp/options.xl2tpd require pap = no autodial = yes tunnel rws = 8 tx bps = 100000000 flow bit = no

Где «xxxxxxxxxx» — это логин (обычно номер абонентского договора. Как видно из настроек, нам ещё понадобится внести изменения в два файла /etc/ppp/chap-secrets и /etc/ppp/options.xl2tpd. В файле /etc/ppp/chap-secrets хранится логин и пароль для авторизации в Beeline:

# Secrets for authentication using CHAP # client server secret IP addresses xxxxxxxxxx * password *

Где «xxxxxxxxxx» — это логин, а «password» — это пароль, который назначили вам в Beeline и который вы можете изменить в вашем Личном кабинете не сайте Beeline.

Читайте также:  Можно ли установить два интернета

Файл /etc/ppp/options.xl2tpd у меня выглядит так:

asyncmap 0000 name xxxxxxxxxx remotename L2TP ipparam beeline connect /bin/true mru 1460 mtu 1460 nodeflate nobsdcomp persist maxfail 0 nopcomp noaccomp noauth novj novjccomp noipx nomp refuse-eap refuse-pap unit 0

Здесь, как видите, вам также понадобится указать вместо «xxxxxxxxxx» ваш логин. После этого, можно указать операционной системе, что мы хотим запускать xl2tpd при старте системы:

chkconfig --add xl2ptd chkconfig xl2tpd on

И собственно запустить его:

2.2. Настройка сетевого интерфейса

Итак, у нас две сетевые карты. У меня на eth0 внутренний адрес домашней сети, а карту eth1 я отдал для подключения к Beeline. Всё что вам нужно сделать — это настроить eth1 на получение адреса по DHCP. Т.е. у меня файл /etc/sysconfig/network-scripts/ifcfg-eth1 выглядит так:

DEVICE=eth1 ONBOOT=yes NM_CONTROLLED=yes HWADDR=xx:xx:xx:xx:xx:xx IPV6INIT=no TYPE=Ethernet BOOTPROTO=dhcp

Где xx:xx:xx:xx:xx:xx — это мой MAC адрес, который я, по понятным причинам, скрыл.

2.3. Поднятие L2TP соединения

Теперь мы переходим к самому интересному. Для тех кому лень и кому нужен готовый рецепт, даю свой скрипт, который тупо делает то, что нужно. Для остальных объясняю на пальцах весь процесс, на тот случай, если кому интересно или если по какой-то причине у кого-то работать не будет и он будет пытаться понять почему. Итак.

  1. На первом шаге при загрузке системы (или выполнении команды ifup eth1) происходит запрос и получение адреса по DHCP. В системе появляется интерфейс eth1 с каким-либо левым IP адресом из внутренней сети Beeline. Например, у меня это 10.x.x.x (последние цифры скрыты). Также для этого адреса нам выдаётся шлюз (он же default router) из этой-же сети 10.x.x.x. В дальнейшем нам понадобится этот адрес, который мы условно назовём XXX.XXX.XXX.XXX.
  2. На втором этапе запускается xltpd, который поднимает интерфейс ppp0 (L2TP-туннель) ещё с одним IP адресом на самом интерфейсе, который мы назовём условно ZZZ.ZZZ.ZZZ.ZZZ и адресом удалённой стороны (PPP — это соединение точка-точка, поэтому адресов только два и связь установлена только между ними). На этом же этапе появляется ещё один IP-адрес, который имеет для нас важное значение — это адрес L2TP-сервера, который выполняет роль сервера авторизации. Этот адрес можно получить только посмотрев аргументы процесса pppd, что и делается в приведённом мной скрипте командой:
ps ax|grep pppd|grep l2tp|sed -e 's/.*remotenumber //' -e 's/ .*//'
route add -host YYY.YYY.YYY.YYY gw XXX.XXX.XXX.XXX
route add -host 213.234.192.8 gw XXX.XXX.XXX.XXX route add -host 85.21.192.3 gw XXX.XXX.XXX.XXX
route add -host ZZZ.ZZZ.ZZZ.ZZZ gw XXX.XXX.XXX.XXX
route del default route add default dev ppp0

Вот собственно и всё. Теперь в самой системе шлюзом по умолчанию стал адрес удалённой стороны L2TP-туннеля. При этом, благодаря прописанным ранее маршрутам, мы сохраняем связь с сервером авторизации L2TP и DNS-серверами Beeline через бывший шлюз (default router) интерфейса eth1.

И в заключении привожу мой скрипт поднятия всего этого, который я вызываю в /etc/rc.local, а затем каждую минуту через cron на случай, если что-то случится с туннелем и он рухнет. Тогда скрипт выполнет его автоподнятие. К сожалению, обнаружилось, что это происходит не всегда, например, когда у нас в подъезде пропало электричество, а у меня компьютер на UPS, то для того, чтобы снова всё заработало, требуется перезагрузить компьютер.

Скрипт написан на bash, и довольно подробно ещё раз прокомментирован внутри.

#!/bin/bash DEFROUTER_DEV=`/sbin/route -n | awk '/^0.0.0.0/ '` if [ "$DEFROUTER_DEV" == "ppp0" ] then # Уже всё поднято exit fi # Получаем текущий default router DEFROUTER=`/sbin/route -n | awk '/^0.0.0.0/ '` # Получаем текущий адрес L2TP туннеля L2TP_POINT=`/sbin/route -n | awk '/ppp0/ '` # Получаем текущий адрес tp.internet.beeline.ru (L2TP-сервера на который мы зацепились) L2TP_SERVER=`ps ax|grep pppd|grep l2tp|sed -e 's/.*remotenumber //' -e 's/ .*//'` if [ "$L2TP_SERVER" == "" ] then # Не поднялся pppd, может проблема с сетью exit fi # Добавляем маршрут до L2TP-сервера. Он понадобится при замене default router'а. # Если снести default router без этого машрута всё рухнет, ибо станет недоступным # L2TP-сервер route add -host $L2TP_SERVER gw $DEFROUTER # Также добавляем статические маршруты до DNS-серверов route add -host 213.234.192.8 gw $DEFROUTER route add -host 85.21.192.3 gw $DEFROUTER # Теперь ещё говорим, что мы идём к нашей точки L2TP-туннеля через адрес полученный по DHCP route add -host $L2TP_POINT gw $DEFROUTER # Заменяем default router на адрес ppp0 интерфейса route del default route add default dev ppp0

2.4. И на закуску

Вы можете обнаружить, что часть сайтов у вас открывается, а часть нет. Проблема как всегда в MTU, который может быть разным у разных провайдеров. В этом случае, вам почти наверняка поможет добавление в /etc/sysconfig/iptables правила:

-I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

Благодарности

И наконец, выражаю мою благодарность автору вот этого документа, штудирование которого и позволило мне в итоге добиться результата

Источник

Оцените статью
Adblock
detector