我使用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,但我没有得到答案。 有人能指出我,我的错误在哪里?
提前谢谢 马可答案 0 :(得分:0)
除非服务器(192.168.8.2)知道如何返回到LAN上的计算机(必须检查路由以查找从该服务器返回的流量),否则您必须添加 -t nat POSTROUTING 对路由器进行规则,使其看起来像从路由器出来的流量(我猜这可以从192.168.8.2访问)。当服务器响应时,流量将能够返回路由器,路由器将负责 unNATing 。