【CentOS】Linux 或 Windows 上实现端口映射
一、什么端口映射?
端口映射:端口映射就是将内网中的主机的一个端口映射到外网主机的一个端口,提供相应的服务。当用户访问外网IP的这个端口时,服务器自动将请求映射到对应局域网内部的机器上。
我们在内网中有一台Web服务器,但是外网中的用户是没有办法直接访问该服务器的。于是我们可以在路由器上设置一个端口映射,只要外网用户访问路由器ip的80端口,那么路由器会把自动把流量转到内网Web服务器的80端口上。并且,在路由器上还存在一个Session,当内网服务器返回数据给路由器时,路由器能准确地将消息发送给外网请求用户的主机。在这过程中,路由器充当了一个反向代理的作用,它保护了内网中主机的安全。
二、Windows 下实现端口映射
1. 查询端口映射情况
netsh interface portproxy show v4tov4
2. 查询某一个 IP 的所有端口映射情况
netsh interface portproxy show v4tov4 | find "[IP]" 例: netsh interface portproxy show v4tov4 | find "192.168.1.1"
3. 增加一个端口映射
netsh interface portproxy add v4tov4 listenaddress=[外网IP] listenport=[外网端口] connectaddress=[内网IP] connectport=[内网端口] 例: netsh interface portproxy add v4tov4 listenaddress=2.2.2.2 listenport=8080 connectaddress=192.168.1.50 connectport=80
4. 删除一个端口映射
netsh interface portproxy delete v4tov4 listenaddress=[外网IP] listenport=[外网端口] 例: netsh interface portproxy delete v4tov4 listenaddress=2.2.2.2 listenport=8080
三、Linux 下端口映射
1. 允许数据包转发
echo 1 >/proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -j MASQUERADE iptables -A FORWARD -i [内网网卡名称] -j ACCEPT iptables -t nat -A POSTROUTING -s [内网网段] -o [外网网卡名称] -j MASQUERADE 例: echo 1 >/proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -j MASQUERADE iptables -A FORWARD -i ens33 -j ACCEPT iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o ens37 -j MASQUERADE
2. 设置端口映射
iptables -t nat -A PREROUTING -p tcp -m tcp --dport [外网端口] -j DNAT --to-destination [内网地址]:[内网端口] 例: iptables -t nat -A PREROUTING -p tcp -m tcp --dport 6080 -j DNAT --to-destination 10.0.0.100:6090
参考文献:https://zhuanlan.zhihu.com/p/661309198
得意时做事,失意时读书