阿里云服务器实例
一、什么端口映射?
端口映射:端口映射就是将内网中的主机的一个端口映射到外网主机的一个端口,提供相应的服务。当用户访问外网IP的这个端口时,服务器自动将请求映射到对应局域网内部的机器上。
我们在内网中有一台Web服务器,但是外网中的用户是没有办法直接访问该服务器的。于是我们可以在路由器上设置一个端口映射,只要外网用户访问路由器ip的80端口,那么路由器会把自动把流量转到内网Web服务器的80端口上。并且,在路由器上还存在一个Session,当内网服务器返回数据给路由器时,路由器能准确地将消息发送给外网请求用户的主机。在这过程中,路由器充当了一个反向代理的作用,它保护了内网中主机的安全。
二、Windows 下实现端口映射
1. 查询端口映射情况
netshinterfaceportproxyshowv4tov42. 查询某一个 IP 的所有端口映射情况
netsh interface portproxyshowv4tov4 | find"[IP]"例: netshinterfaceportproxyshowv4tov4 | find"192.168.1.1"3. 增加一个端口映射
云服务器开通不了
netshinterfaceportproxyaddv4tov4listenaddress=[外网IP] listenport=[外网端口] connectaddress=[内网IP] connectport=[内网端口] 例: netshinterfaceportproxyaddv4tov4listenaddress=2.2.2.2listenport=8080connectaddress=192.168.1.50connectport=804. 删除一个端口映射
netshinterfaceportproxydeletev4tov4listenaddress=[外网IP] listenport=[外网端口] 例: netshinterfaceportproxydeletev4tov4listenaddress=2.2.2.2listenport=8080三、Linux 下端口映射
1. 允许数据包转发
echo1 >/proc/sys/net/ipv4/ip_forwardiptables-t nat -A POSTROUTING -j MASQUERADEiptables-A FORWARD -i [内网网卡名称] -j ACCEPTiptables-t nat -A POSTROUTING -s [内网网段] -o [外网网卡名称] -j MASQUERADE例:echo1 >/proc/sys/net/ipv4/ip_forwardiptables-t nat -A POSTROUTING -j MASQUERADEiptables-A FORWARD -i ens33 -j ACCEPTiptables-t nat -A POSTROUTING -s 192.168.50.0/24 -o ens37 -j MASQUERADE2. 设置端口映射
iptables-tnat-APREROUTING-ptcp-mtcp--dport[外网端口]-jDNAT--to-destination[内网地址]:[内网端口]例:iptables-tnat-APREROUTING-ptcp-mtcp--dport6080-jDNAT--to-destination10.0.0.100:6090实验:将部署在内网的服务映射到外网
实验环境
VMWare Workstation Pro5 台最小化安装的 centos 7 虚拟机实验拓扑
内网和外网是相对Server4来说的。Server1和Server2为内网环境的两台服务器;Server3为外网环境下的一台服务器;Server4为一台双网卡主机,分别连接192.168.50.0/24和172.16.2.0/24两个网络。
配置实验环境
1. Server1,2,3 上搭建 HTTP 服务
用 Python 在Server1上搭建一个简单的 HTTP 服务
cd~echo"server1"> index.html python -m SimpleHTTPServer 8080Server2、Server3同理
对照实验
在client上访问Server1的资源
curl http://192.168.50.11:8080/index.html在client上访问Server2的资源
curl http://192.168.50.12:8080/index.htm在client上访问Server3的资源
curl http://172.16.2.11:8080/index.html可以看到,外网的client是无法访问内网Server1,Server2的资源的。
在Server4上配置端口映射
临时配置
允许数据包转发echo1>/proc/sys/net/ipv4/ip_forwardiptables-tnat-APOSTROUTING-jMASQUERADEiptables-AFORWARD-iens33-jACCEPTiptables-tnat-APOSTROUTING-s192.168.50.0/24-oens37-jMASQUERADE设置端口映射iptables-tnat-APREROUTING-ptcp-mtcp--dport8081-jDNAT--to-destination192.168.50.11:8080iptables-tnat-APREROUTING-ptcp-mtcp--dport8082-jDNAT--to-destination192.168.50.12:8080永久配置
如果需要永久配置,则将以上命令追加到/etc/rc.local文件。
云服务器 关机吗
检查效果
在client上访问 Server1 的资源
curl http://172.16.2.100:8081/index.html在client上访问Server2的资源
curl http://172.16.2.100:8082/index.html在client上访问Server3的资源
curl http://172.16.2.11:8080/index.html如果Server4为 Windows,替换一下相应的命令即可
Windows 的 IP 信息如下
网卡
IP 地址
子网掩码
默认网关
备注
Ethernet0
192.168.50.105
255.255.255.0
-
内网网卡
Ethernet1
172.16.2.105
255.255.255.0
-
外网网卡
配置并查看端口映射情况
netshinterfaceportproxyaddv4tov4listenaddress=172.16.2.105listenport=8081connectaddress=192.168.50.11connectport=8080netshinterfaceportproxyaddv4tov4listenaddress=172.16.2.105listenport=8082connectaddress=192.168.50.12connectport=8080netshinterfaceportproxyshowv4tov4检查效果
在client节点上
curl http://172.16.2.105:8081/index.htmlcurl http://172.16.2.105:8082/index.htmlcurl http://172.16.2.11:8080/index.html链接:https://www.cnblogs.com/connect/p/server-port-proxy.html
(版权归原作者所有,侵删)
泰拉瑞亚云服务器
