对于linux下的端口映射问题多出现在使用linux做为网关路由,用来连接ISP使用时并把公司的内网IP地址NAT成ISP提供的IP。保证内网所有主机可以共享一个公网IP来访问internet。但这样做的同时也会带来一个问题就是我们无法在办公室以后的网络中访问或管理我们内网的服务器。要解决这个问题就要在linux网关服务器上将ISP提供的IP的相关端口通过DNAT方式映射到我们内网服务器的开放端口上,即可实现在外网管理内网服务器。

情景1.公网为223.71.x.x,内网IP为172.17.17.115,管理端口为TCP 81.解决方法如下。

iptables -t nat -A  PREROUTING -d 223.71.X.X/32 -p tcp --dport 81 -j DNAT --to-destination 172.17.17.115:81

TCP端口映射时要在IP后加上相应端口号,但UDP映射时不需要这样。


情景2.公网IP223.71.x.x 内网IP为172.16.2.253,管理端口为UDP 1701。解决方法如下

iptables -t nat -A  PREROUTING -d 223.71.x.x/32 -p udp --dport 1701 -j DNAT --to-destination 172.16.2.253


情景3.这是一个特别的应用就是做DNS的劫持,把内网用户接口eth1.616的DNS请求全部DNAT到114.114.114.114.方法如下。


iptables -t nat -A  PREROUTING -i eth1.616 -p udp --dport 53 -j DNAT --to-destination 114.114.114.114