你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Linux/Windows下实现端口映射

[复制链接]
gaosmile 发布时间:2020-11-19 21:43
通常服务器会有许多块网卡,因此也可能会连接到不同的网络,在隔离的网络中,某些服务可能会需要进行通信,此时服务器经过配置就可以承担起了转发数据包的功能。
一、Windows下实现端口映射
1.  查询端口映射情况

  • netsh interface portproxy show v4tov4

2. 查询某一个IP的所有端口映射情况

  1. netsh interface portproxy show v4tov4 | find "[IP]"
  2. 例:
  3. netsh interface portproxy show v4tov4 | find "192.168.1.1"
复制代码

3. 增加一个端口映射

  1. netsh interface portproxy add v4tov4 listenaddress=[外网IP] listenport=[外网端口] connectaddress=[内网IP] connectport=[内网端口]
  2. 例:
  3. netsh interface portproxy add v4tov4 listenaddress=2.2.2.2 listenport=8080 connectaddress=192.168.1.50 connectport=80
复制代码

4. 删除一个端口映射

  1. netsh interface portproxy delete v4tov4 listenaddress=[外网IP] listenport=[外网端口]
  2. 例:
  3. netsh interface portproxy delete v4tov4 listenaddress=2.2.2.2 listenport=8080
复制代码

二、Linux下端口映射
1. 允许数据包转发

  1. echo 1 >/proc/sys/net/ipv4/ip_forward
  2. iptables -t nat -A POSTROUTING -j MASQUERADE
  3. iptables -A FORWARD -i [内网网卡名称] -j ACCEPT
  4. iptables -t nat -A POSTROUTING -s [内网网段] -o [外网网卡名称] -j MASQUERADE

  5. 例:
  6. echo 1 >/proc/sys/net/ipv4/ip_forward
  7. iptables -t nat -A POSTROUTING -j MASQUERADE
  8. iptables -A FORWARD -i ens33 -j ACCEPT
  9. iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o ens37 -j MASQUERADE
复制代码

2. 设置端口映射

  1. iptables -t nat -A PREROUTING -p tcp -m tcp --dport [外网端口] -j DNAT --to-destination [内网地址]:[内网端口]
  2. 例:
  3. iptables -t nat -A PREROUTING -p tcp -m tcp --dport 6080 -j DNAT --to-destination 10.0.0.100:6090
复制代码

实验:将部署在内网的服务映射到外网
实验环境
  • VMWare Workstation Pro
  • 5台最小化安装的centos 7虚拟机


实验拓扑
微信图片_20201119214039.png
内网外网是相对Server4来说的。
Server1和Server2为内网环境的两台服务器;
Server3为外网环境下的一台服务器;
Server4为一台双网卡主机,分别连接192.168.50.0/24和172.16.2.0/24两个网络。

配置实验环境
1. Server1,2,3上搭建HTTP服务
用Python在Server1上搭建一个简单的HTTP服务

  1. cd ~
  2. echo "server1" > index.html
  3. python -m SimpleHTTPServer 8080
复制代码


微信图片_20201119214043.png
Server2、Server3同理

对照实验
在client上访问Server1的资源


微信图片_20201119214046.png
在client上访问Server2的资源


微信图片_20201119214049.png
在client上访问Server3的资源


微信图片_20201119214052.png
可以看到,外网的client是无法访问内网Server1,Server2的资源的。

Server4上配置端口映射

临时配置

  1. #允许数据包转发
  2. echo 1 >/proc/sys/net/ipv4/ip_forward
  3. iptables -t nat -A POSTROUTING -j MASQUERADE
  4. iptables -A FORWARD -i ens33 -j ACCEPT
  5. iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o ens37 -j MASQUERADE
  6. #设置端口映射
  7. iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8081 -j DNAT --to-destination 192.168.50.11:8080
  8. iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8082 -j DNAT --to-destination 192.168.50.12:8080
复制代码

永久配置
如果需要永久配置,则将以上命令追加到/etc/rc.local文件。
检查效果
在client上访问Server1的资源


微信图片_20201119214055.png
在client上访问Server2的资源



微信图片_20201119214058.png
在client上访问Server3的资源


微信图片_20201119214102.png

如果Server4为Windows,替换一下相应的命令即可

Windows的IP信息如下
[td]
网卡
IP地址
子网掩码
默认网关
备注
Ethernet0
192.168.50.105
255.255.255.0
-
内网网卡
Ethernet1
172.16.2.105
255.255.255.0
-
外网网卡

微信图片_20201119214105.png
配置并查看端口映射情况

  1. netsh interface portproxy add v4tov4 listenaddress=172.16.2.105 listenport=8081 connectaddress=192.168.50.11 connectport=8080
  2. netsh interface portproxy add v4tov4 listenaddress=172.16.2.105 listenport=8082 connectaddress=192.168.50.12 connectport=8080
  3. netsh interface portproxy show v4tov4
复制代码

微信图片_20201119214108.png
检查效果
在client节点上

  1. curl http://172.16.2.105:8081/index.html
  2. curl http://172.16.2.105:8082/index.html
  3. curl http://172.16.2.11:8080/index.html
复制代码

微信图片_20201119214111.png

收藏 评论0 发布时间:2020-11-19 21:43

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版