LINUX.ORG.RU
ФорумAdmin

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

 , ,


0

2

Во-первых, c сайта beeline :

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

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

  • /etc/xl2tpd/xl2tpd.conf
    [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]
    
  • /etc/ppp/options.xl2tpd
    unit 0
    remotename beeline
    mru 1460
    mtu 1460
    noaccomp
    nopcomp
    novj
    novjccomp
    nobsdcomp
    nodeflate
    noipx
    nomp
    defaultroute
    name login
    
  • /etc/ppp/chap-secrets
    # 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
В-четвертых, после запуска xl2tpd имею:
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.

Вопросы:

  • Где искать лог xl2tpd?
  • Чяднт?

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

/etc/ppp/ip-up.d/beeline

#!/bin/bash
echo "Starting...."
#get default gw ip
BEELINEGWIP=`route -n | grep 'UG[ \t]' | awk '{print $2}' | 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 '{print $4}' | 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 ${IP1}.0/23 via $BEELINEGWIP
fi
if [ "$IP2" != "" ]; then
 ip route add ${IP2}.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 ()
Последнее исправление: olegkrutov (всего исправлений: 2)
Ответ на: комментарий от olegkrutov

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

Прошу подробностей!

  • Скрипт /etc/ppp/ip-up выполняется при старте pppd?
  • Он запускает остальные, из /etc/ppp/ip-up.d/?
  • Ваш /etc/ppp/ip-up.d/beeline нужен, чтобы трафик шел через локальный шлюз ppp0?
  • Шлюз ppp0 нужен, чтобы передать посредством xl2tpd данные для аутентификации?
  • Кто и когда запускает xl2tpd?
n0name_anonymous ()
Ответ на: комментарий от n0name_anonymous
  1. насколько я помню, pppd при соединении выполняет всё по порядку из /etc/ppp/ip-up.d
  2. угу
  3. тут настраивается роутинг и iptables (адрес белый, а всякие сервисы смотрят наружу), также важная строка –clamp-mss-to-pmtu, без нее пакеты будут пропадать частенько
  4. ppp0 – это в общем и есть ваш шлюз в инет по умолчанию
  5. если это автоматика – то запускается через SysV или systemd сервис, если нет – ручками

То есть принцип:запускаем xl2tpd, он запускает pppd при удачной аутентификации, тот выполняет /etc/ppp/ip-up, тот – скрипты из /etc/ppp/ip-up.d, и при правильной настройке инет бегает через туннель ppp0

Когда туннель прибивается, выполняется /etc/ppp/ip-down и что есть в /etc/ppp/ip-down.d, это важно для возвращения роутинга в исходное.

olegkrutov ()
Последнее исправление: olegkrutov (всего исправлений: 2)

Помню, в 2014-ом году был у меня Билайн через L2TP. Затык был в том, что DHCP выдавал нужные маршруты через option номер_не_помню. Виндой и роутерами помнимается, а Linux из коробки - нет. Просто добавлял маршруты «руками».

anonymous ()
Ответ на: комментарий от anonymous

Да, я тоже помню что на ubuntu 14.04 добавлял кастомные костыли в скрипты dhcp. Причём на 16.04 они уже не работали, так что плюнул и перешёл на OpenWRT где похоже все костыли в комплекте, и оно просто коннектится.

manntes-live ★★ ()