LINUX.ORG.RU

Проблема с пакетами через нат (wireguard)

 , , ,


0

1

Приветствую. Есть железяка-роутер с урезанным линуксом. На ней поднят wireguard (интерфейс vpn0). Выход в сеть через wan0. Маскарадинг имеется для всех. Клиенты за роутером 192.168.8.0. Дефолтный 0.0.0.0/0 роут направлен в vpn0, кроме IP сервера, которые направлен в wan0. Также в правилах стоит дроп для форватинга в wan0, но это значения не имеет… не в нем дело. После поднятия интерфейса клиент WG подключается, руки жмут, все ок. При данной конфе iptables на ЛОКАЛЬНО на роутере «трафик ходит как нужно» без проблем и потери пакетов. Коротко о ПРОБЛЕМЕ с клиентами: если ответ содержит более пакета (т.е. приходят несколько пакетов с данными), то клиент за роутером получает только первый, далее отваливается по таймауту. Для примера если открыть страницу сайта очень малого размера (1 строка), то клиент вполне себе отлично его получает и отображает страницу. Как только страница сайта чуть больше одного пакета - получает только первый. Определено через tcpdump на локальной машине (нет возможности его запустить на роутере). Это же подтверждается тем, что http заголовки страницы он все же успешно получает. При этом самом роутере wget получает (vpn0) любого размера без проблем. Очевидно, что проблема с натом на роутере, либо с MTU клиента WG (1360). Пинги и другие мелкие пакеты гуляют без проблем. Некоторое уточнение: конфиг, сервер WG проверен на локальном компе - проблем нет, проблема явно не на стороне сервера. Есть другие конфиги, которые работают ровно при такой же конфе, на этом же роутере, но определить какой из них чем отличается, что этот работает, а этот нет - нет возможности.. примерно 50 на 50. Прикладываю iptables, может кто подскажет что можно подправить. Маршруты думаю смысла нет выкладывать. Спасибо!

[#] wg setconf vpn0 /dev/fd/63
[#] ip route add 80.246.XXX.XXX via 192.168.1.254
[#] ip -4 address add 10.14.0.2/16 dev vpn0
[#] ip link set mtu 1360 up dev vpn0
[#] ip route del default
[#] ip route add default dev vpn0
Chain INPUT (policy ACCEPT 1 packets, 165 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       tcp  --  wan0   *       192.168.1.105        192.168.1.105       
 2343  122K ACCEPT     tcp  --  br0    *       192.168.8.0/24       192.168.8.1          tcpflags: 0x3F/0x02 limit: avg 303/sec burst 5
    1    52 DROP       tcp  --  br0    *       192.168.8.0/24       192.168.8.1          tcpflags: 0x3F/0x02
    2   580 ICMP_INPUT  icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
31500 7425K SERVICE_INPUT  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
10034 1509K FIREWALL_INPUT  all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy ACCEPT 57 packets, 3239 bytes)
 pkts bytes target     prot opt in     out     source               destination         
14303 7702K IPMASKFLT_FORWARD  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
14303 7702K PORTMAP_FORWARD  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
14303 7702K UPNP_FORWARD  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
14303 7702K TRGER_FORWARD  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
14303 7702K DMZ_FORWARD  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
14303 7702K FIREWALL_FORWARD  all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT 985 packets, 289K bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain DMZ_FORWARD (1 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain FIREWALL_FORWARD (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       all  --  *      wan0    0.0.0.0/0            0.0.0.0/0           
12727 7584K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 DROP       all  --  wan0   *       0.0.0.0/0            0.0.0.0/0           

Chain FIREWALL_INPUT (1 references)
 pkts bytes target     prot opt in     out     source               destination         
 8758 1311K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
  994  168K DROP       all  --  wan0   *       0.0.0.0/0            0.0.0.0/0           

Chain ICMP_INPUT (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       icmp --  eth_voip *       0.0.0.0/0            0.0.0.0/0            icmptype 8
    0     0 DROP       icmp --  eth_tr069 *       0.0.0.0/0            0.0.0.0/0            icmptype 8
    1    84 DROP       icmp --  wan0   *       0.0.0.0/0            0.0.0.0/0            icmptype 8
    0     0 ACCEPT     icmp --  wan0   *       0.0.0.0/0            0.0.0.0/0            icmptype 8 limit: avg 4/sec burst 6

Chain IPMASKFLT_FORWARD (1 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain PORTMAP_FORWARD (1 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain SERVICE_INPUT (1 references)
 pkts bytes target     prot opt in     out     source               destination         
21466 5915K ACCEPT     tcp  --  br0    *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80
    0     0 REJECT     tcp  --  wan0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:113 reject-with tcp-reset
    0     0 ACCEPT     udp  --  wan0   *       0.0.0.0/0            0.0.0.0/0            udp dpt:5060
    0     0 ACCEPT     udp  --  wan0   *       0.0.0.0/0            0.0.0.0/0            udp dpts:7070:7079

Chain TRGER_FORWARD (1 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain UPNP_FORWARD (1 references)
 pkts bytes target     prot opt in     out     source               destination         

NAT

Chain PREROUTING (policy ACCEPT 397 packets, 35705 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DNAT       tcp  --  br0    *       0.0.0.0/0            0.0.0.0/0            tcp dpt:53 to:162.252.172.57:53
   14   955 DNAT       udp  --  br0    *       0.0.0.0/0            0.0.0.0/0            udp dpt:53 to:162.252.172.57:53
    0     0 DNAT       icmp --  wan0   *       0.0.0.0/0            192.168.1.105        icmptype 8 to:192.168.1.105
 4078  348K SIP_PREROUTING  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
 4078  348K PORTMAP_PREROUTING  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
 4078  348K UPNP_PREROUTING  all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain INPUT (policy ACCEPT 142 packets, 7384 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 10 packets, 4463 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 17 packets, 5444 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  174  9294 MASQUERADE  all  --  *      vpn0    0.0.0.0/0            0.0.0.0/0           
  145  7887 SNAT       all  --  *      wan0    0.0.0.0/0            0.0.0.0/0            to:192.168.1.105

Chain PORTMAP_PREROUTING (1 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain SIP_PREROUTING (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     udp  --  wan0   *       0.0.0.0/0            0.0.0.0/0            udp dpt:5060
    0     0 ACCEPT     udp  --  wan0   *       0.0.0.0/0            0.0.0.0/0            udp dpts:7070:7079
    0     0 REDIRECT   udp  --  br0    *       0.0.0.0/0            0.0.0.0/0            udp dpt:5060 redir ports 5060

Chain UPNP_PREROUTING (1 references)
 pkts bytes target     prot opt in     out     source               destination         



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

Была такая же проблема, когда я использовал NAT для виртуалок.
Решалось либо уменьшением MTU на клиентах (не wg), либо добавлением на «роутере» правила типа

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

но iptables должен быть с соответствующим патчем. Команду взял из интернета, у меня nftables и там оно по другому

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

Совершенно верно, но там вылезла еще одна проблема с форватингом. Сегодня удалось все решить. Спасибо за mangle, я как раз после первого ответа изучил вопрос поиском по интернету, как раз прописал у себя в mangle.

doko
() автор топика