iptables端口向前转发

时间:2017-03-24 14:43:19

标签: linux networking iptables portforwarding

我使用linux路由器通过PPPoE访问互联网。此框有两个接口:eth0用于内部LAN,eth1用于在PPPoE-Modem上建立ppp0接口。对于防火墙和端口转发,我使用iptables与nat。 这可以预期:我可以从局域网进入互联网,我可以通过端口转发从外部访问局域网中的某些服务:

  iptables -t nat -A PREROUTING -p tcp --dport 9999 -DNAT --to 192.168.2.10:22

(作为从外部访问局域网内某台机器的ssh-port的示例)
但是我想从LAN内部访问WAN-Port eth1上的一台机器(192.168.8.2): 因此,eth1配置为: ip addr add 192.168.8.1 dev eth1

所以我可以从路由器上的控制台ssh 192.168.8.2。这按预期工作。但我也希望从局域网中的机器上访问它。

  iptables -t nat -A PREROUTING -p tcp --dport 9997 -DNAT --to 192.168.8.2:22

但这不会起作用。我看到来自我的局域网机器的数据包进入eth0并寻址192.168.8.2,但我没有得到答案。 有人能指出我,我的错误在哪里?

提前谢谢 马可

1 个答案:

答案 0 :(得分:0)

除非服务器(192.168.8.2)知道如何返回到LAN上的计算机(必须检查路由以查找从该服务器返回的流量),否则您必须添加 -t nat POSTROUTING 对路由器进行规则,使其看起来像从路由器出来的流量(我猜这可以从192.168.8.2访问)。当服务器响应时,流量将能够返回路由器,路由器将负责 unNATing