iptables问题:将端口x转发到networking上不同机器的ssh端口

我有一台Ubuntu PC,带有两块网卡,充当路由器。 一个卡eth0连接到互联网,其他eth1连接到LAN。 我想将局域网中不同主机的ssh端口暴露给不同的端口号。 即“ssh user @ router -p 1234”应该到host1的ssh端口,“ssh user @ router -p 3456”应该到ssh到host2。 我为host1添加了以下iptable规则,但不起作用:

iptables -A FORWARD -i $EXTIF -o $INTIF -p tcp --dport 1234 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A PREROUTING -t nat -p tcp -d $EXTIP --dport 1234 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j DNAT --to-destination 10.9.0.2:22 

EXTIF是外部接口(eth0),INTIF是内部接口(eth1),EXTIP是eth0的IP地址。

任何帮助? (不知道问题是否清楚,如果有人理解我的意图,请用正确的行话编辑)

FORWARD链的规则需要使用目标端口,因为它是在prerouting链之后,即在DNAT完成之后执行的。

  iptables -A FORWARD -i $ EXTIF -o $ INTIF -p tcp -dport 22 -m conntrack -ctstate新build,相关-j接受

各种表和链如何链接在一起的一个很好的总览图在这里: http : //www.csie.ntu.edu.tw/~b92035/cnl/hw1/Iptables.gif

你有没有启用IP转发 ?