在较大的防火墙中,以下两行允许我从互联网连接到在 LAN 主机 172.27.255.4 上运行并侦听端口 1046 和 22 的 SSH 服务器:
iptables -t nat -A PREROUTING -i ppp0 -p tcp -d aaa.bbb.ccc.ddd --dport 1046 -j DNAT --to-destination 172.27.255.4:1046
iptables -t filter -A FORWARD -p tcp -i ppp0 -d 172.27.255.4 --dport 1046 -j ACCEPT
地址aaa.bbb.ccc.ddd为防火墙的IPV4公网地址。使用端口 1046 连接到 SSH 服务器可以正常工作。
我现在想做的是停止 SSH 服务器侦听端口 1046,但从互联网连接时仍然使用端口 1046。只需将上面代码的第一行更改为
iptables -t nat -A PREROUTING -i ppp0 -p tcp -d aaa.bbb.ccc.ddd --dport 1046 -j DNAT --to-destination 172.27.255.4:1046
到
iptables -t nat -A PREROUTING -i ppp0 -p tcp -d aaa.bbb.ccc.ddd --dport 1046 -j DNAT --to-destination 172.27.255.4:22
剂量不起作用。
我在这里缺少什么?
这完成了工作:
iptables -t nat -A PREROUTING -d aaa.bbb.ccc.ddd -p tcp --dport 1046 -j DNAT --to-destination 172.27.255.4:22
iptables -t filter -A FORWARD -p tcp -d 172.27.255.4 --dport 22 -j ACCEPT
第一条规则在数据包被路由之前更改其目的地。第二条规则路由(在本例中为转发)具有新的所需目的地的数据包。