【必看】Linux 或 Windows上实现端口映射
通常服務器會有許多塊網卡,因此也可能會連接到不同的網絡,在隔離的網絡中,某些服務可能會需要進行通信,此時服務器經過配置就可以承擔起了轉發數據包的功能。
一、Windows下實現端口映射
1.查詢端口映射情況
netsh?interface?portproxy?show?v4tov42.查詢某一個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=804.刪除一個端口映射
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_forward iptables?-t?nat?-A?POSTROUTING?-j?MASQUERADE iptables?-A?FORWARD?-i?[內網網卡名稱]?-j?ACCEPT iptables?-t?nat?-A?POSTROUTING?-s?[內網網段]?-o?[外網網卡名稱]?-j?MASQUERADE 例: echo?1?>/proc/sys/net/ipv4/ip_forward iptables?-t?nat?-A?POSTROUTING?-j?MASQUERADE iptables?-A?FORWARD?-i?ens33?-j?ACCEPT iptables?-t?nat?-A?POSTROUTING?-s?192.168.50.0/24?-o?ens37?-j?MASQUERADE2.設置端口映射
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虛擬機
實驗拓撲
-
內網和外網是相對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?-m?SimpleHTTPServer?8080Server2、Server3同理
對照實驗
在client上訪問Server1的資源
curl?http://192.168.50.11:8080/index.html在client上訪問Server2的資源
curl?http://192.168.50.12:8080/index.html在client上訪問Server3的資源
curl?http://172.16.2.11:8080/index.html可以看到,外網的client是無法訪問內網Server1,Server2的資源的。
在Server4上配置端口映射
臨時配置
#允許數據包轉發 echo?1?>/proc/sys/net/ipv4/ip_forward iptables?-t?nat?-A?POSTROUTING?-j?MASQUERADE iptables?-A?FORWARD?-i?ens33?-j?ACCEPT iptables?-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:8080 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的資源
curl?http://172.16.2.100:8081/index.html在client上訪問Server2的資源
curl?http://172.16.2.100:8082/index.html在client上訪問Server3的資源
curl?http://172.16.2.11:8080/index.html如果Server4為Windows,替換一下相應的命令即可配置并查看端口映射情況
netsh?interface?portproxy?add?v4tov4?listenaddress=172.16.2.105?listenport=8081?connectaddress=192.168.50.11?connectport=8080 netsh?interface?portproxy?add?v4tov4?listenaddress=172.16.2.105?listenport=8082?connectaddress=192.168.50.12?connectport=8080 netsh?interface?portproxy?show?v4tov4檢查效果
在client節點上
curl?http://172.16.2.105:8081/index.html curl?http://172.16.2.105:8082/index.html curl?http://172.16.2.11:8080/index.html總結
以上是生活随笔為你收集整理的【必看】Linux 或 Windows上实现端口映射的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【收藏】网络故障处理手册大全,看完再也不
- 下一篇: 【实操】路由选择工具ACL