Я хочу изменить свой datapackage от порта 25 к другому внутреннему адресу (192.168.2.253).
iptables -A OUTPUT -o em1 -p tcp --dport 25 -j SNAT --to 192.168.2.253
Но я добираюсь, вывод:
root@gateway:~# iptables -A OUTPUT -o em1 -p tcp --dport 25 -j SNAT --to 192.168.2.253
iptables: Invalid argument. Run `dmesg' for more information.
как сделать это правильно?
Вывод dmesg:
Чтобы добавить правило NAT, вам нужно сделать это в таблице NAT; добавьте "-t nat" в командную строку iptables. Кроме того, вы можете выполнять SNAT только в цепочке INPUT NAT (не OUTPUT) и на входящем интерфейсе (-i, а не -o). Очевидно, вам придется изменить, какой именно интерфейс, на тот, куда приходит пакет, а не на тот, через который он уходит
Цель SNAT
имеет смысл только в цепочке POSTROUTING
таблицы nat.
Допустимая версия вашего правила:
iptables -t nat -A POSTROUTING -o em1 -p tcp --dport 25 -j SNAT --to-source 192.168.2.253
Кстати, если ваш (выходной) интерфейс содержит IP 192.168.2.253
, то лучше используйте:
iptables -t nat -A POSTROUTING -o em1 -p tcp --dport 25 -j MASQUERADE