Доброго времени суток, коллеги.
Недавно понадобился маршрутизатор с несколькими 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
Подскажите пожалуйста, в каком направлении искать решение.