История изменений
Исправление zaz, (текущая версия) :
Для такого случая нужен дополнительный SNAT. Получается ситуация следующая (например 192.168.11.100 - клиент, 192.168.11.1 - роутер)
192.168.11.100 - посылает SYN пакет через роутер (192.168.11.1) на 11.11.11.11
192.168.11.1 делает DNAT и перенаправляет пакет на 192.168.11.142
192.168.11.142 - видит син пакет от 192.168.11.100 и отвечает ACK на 192.168.11.100 (на прямую мимо роутера).
192.168.11.100 - видит ACK от 192.168.11.142 и не знает что с ним делать так как SYN пакетов туда никто не посылал (конектились к 11.11.11.11 а не 192.168.11.142)
Я обычно такие ситуации лечу так:
iptables -A POSTROUTING -t nat -o ${LAN_IF} -s 192.168.0.0/16 -m conntrack --ctorigdst ${WAN_IP} -j SNAT --to-source ${LAN_IP}
Исходная версия zaz, :
Для такого случая нужен дополнительный SNAT. Получается ситуация следующая (например 192.168.11.100 - клиент, 192.168.11.1 - роутер)
192.168.11.100 - посылает SYN пакет через роутер (192.168.11.1) на 11.11.11.11
192.168.11.1 делает DNAT и перенаправляет пакет на 192.168.11.142
192.168.11.142 - видит син пакет от 192.168.11.100 и отвечает ACK на 192.168.11.100 (на прямую мимо роутера).
192.168.11.100 - видит ACK от 192.168.11.142 и не знает что с ним делать так как SYN пакетов туда никто не посылал (конектились к 11.11.11.11 а не 192.168.11.142)