LINUX.ORG.RU

Сообщения d7c9

 

Маршрутизатор на Debian 13 с PPPoE: проблема с прохождением пакетов

 , ,

Доброго времени суток, коллеги. Недавно понадобился маршрутизатор с несколькими WAN-портами для подключения нескольких провайдеров. Лежала без дела материнка с 6 слотами pcie и я решил поставить в нее несколько сетевух и сделать маршрутизатор на Linux, выбрал Debian 13. Да, я знаю, что есть pfSense, OpenWRT, я слышал что можно на DD-WRT LAN-порт сделать WAN, и т.п., я не отвергаю эти решения, но мне стало интересно реализовать эту задачу на обычном linux.

Подключение к провайдеру через PPPoE. Настроил PPPoE через pppoeconf, простейшие правила NAT с помощью NFTables и стал тестить. PPPoE подключается, NAT работает, но: с некоторыми ресурсами не получается установить соединение через https: долго висит, потом err_timed_out. При этом через старый D-Link DIR-825 c DD-WRT (v3.0-r44715 std (11/03/20)) эти же ресурсы нормально работают. Такое ощущение, что не проходят некоторые пакеты. Проверил MTU - на DD-WRT и на Debian установлен 1492. Пробовал установить на Debian все настройки PPPoE-соединения как на DD-WRT - не помогло. Если сделать curl -v -ssl https://example.ru, то на компе, находящимся за NAT, все останавливается на

C:\Users\1>curl -v -ssl https://example.ru
* Rebuilt URL to: https://example.ru/
*   Trying xxx.xxx.xxx.xxx...
* TCP_NODELAY set
* Connected to example.ru (ххх.ххx.ххх.ххх) port 443 (#0)
* schannel: SSL/TLS connection with example.ru port 443 (step 1/3)
* schannel: checking server certificate revocation
* schannel: sending initial handshake data: sending 183 bytes...
* schannel: sent initial handshake data: sent 183 bytes
* schannel: SSL/TLS connection with example.ru port 443 (step 2/3)
* schannel: failed to receive handshake, need more data

и висит так долго, пока не оборвешь ctrl+c.

А если сделать то же самое на Debian, то соединение нормально устанавливается.

Настройки Debian: cat /etc/network/interfaces:

source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback

#локалка
auto enp6s0
iface enp6s0 inet static
address 192.168.10.2
netmask 255.255.255.0

#сетевуха для PPPoE
auto enp5s0
iface enp5s0 inet manual

#PPPoE к провайдеру
auto dsl-provider
iface dsl-provider inet ppp
pre-up /bin/ip link set enp5s0 up # line maintained by pppoeconf
provider dsl-provider

Cat /etc/ppp/peers/dsl-provider:

unit 0
holdoff 10
noipdefault
defaultroute
replacedefaultroute
hide-password
noauth
persist
mtu 1492
mru 1492
plugin rp-pppoe.so
nic-enp5s0
user "xxxxxxx"
usepeerdns
noccp
#nomppc
noaccomp
nobsdcomp
nodeflate
nopcomp
nomppe
default-asyncmap
lcp-echo-interval 3
lcp-echo-failure 20
lcp-echo-adaptive

ip a:

enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 50:3d:d1:b0:cc:a1 brd ff:ff:ff:ff:ff:ff
    altname enx503dd1b0cca1
    inet6 fe80::523d:d1ff:feb0:cca1/64 scope link proto kernel_ll
       valid_lft forever preferred_lft forever

enp6s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether d0:50:99:9d:3d:db brd ff:ff:ff:ff:ff:ff
    altname enxd050999d3ddb
    inet 192.168.10.2/24 brd 192.168.10.255 scope global enp6s0
       valid_lft forever preferred_lft forever
    inet6 fe80::d250:99ff:fe9d:3ddb/64 scope link proto kernel_ll
       valid_lft forever preferred_lft forever

ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc fq_codel state UNKNOWN group default qlen 3
    link/ppp
    inet ххх.хх.ххх.ххх peer ххх.хх.ххх.х/32 scope global ppp0
       valid_lft forever preferred_lft forever

sudo nft list ruleset

        chain input {
                type filter hook input priority filter; policy drop;
                iif "lo" accept
                ct state established,related accept
                udp dport 1194 accept
                iif "enp6s0" accept
        }

        chain forward {
                type filter hook forward priority filter; policy drop;
                ct state established,related accept
                iif "enp6s0" oifname "ppp0" accept
                tcp flags syn tcp option maxseg size set 1452
        }
}
table ip nat {
        chain postrouting {
                type nat hook postrouting priority srcnat; policy accept;
                iif "enp6s0" oifname "ppp0" masquerade   
        }
}

Настройки DD-WRT:

cat /tmp/ppp/options.pppoe

plugin /usr/lib/rp-pppoe.so
nic-eth1
noccp
nomppc
noipdefault
noauth
defaultroute
noaccomp
nobsdcomp
nodeflate
nopcomp
nomppe
usepeerdns
user '********'
password '**********'
default-asyncmap
mtu 1492
mru 1492
persist
lcp-echo-interval 3
lcp-echo-failure 20
lcp-echo-adaptive

ip a

lo: <LOOPBACK,MULTICAST,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP qlen 1000
    link/ether b8:a3:86:50:c1:95 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether b8:a3:86:50:c1:96 brd ff:ff:ff:ff:ff:ff
44: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
    link/ether b8:a3:86:50:c1:95 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.1/24 brd 192.168.10.255 scope global br0
       valid_lft forever preferred_lft forever
45: ath0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UP
    link/ether b8:a3:86:50:c1:95 brd ff:ff:ff:ff:ff:ff
46: ath1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UP
    link/ether b8:a3:86:50:c1:96 brd ff:ff:ff:ff:ff:ff
47: ppp0: <POINTOPOINT,MULTICAST,UP,LOWER_UP> mtu 1492 qdisc pfifo_fast state UNKNOWN qlen 3
    link/ppp
    inet ххх.хх.ххх.ххх peer хх.хх.ххх.х/32 brd ххх.хх.ххх.ххх scope global ppp0
       valid_lft forever preferred_lft forever

Подскажите пожалуйста, в каком направлении искать решение.

d7c9
()

RSS подписка на новые темы