我有一台Ubuntu PC,带有两个网卡,充当路由器.一个卡eth0连接到互联网,其他eth1连接到LAN.
我想将LAN中不同主机的ssh端口暴露给外部世界的不同端口号.即
“ssh user @ router -p 1234”应该转到host1的ssh端口,“ssh user @ router -p 3456”应该转到host2.
我为host1添加了以下iptable规则,但它不起作用:
我想将LAN中不同主机的ssh端口暴露给外部世界的不同端口号.即
“ssh user @ router -p 1234”应该转到host1的ssh端口,“ssh user @ router -p 3456”应该转到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,RELATED -j DNAT --to-destination 10.9.0.2:22
EXTIF是外部接口(eth0),
INTIF是内部接口(eth1),
EXTIP是eth0的IP地址.
有帮助吗?
(不确定问题是否清楚,如果有人理解我的意图,请用正确的行话编辑)
FORWARD链的规则需要使用目标端口,因为它在预先路由链之后执行,即在DNAT完成之后执行.
iptables -A FORWARD -i $EXTIF -o $INTIF -p tcp --dport 22 -m conntrack --ctstate NEW,RELATED -j ACCEPT
各种表和链如何链接在一起的良好概述图如下:
http://www.csie.ntu.edu.tw/~b92035/cnl/hw1/Iptables.gif