Не получается поднять NAT
Пилю себе тихо-мирно NAT для выхода в интернет через сторонний узел в сети Tinc VPN.
Для клиента написал несколько правил для iptables, которые маркируют пакеты для VPN,
после отсылаю их на сервер правилом для iproute. Судя по wireshark, тут проблем нет.
Однако, связи нет: не приходят ответы.
Конфигурация на сервере выглядит примерно так:
iptables -I FORWARD -i $INTERFACE -o eth0 -j ACCEPT
iptables -I FORWARD -i eth0 -o $INTERFACE -j ACCEPT
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
$INTERFACE — будет заменено на имя vpn-интерфейса.
Судя по дампу с eth0 сервера (1.2.3.4) обмен c лором выглядит так:
151 15.613006 1.2.3.4 178.248.233.6 TCP 74 43504→80 [SYN] Seq=0 Win=19200 Len=0 MSS=960 SACK_PERM=1 TSval=24783014 TSecr=0 WS=128
154 15.753552 178.248.233.6 1.2.3.4 TCP 74 80→43504 [SYN, ACK] Seq=0 Ack=1 Win=5792 Len=0 MSS=960 SACK_PERM=1 TSval=1903969879 TSecr=24783014 WS=512
161 16.611843 1.2.3.4 178.248.233.6 TCP 74 [TCP Spurious Retransmission] 43504→80 [SYN] Seq=0 Win=19200 Len=0 MSS=960 SACK_PERM=1 TSval=24783264 TSecr=0 WS=128
162 16.752465 178.248.233.6 1.2.3.4 TCP 74 [TCP Retransmission] 80→43504 [SYN, ACK] Seq=0 Ack=1 Win=5792 Len=0 MSS=960 SACK_PERM=1 TSval=1903970903 TSecr=24783264 WS=512
185 18.616522 1.2.3.4 178.248.233.6 TCP 74 [TCP Spurious Retransmission] 43504→80 [SYN] Seq=0 Win=19200 Len=0 MSS=960 SACK_PERM=1 TSval=24783765 TSecr=0 WS=128
186 18.757059 178.248.233.6 1.2.3.4 TCP 74 [TCP Retransmission] 80→43504 [SYN, ACK] Seq=0 Ack=1 Win=5792 Len=0 MSS=960 SACK_PERM=1 TSval=1903972887 TSecr=24783765 WS=512
...
И дальше они так и продолжают играть в пинг-понг
Адрес источника перезаписан, следовательно маскарад работает.
Связь непосредственно клиента с сервером через VPN-канал не прерывается, но ответов по установленным соединениям через сервер нет.
Гугл подсказывает, что проблема может быть в MTU. MTU VPN равен 1360. Остальные интерфейсы участников по 1500.
Пробовал на сервере iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1300:9000 -j TCPMSS -o eth0 --set-mss 1000
Без положительного результата.
Куда копать? В чём может быть причина?