一、Windows 下实现端口映射
查询端口映射情况
netshinterfaceportproxyshowv4tov4
查询某一个 IP 的所有端口映射情况
netshinterfaceportproxyshowv4tov4|find"[IP]"
例:
netshinterfaceportproxyshowv4tov4|find"192.168.1.1"
增加一个端口映射
netshinterfaceportproxyaddv4tov4listenaddress=[外网IP]listenport=[外网端口]connectaddress=[内网IP]connectport=[内网端口]
例:
netshinterfaceportproxyaddv4tov4listenaddress=2.2.2.2listenport=8080connectaddress=192.168.1.50connectport=80
删除一个端口映射
netshinterfaceportproxydeletev4tov4listenaddress=[外网IP]listenport=[外网端口]
例:
netshinterfaceportproxydeletev4tov4listenaddress=2.2.2.2listenport=8080
二、Linux 下实现端口映射
允许数据包转发
echo1>/proc/sys/net/ipv4/ip_forward iptables-tnat-APOSTROUTING-jMASQUERADE iptables-AFORWARD-i[内网网卡名称]-jACCEPT iptables-tnat-APOSTROUTING-s[内网网段]-o[外网网卡名称]-jMASQUERADE
例:
echo1>/proc/sys/net/ipv4/ip_forward iptables-tnat-APOSTROUTING-jMASQUERADE iptables-AFORWARD-iens33-jACCEPT iptables-tnat-APOSTROUTING-s192.168.50.0/24-oens37-jMASQUERADE
设置端口映射
iptables-tnat-APREROUTING-ptcp-mtcp--dport[外网端口]-jDNAT--to-destination[内网地址]:[内网端口]
例:
iptables-tnat-APREROUTING-ptcp-mtcp--dport6080-jDNAT--to-destination10.0.0.100:6090
实验:将部署在内网的服务映射到外网
实验环境
VMWare Workstation Pro
5 台最小化安装的 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-mSimpleHTTPServer8080 Server2、Server3同理
对照实验
在client上访问Server1的资源
curlhttp://192.168.50.11:8080/index.html
在client上访问Server2的资源
curlhttp://192.168.50.12:8080/index.html
在client上访问Server3的资源
curlhttp://172.16.2.11:8080/index.html
可以看到,外网的client是无法访问内网Server1,Server2的资源的。
在Server4上配置端口映射
临时配置
#允许数据包转发 echo1>/proc/sys/net/ipv4/ip_forward iptables-tnat-APOSTROUTING-jMASQUERADE iptables-AFORWARD-iens33-jACCEPT iptables-tnat-APOSTROUTING-s192.168.50.0/24-oens37-jMASQUERADE #设置端口映射 iptables-tnat-APREROUTING-ptcp-mtcp--dport8081-jDNAT--to-destination192.168.50.11:8080 iptables-tnat-APREROUTING-ptcp-mtcp--dport8082-jDNAT--to-destination192.168.50.12:8080
永久配置
如果需要永久配置,则将以上命令追加到/etc/rc.local文件。
检查效果
在client上访问Server1的资源
curlhttp://172.16.2.100:8081/index.html
在client上访问Server2的资源
curlhttp://172.16.2.100:8082/index.html
在client上访问Server3的资源
curlhttp://172.16.2.11:8080/index.html
如果Server4为 Windows,替换一下相应的命令即可
Windows 的 IP 信息如下
配置并查看端口映射情况
netshinterfaceportproxyaddv4tov4listenaddress=172.16.2.105listenport=8081connectaddress=192.168.50.11connectport=8080 netshinterfaceportproxyaddv4tov4listenaddress=172.16.2.105listenport=8082connectaddress=192.168.50.12connectport=8080 netshinterfaceportproxyshowv4tov4
检查效果
在client节点上
curlhttp://172.16.2.105:8081/index.html curlhttp://172.16.2.105:8082/index.html curlhttp://172.16.2.11:8080/index.html
审核编辑:汤梓红
-
Linux
+关注
关注
87文章
11294浏览量
209344 -
WINDOWS
+关注
关注
3文章
3541浏览量
88630 -
Server
+关注
关注
0文章
90浏览量
24029 -
端口
+关注
关注
4文章
964浏览量
32052 -
映射
+关注
关注
0文章
47浏览量
15813
原文标题:Linux 或 Windows 上实现端口映射
文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论