公司有一个路由器R(linux 的操作系统),内网ip为192.168.1.1
内网一http服务器ip为192.168.1.244
内网一clien的ip为192.168.1.123
想要将
内网client访问R的8080端口的请求映射到http服务器的80端口上,如何实现?
-
首先,设置映射规则。
-
iptables -t nat -A PREROUTING -d 192.168.1.1/32 -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.244:80
-
其次因为在同一网段内,http服务器将不通过路由器R,直接将包返回给client,而client发现此包的源地址(http服务器的ip)与自己所请求的地址(R的ip)不同,则会将其drop,所以我们要做一个SNAT,将之前转发的包的源地址改写为路由器R的ip。
-
iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.244 --dport 80 -j SNAT --to-source 192.168.1.1
-
最后,非常重要的一点,打开路由器R的forward功能
-
echo 1 >/proc/sys/net/ipv4/ip_forward
至此,该功能已经得以实现。
若希望如果在R上访问本机的8080端口,同样可以映射至http服务器的80端口,则还需要加上一条规则。
-
iptables -t nat -A OUTPUT -d 192.168.1.1 -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.244:80
阅读(576) | 评论(0) | 转发(0) |