linux服务器NAT后无法在内网通过外部IP访问内部服务的问题
场景一:
将外网访问192.168.100.10的80端口转发到192.168.75.5:8000端口。 # iptables -t nat -A PREROUTING -d 192.168.100.10 -p tcp --dport 80 -j DNAT --to-destination 192.168.75.5:8000
问题一:
我们将192.168.75.5端口为8080的服务映射至192.168.100.10的端口80上,此时192.168.100.*网段可以正常访问到192.168.75.5:8080服务
但是无法在内网通过外部映射出去的ip和端口进行访问
为了解决这个问题我们理清一下思路,在内网本地访问外网映射出去ip和端口时,这时源地址必然是发生了转换,且流量一定是流经网卡的,
那么我们可以不让他流经网卡,让内核来处理呢
我的思路:将本机出去的流量直接转发到本地的8080不就能解决这个问题吗,由于在网络设备不支持回流的情况下,所以才想了这个方式,经过测试成功解决此问题
将本机访问80端口的转发到本机8080 # iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j DNAT --to 127.0.0.1:8080 # iptables -t nat -A OUTPUT -p tcp -d 192.168.100.10 --dport 80 -j DNAT --to 127.0.0.1:8080
原因:因为NAT后网络回流造成内网无法通过公网IP访问应用服务器,如果服务器是放在dmz区 也就是另一个网段就不会有这个问题