У меня 2 интерфейса eth0 (192.168.0.1) и eth1 (10.1.1.15). И я так делаю нат для всех пакетов.
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
Теперь я хочу сохранить исходный порт для пакетов natted, например:
192.168.0.1:8080 -> нат -> 10.1.1.15:8080
Можно ли это сделать с помощью iptables?
По умолчанию MASQUERADE (как и SNAT) пытается сохранить исходный порт машины, устанавливающей соединение. Но, конечно, если два хоста используют один и тот же, тогда ему придется выбрать другой для второго хоста.
Вы также можете явно установить диапазон портов для каждого протокола с помощью:
/sbin/iptables -t nat -A POSTROUTING -p tcp -j MASQUERADE --to-ports <i>[-<n>]