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
实验:将部署在内网的服务映射到外网
实验环境
VMWare Workstation Pro
5 台最小化安装的 centos 7 虚拟机
實驗拓樸

#內網和外網是相對<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

<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

在<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

在<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

可以看到,外网的
<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

在<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

如果<span style="outline: 0px;font-size: 17px;">Server4</span>为 Windows,替换一下相应的命令即可
Windows 的 IP 信息如下
| 網卡 | IP 位址 | 子網路遮罩 | 預設閘道 | 備註 |
|---|---|---|---|---|
| #Ethernet0 | ||||
| ##192.168.50.105 | #255.255.255.0 | - | #內網卡 |

配置并查看端口映射情况
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 上實作連接埠映射的詳細內容。更多資訊請關注PHP中文網其他相關文章!
熱AI工具
Undress AI Tool
免費脫衣圖片
Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片
AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。
Clothoff.io
AI脫衣器
Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!
熱門文章
熱工具
記事本++7.3.1
好用且免費的程式碼編輯器
SublimeText3漢化版
中文版,非常好用
禪工作室 13.0.1
強大的PHP整合開發環境
Dreamweaver CS6
視覺化網頁開發工具
SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)
如何關閉Linux系統
Jun 24, 2025 pm 12:13 PM
正確關閉Linux系統的命令包括shutdown、halt、poweroff和reboot。其中,shutdown最推薦使用,可安排關機時間並發送通知;halt直接停止系統運行;poweroff在halt基礎上切斷電源;reboot用於重啟。要安全安排定時關機,可用sudoshutdown-h 10表示10分鐘後關機,用sudoshutdown-c取消定時,還可加入提示信息如sudoshutdown-h23:00"系統將在今晚11點關閉"。圖形界面下可通過右上角菜單選擇關機,
如何解決設備驅動程序問題
Jun 25, 2025 am 12:11 AM
設備驅動出問題會導致硬件無法正常使用,如外設不響應、系統提示“未知設備”或遊戲卡頓。解決方法如下:1.查看設備管理器中的警告圖標,黃色感嘆號代表驅動過時或兼容性問題,紅色叉號表示硬件被禁用或連接不良,問號或“Otherdevices”表示系統未找到合適驅動;2.右鍵點擊設備選擇“更新驅動程序”,先嘗試自動搜索,不行則手動下載安裝;3.卸載設備並勾選刪除驅動軟件,重啟後讓系統重新識別,或手動指定驅動路徑安裝;4.使用驅動識別工具輔助查找型號,但避免下載不明來源驅動;5.檢查Windows更新以獲取
如何管理Cron工作
Jul 01, 2025 am 12:07 AM
管理cron任務需注意路徑、環境變量和日誌處理。 1.使用絕對路徑,避免因執行環境不同導致命令或腳本找不到;2.顯式聲明環境變量,如PATH和HOME,確保腳本依賴的變量可用;3.重定向輸出到日誌文件,便於排查問題;4.使用crontab-e編輯任務,確保語法正確且自動生效。掌握這四個要點可有效避免常見問題。
如何向Linux添加新磁盤
Jun 27, 2025 am 12:15 AM
添加新硬盤到Linux系統步驟如下:1.確認硬盤被識別,使用lsblk或fdisk-l檢查;2.用fdisk或parted分區,如fdisk/dev/sdb創建分區並保存;3.格式化分區為文件系統,如mkfs.ext4/dev/sdb1;4.臨時掛載使用mount命令,如mount/dev/sdb1/mnt/data;5.修改/etc/fstab實現開機自動掛載,需先測試掛載確保無誤。操作前務必確認數據安全,避免硬件連接問題。
如何在Linux上列出網絡接口
Jun 28, 2025 am 12:02 AM
在Linux系統中,可通過ip、ifconfig和nmcli命令查看網絡接口信息。 1.使用iplinkshow可列出所有網絡接口,添加up參數僅顯示活躍接口,並結合ipaddr或ipa查看IP分配情況;2.使用ifconfig-a適用於舊系統,可查看所有接口,部分新系統需安裝net-tools包;3.使用nmclidevicestatus適用於NetworkManager管理的系統,可查看接口狀態及連接詳情,並支持過濾查詢。根據系統環境選擇合適命令即可完成網絡信息查看。
如何使用頂部命令
Jun 27, 2025 am 12:11 AM
top命令可實時查看Linux系統資源使用情況,1.通過終端輸入top打開界面,頂部顯示系統運行狀態摘要,包括負載、任務數、CPU及內存使用;2.進程列表默認按CPU使用排序,可識別高佔用進程;3.快捷鍵如P(CPU排序)、M(內存排序)、k(結束進程)、r(調整優先級)、1(多核詳情)提升操作效率;4.使用top-b-n1可保存輸出至文件;5.添加-u參數可過濾特定用戶進程。掌握這些要點即可快速定位性能問題。
如何管理AWS EC2上的雲實例
Jun 25, 2025 am 12:05 AM
管理AWSEC2實例需掌握生命週期、資源配置和安全設置。 1.選擇實例類型時,計算密集型任務選C系列,內存敏感應用選M或R系列,並從小規模測試開始;2.啟動實例時注意安全組規則、密鑰對保存及連接方式,Linux使用SSH命令連接;3.成本優化可通過預留實例、Spot實例、自動關機及設置預算預警實現。只要注意選型、配置和維護,即可保障EC2穩定高效運行。
如何運行Ansible Playbook
Jun 28, 2025 am 12:14 AM
運行Ansibleplaybook需先確保結構正確與環境準備。 1.編寫playbook文件,包含hosts、tasks等必要部分;2.確保目標主機在inventory中且可通過SSH連接,可用ansibleping模塊測試;3.使用ansible-playbook命令運行,可加-i指定inventory路徑;4.可選用-v、--check、--limit、--tags等參數調試或控制執行;5.注意YAML縮進、模塊參數、權限及inventory內容等常見錯誤點,使用--check和-v有助於排錯



