我想将我的数据包从端口 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 输出是:
答案1
要添加 NAT 规则,您需要在 NAT 表中执行此操作;在 iptables 命令行中添加“-t nat”。此外,您只能在 INPUT NAT 链(不是 OUTPUT)和入站接口(-i,不是 -o)上执行 SNAT。显然,您必须将哪个接口更改为数据包到达的接口,而不是数据包离开的接口
答案2
该目标只有在nat表的链SNAT
中才有意义。POSTROUTING
您的规则的有效版本是:
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