首頁 > 運維 > linux運維 > Linux 或 Windows 上實作連接埠映射

Linux 或 Windows 上實作連接埠映射

發布: 2023-08-01 17:03:54
轉載
1037 人瀏覽過

通常伺服器會有許多塊網卡,因此也可能連接到不同的網絡,在隔離的網路中,某些服務可能會需要進行通信,此時伺服器經過設定就可以承擔起了轉送封包的功能。

Linux 或 Windows 上實作連接埠映射

一、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_forwardiptables -t nat -A POSTROUTING -j MASQUERADEiptables -A FORWARD -i [内网网卡名称] -j ACCEPTiptables -t nat -A POSTROUTING -s [内网网段] -o [外网网卡名称] -j MASQUERADE例:echo 1 >/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 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
登入後複製

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

实验环境

  1. VMWare Workstation Pro

  2. 5 台最小化安装的 centos 7 虚拟机

實驗拓樸

Linux 或 Windows 上實作連接埠映射

#內網外網是相對<span style="outline: 0px;font-size: 17px;">Server4</span>來說的。
<span style="outline: 0px;font-size: 17px;">Server1</span><span style="outline: 0px;font-size: 17px;">#Server2</span>為內網環境的兩台伺服器;
<span style="outline: 0px;font-size: 17px;">Server3</span>為外網環境下的一個伺服器;
<span style="outline: 0px;font-size: 17px;">Server4</span>為一台雙網卡主機,分別連接<span style="outline: 0px;font-size: 17px;">#192.168.50.0/24</span><span style="outline: 0px;font-size: 17px;">#172.16.2.0 /24</span>兩個網路。

配置实验环境

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

用 Python 在<span style="outline: 0px;font-size: 17px;">Server1</span>上搭建一个简单的 HTTP 服务

cd ~echo "server1" > index.htmlpython -m SimpleHTTPServer 8080
登入後複製
Linux 或 Windows 上實作連接埠映射

<span style="outline: 0px;font-size: 17px;">Server2、Server3</span>同理

对照实验

<span style="outline: 0px;font-size: 17px;">client</span>上访问<span style="outline: 0px;font-size: 17px;">Server1</span>的资源

curl http://192.168.50.11:8080/index.html
登入後複製
Linux 或 Windows 上實作連接埠映射

<span style="outline: 0px;font-size: 17px;">client</span>上访问<span style="outline: 0px;font-size: 17px;">Server2</span>的资源

curl http://192.168.50.12:8080/index.htm
登入後複製
Linux 或 Windows 上實作連接埠映射

<span style="outline: 0px;font-size: 17px;">client</span>上访问<span style="outline: 0px;font-size: 17px;">Server3</span>的资源

curl http://172.16.2.11:8080/index.html
登入後複製
登入後複製
Linux 或 Windows 上實作連接埠映射

可以看到,外网的<span style="outline: 0px;font-size: 17px;">client</span>是无法访问内网<span style="outline: 0px;font-size: 17px;">Server1</span>,<span style="outline: 0px;font-size: 17px;">Server2</span>的资源的。

<span style="outline: 0px;font-size: 17px;">Server4</span>上配置端口映射

临时配置

#允许数据包转发echo 1 >/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 MASQUERADE#设置端口映射iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8081 -j DNAT --to-destination 192.168.50.11:8080iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8082 -j DNAT --to-destination 192.168.50.12:8080
登入後複製

永久配置

如果需要永久配置,则将以上命令追加到<span style="outline: 0px;font-size: 17px;">/etc/rc.local</span>文件。

检查效果

<span style="outline: 0px;font-size: 17px;">client</span>上访问 Server1 的资源

curl http://172.16.2.100:8081/index.html
登入後複製

<span style="outline: 0px;font-size: 17px;">client</span>上访问<span style="outline: 0px;font-size: 17px;">Server2</span>的资源

curl http://172.16.2.100:8082/index.html
登入後複製
Linux 或 Windows 上實作連接埠映射

<span style="outline: 0px;font-size: 17px;">client</span>上访问<span style="outline: 0px;font-size: 17px;">Server3</span>的资源

curl http://172.16.2.11:8080/index.html
登入後複製
登入後複製
Linux 或 Windows 上實作連接埠映射

如果<span style="outline: 0px;font-size: 17px;">Server4</span>为 Windows,替换一下相应的命令即可

Windows 的 IP 信息如下

Ethernet1
網卡IP 位址子網路遮罩預設閘道備註
#Ethernet0
##192.168.50.105#255.255.255.0-#內網卡
######172.16.2.105########### ##255.255.255.0############-#############外網卡################################################################
Linux 或 Windows 上實作連接埠映射

配置并查看端口映射情况

netsh interface portproxy add v4tov4 listenaddress=172.16.2.105 listenport=8081 connectaddress=192.168.50.11 connectport=8080netsh interface portproxy add v4tov4 listenaddress=172.16.2.105 listenport=8082 connectaddress=192.168.50.12 connectport=8080netsh interface portproxy show v4tov4
登入後複製

检查效果

<span style="outline: 0px;font-size: 17px;">client</span>节点上

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
登入後複製
Linux 或 Windows 上實作連接埠映射

以上是Linux 或 Windows 上實作連接埠映射的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:Linux中文社区
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板