Доброго времени, подскажите, что-то я не догоняю немного. В интернете масса статей на эту тему, где все красиво работает чуть ли не одним нажатием кнопки, а у меня не выходит :)
Итак, имеем: Машина с двумя интерфейсами - ens192 внешний ip, пусть будет 8.8.8.8 и ens160 внутренний ip 172.16.8.46. Вторая машина во внутренней сети, eth3 172.16.8.25. Необходимо весь трафик по порту 9091 приходящий на внешний интерфейс первой машины маршрутизировать на вторую на тот же порт, ну и конечно же ответы вернуть в мир.
Что делаю: Через iptables делаю маршрутизацию между интерфейсами первой машины:
$ sudo iptables -A FORWARD -i ens192 -o ens160 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$ sudo iptables -A FORWARD -i ens160 -o ens192 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Далее делаю форвард на вторую машину
$ iptables -t nat -A PREROUTING -d 8.8.8.8 -p tcp -m tcp --dport 9091 -j DNAT --to-destination 172.16.8.25:9091
$ iptables -t nat -A POSTROUTING -s 172.16.8.25 -p tcp -m tcp --dport 9091 -j SNAT --to-source 8.8.8.8
Получаю: стучусь на внешний интерфейс первой машины и вижу (tcpdump) как трафик проходи ens192, уходит на ens160, приходит на eth3 второй машины, но вот ответы назад не идут, а улетают на default gw этой сети 172.16.8.1. Чего не хватает в правилах? Все настройки выполняю на первой машине. На второй что-то нужно выполнять?