Страница 1 из 1

xl2tpd - подключить интернет

Добавлено: 29 окт 2023, 19:49
ya
Firewall и NAT: Убедитесь, что порты для L2TP (UDP 1701), IPsec (UDP 500 и 4500) открыты на всех промежуточных устройствах, включая маршрутизаторы и фаерволы.

Оптимальный размер mru и mtu лучше устанавливать опытным путём, пингом до впн-сервера провайдера:
https://hamy.io/post/000c/how-to-find-the-correct-mtu-and-mru-of-your-link/

/bin/bash

Код: Выделить всё

ping -c 4 -s 1472 -M do 172.18.48.194
cmd

Код: Выделить всё

ping -l 1472 -f 172.18.48.194
Автоматически отрегулирует размер пакета в локальную сетку (при наличии локальной сети)

Код: Выделить всё

iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
Если адрес впн-сервера не входит в диапазон адресов выданных dhcp-сервером провайдера, то нужно до него прописать маршрут

Код: Выделить всё

route add -net 172.18.48.0 netmask 255.255.255.0 gw 10.116.51.1 dev enp1s0
route add -net 172.18.49.0 netmask 255.255.255.0 gw 10.116.51.1 dev enp1s0
На примере beeline:

Интерфейс сетевой карты для интернета: enp1s0
Адрес сетевой карты: 10.116.51.3/24 (выдан провайдером по dhcp)
Основной шлюз: 10.116.51.1
Адрес vpn-сервера провайдера: 172.18.48.194

Прописываем маршруты до провайдерского dns-сервера (это не обязательно) и до провайдерского vpn-сервера (это обязательно):
mcedit /etc/network/if-up.d/beeline_route (имя файла может быть абсолютно любым, главное чтобы этот файл находился в этом каталоге)

Код: Выделить всё

#!/bin/sh
### BEGIN INIT INFO
# Provides:          MyScript
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      1 0 6
# Short-Description: ...
# Description: ...
### END INIT INFO

#/etc/init.d/xl2tpd stop
##############################################################################
# маршрут vpn-серверов билайн

route add -net 172.18.48.0 netmask 255.255.255.0 gw 10.116.51.1 dev enp1s0
route add -net 172.18.49.0 netmask 255.255.255.0 gw 10.116.51.1 dev enp1s0

exit 0

Предпочтительнее, создать демона и использовать Автозагрузка пользовательского демона/скрипта


mcedit /etc/xl2tpd/xl2tpd.conf

Код: Выделить всё

[global]
access control = yes
port = 1701

[lac beeline]
lns = 172.18.48.194 (адрес vpn-сервера провайдера, заменить на свой)
redial = yes
redial timeout = 30
require chap = yes
require authentication = no
name = логин (заменить на свой)
autodial = yes
pppoptfile = /etc/ppp/options.xl2tpd
ppp debug = yes

mcedit /etc/ppp/options.xl2tpd

Код: Выделить всё

unit 0
name логин (заменить на свой)
linkname beeline-l2tp
mru 1460
mtu 1460
remotename beeline
#ipparam beeline
#connect /bin/true
nodeflate
noauth
asyncmap 0
ms-dns 127.0.0.1
nobsdcomp
persist
maxfail 0
nopcomp
noaccomp
refuse-eap
refuse-pap
refuse-mschap
refuse-mschap-v2
debug
lcp-echo-interval 30
lcp-echo-failure 60
defaultroute
replacedefaultroute
lcp-echo-interval и lcp-echo-failure: Эти параметры управляют механикой проверки соединения. Если они установлены слишком агрессивно, это может привести к обрывам. Попробуйте увеличить значение lcp-echo-interval (например, до 30 секунд) и lcp-echo-failure (например, до 60)
На случай если имеется свой днс ms-dns 10.152.2.1
Логин и пароль прописать в файл /etc/ppp/chap-secrets, в данном случае запись beeline - можно делать произвольную, указав её в remotename файла /etc/ppp/options.xl2tpd


mcedit /etc/ppp/chap-secrets

Код: Выделить всё

логин      beeline         пароль  *

Перезапускаем xl2tpd:

systemctl restart xl2tpd

Немного подождать, если интернет подключился, то команда ifconfig покажет ppp-интерфейс в своём списке

За ходом подключения ppp-сетевого интерфейса можно наблюдать в логах командой:

Код: Выделить всё

sudo tail -f /var/log/messages
Проверить стабильность подключения через тот же лог-файл

Код: Выделить всё

sudo less /var/log/messages | grep "Connect time"
после этого можно xl2tpd можно ставить в автозагрузку (если она не стоит в автозагрузке), командой:

systemctl enable xl2tpd

Примечание: на билайне ipv6 является помехой для корректной работы xl2tpd, поэтому ipv6 отключить командой:

Код: Выделить всё

sysctl -w net.ipv6.conf.enp1s0.disable_ipv6=1
https://serverfault.com/questions/524656/openswan-xl2tpd-connections-time-out-after-a-while

Re: xl2tpd - подключить интернет

Добавлено: 29 окт 2023, 21:18
ya
Ещё можно, закрыться файерволом iptables, чтобы с внехи никто не долбился

Посмотреть имеющиеся правила файервола для цепочки filter:

Код: Выделить всё

iptables -nvL
Посмотреть имеющиеся правила файервола для цепочки nat

Код: Выделить всё

iptables -t nat -nvL
Закрываем полностью все входящие соединения, если они в правилах указаны явно

Код: Выделить всё

iptables -P INPUT DROP
Открываем dhcp-порт для получения ип-адреса от провайдера, если не статика

Код: Выделить всё

iptables -A INPUT -i enp1s0 -p udp -m udp --dport 67 -j ACCEPT
Открываем нужным днс-серверам доступ на 53 порт по udp

Код: Выделить всё

iptables -A INPUT -i ppp+ -s 8.8.8.8/32 -p udp -m udp --dport 53 -j ACCEPT
iptables -A INPUT -i ppp+ -s 8.8.4.4/32 -p udp -m udp --dport 53 -j ACCEPT
Открываем доступ для провайдерского vpn на порт 1701 (l2tp) по tcp для интерфейса enp1s0

Код: Выделить всё

sudo iptables -I INPUT 8 -s 172.18.48.0/24 -i enp1s0 -p udp -m udp --dport 1701 -j ACCEPT
Открываем доступ для всех пакетов, которые ранее установили соединение (со статусом RELATED,ESTABLISHED) и не являются повреждёнными (INVALID), и так же не имеют статус нового подключения NEW

Код: Выделить всё

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
Если поднят веб-сервер, то можно открыть доступ с внехи на 80 и/или 443 порт (если установлен ssl-сертификат) по tcp

Код: Выделить всё

iptables -A INPUT -i ppp+ -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -i ppp+ -p tcp -m tcp --dport 443 -j ACCEPT
сохранить в файл настройки файервола
iptables-save > /etc/iptables

восстановить из файла настройки файервола
iptables-restore < /etc/iptables

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Если есть локальная сеть (например 192.168.100.0/24), прокидываем все пакеты с локалки на внеху посредством nat-цепочки файервола на интерфейс интернета ppp, имеющего статичный адрес 212.119.243.135:

Код: Выделить всё

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 ! -d 192.168.0.0/16 -o ppp+ -j SNAT --to-source 212.119.243.135
Подключаем nat к ядру:

Код: Выделить всё

sysctl -w net.ipv4.ip_forward=1
Сохранить значение для переменной net.ipv4.ip_forward = 1 тут: /etc/sysctl.conf

systemctl -P