Linux 或 Windows 上实现端口映射

通常服务器会有许多块,因此也可能会连接到不同的,在隔离的网络中,某些服务可能会需要进行通信,此时服务器经过配置就可以承担起了转发数据包的功能。

一、Windows 下实现映射

1. 查询端口映射情况

netshinterfaceportproxyshowv4tov4

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

netshinterfaceportproxyshowv4tov4|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=80

4. 删除一个端口映射

netshinterfaceportproxydeletev4tov4listenaddress=[外网IP]listenport=[外网端口]
例:
netshinterfaceportproxydeletev4tov4listenaddress=2.2.2.2listenport=8080

二、Linux 下端口映射

1. 允许数据包转发

echo1>//sys/net//ip_forward
-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

2. 设置端口映射

iptables-tnat-APREROUTING-ptcp-mtcp--dport[外网端口]-jDNAT--to-destination[内网地址]:[内网端口]
例:
iptables-tnat-APREROUTING-ptcp-mtcp--dport6080-jDNAT--to-destination10.0.0.100:6090

实验:将部署在内网的服务映射到外网

实验环境

  1. VMWare Workstation Pro
  2. 5 台最小化安装的 centos 7

实验拓扑

Linux 或 Windows 上实现端口映射

内网外网是相对Server4来说的。
Server1Server2为内网环境的两台服务器;
Server3为外网环境下的一台服务器;
Server4为一台双网卡主机,分别连接192.168.50.0/24172.16.2.0/24两个网络。

配置实验环境

1. Server1,2,3 上搭建 HTTP 服务

用 Python 在Server1上搭建一个简单的 HTTP 服务

cd~
"server1">index.html
python-mSimpleHTTPServer8080
Linux 或 Windows 上实现端口映射

Server2、Server3同理

对照实验

client上访问Server1的资源

curlhttp://192.168.50.11:8080/index.html
Linux 或 Windows 上实现端口映射

client上访问Server2的资源

curlhttp://192.168.50.12:8080/index.htm
Linux 或 Windows 上实现端口映射

client上访问Server3的资源

curlhttp://172.16.2.11:8080/index.html
Linux 或 Windows 上实现端口映射

可以看到,外网的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
Linux 或 Windows 上实现端口映射

client上访问Server3的资源

curlhttp://172.16.2.11:8080/index.html
Linux 或 Windows 上实现端口映射

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

Windows 的 IP 信息如下

网卡 IP 地址 子网掩码 默认网关 备注
Ethernet0 192.168.50.105 255.255.255.0 内网网卡
Ethernet1 172.16.2.105 255.255.255.0 外网网卡
Linux 或 Windows 上实现端口映射

配置并查看端口映射情况

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 或 Windows 上实现端口映射

链接:https://www.cnblogs.com/connect/p/server-port-proxy.html

给TA打赏
共{{data.count}}人
人已打赏
运维笔记

顶级公司Netflix是如何做监控的?

2023-10-10 18:33:12

运维笔记

Docker容器超全详解,别再说不会用Docker了!

2023-10-10 18:33:18

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索