Столкнулся с очередным глюком, причём я почти уверен, что это именно глюк, т.к. работало раньше в этой же самой конфигурации. Суть: хочу с роутера пробросить на внутренний VPN-сервер входящие PPTP-соединения с использованием DNAT и SNAT. SNAT обязателен, т.к. для VPN-сервера этот роутер не всегда является шлюзом (он резервный), поэтому соединения на VPN должны приходить как-бы от внутреннего адреса роутера. Правила просты как по учебнику (GRE я опускаю, т.к. до него дело не доходит вообще):
iptables -t nat -A PREROUTING -i enp3s0 -p tcp --dport 1723 -j DNAT --to 192.168.1.1
iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.1 --dport 1723 -j SNAT --to-source 192.168.1.52
Так вот, пакеты благополучно приходят на внешний enp3s0, и пропадают в никуда, ни на одном интерфейсе больше не ловятся. Трассировка iptables -j TRACE показывает, что последним для пакетов выполняется этот SNAT, после этого глухо. Если убрать SNAT, то пакеты благополучно доходят до VPN, но, естественно, не «возвращаются», т.к. у него шлюз другой.
Вопрос: чо делать?
PS: «Обернул» правило SNAT в два правила -j LOG, одно перед SNAT, другое после. То, что перед SNAT, пишет в лог, то, что после него - не пишет. Т.е. на правиле SNAT пакет тупо пропадает.