前言端口轉(zhuǎn)發(fā),,實(shí)現(xiàn)內(nèi)網(wǎng)穿透,,這個(gè)功能在平時(shí)的開(kāi)發(fā)中用到的還是比較多的,記錄下 Windows 如何使用自帶的軟件實(shí)現(xiàn)端口轉(zhuǎn)發(fā),。 命令介紹Windows 從 Windows 2000 開(kāi)始就提供了最基本的端口轉(zhuǎn)發(fā)功能,,是基于 Windows 的 IP Helper 服務(wù)的,不僅可以提供端口轉(zhuǎn)發(fā)功能,,還可以通過(guò)將 IPv4 和 IPv6 的不同地址的數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā),,但是只可以轉(zhuǎn)發(fā) TCP 協(xié)議,暫不支持 UDP 協(xié)議,,使用 netsh interface portproxy 命令即可開(kāi)啟,。
先看下命令幫助: PS C:\Windows\system32> netsh interface portproxy
下列指令有效, 此上下文中的命令: ? - 顯示命令列表。 add - 在一個(gè)表格中添加一個(gè)配置項(xiàng),。 delete - 從一個(gè)表格中刪除一個(gè)配置項(xiàng),。 dump - 顯示一個(gè)配置腳本。 help - 顯示命令列表,。 reset - 重置端口代理配置狀態(tài),。 set - 設(shè)置配置信息。 show - 顯示信息,。
一個(gè)一個(gè)介紹,,先說(shuō) show 命令: show命令show 命令可以查看已經(jīng)存在的端口轉(zhuǎn)發(fā)規(guī)則。
用法如下: show all - 顯示所有端口代理參數(shù),。 show v4tov4 - 顯示 IPv4 代理連接到另一個(gè) IPv4 端口的參數(shù),。 show v4tov6 - 顯示 IPv4 代理連接到 IPv6 的參數(shù)。 show v6tov4 - 顯示 IPv6 代理連接到 IPv4 的參數(shù),。 show v6tov6 - 顯示 IPv6 代理連接到另一個(gè) IPv6 端口的參數(shù),。
例如我想查看所有的端口轉(zhuǎn)發(fā)規(guī)則,則可以使用 netsh interface portproxy show all,。 PS C:\Windows\system32> netsh interface portproxy show all
偵聽(tīng) ipv4: 連接到 ipv4:
地址 端口 地址 端口 --------------- ---------- --------------- ---------- 127.0.0.1 3389 25.63.54.89 3389
help命令這個(gè)就不說(shuō)了,,打印幫助信息... add命令add 命令可以增加一條端口轉(zhuǎn)發(fā)規(guī)則:
具體用法為: add v4tov4 - 添加通過(guò) IPv4 的 IPv4 和代理連接到的偵聽(tīng)項(xiàng)目。 add v4tov6 - 添加通過(guò) IPv6 的 IPv4 和代理連接到的偵聽(tīng)項(xiàng)目,。 add v6tov4 - 添加通過(guò) IPv4 的 IPv6 和代理連接到的偵聽(tīng)項(xiàng)目,。 add v6tov6 - 添加通過(guò) IPv6 的 IPv6 和代理連接到的偵聽(tīng)項(xiàng)目,。
用法: add v4tov4 [listenport=]<integer>|<servicename> [connectaddress=]<IPv4 address>|<hostname> [[connectport=]<integer>|<servicename>] [[listenaddress=]<IPv4 address>|<hostname>] [[protocol=]tcp]
參數(shù): 標(biāo)記 值 listenport - IPv4 偵聽(tīng)端口。 connectaddress - IPv4 連接地址,。 connectport - IPv4 連接端口,。 listenaddress - IPv4 偵聽(tīng)地址。 protocol - 使用的協(xié)議?,F(xiàn)在只支持 TCP,。
例如我想將本地的 3389 端口轉(zhuǎn)發(fā)到遠(yuǎn)程的 3389 端口上,可以使用以下命令實(shí)現(xiàn): netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=3389 connectaddress=25.63.54.89 connectport=3389
其中 v4tov4 的作用在于將 IPv4 地址的 3389 端口轉(zhuǎn)發(fā)到 IPv4 地址的 3389端口上,,listenaddress 指定本地監(jiān)聽(tīng)的地址,,listenport 指定本地監(jiān)聽(tīng)的端口,connectaddress 指定要將數(shù)據(jù)轉(zhuǎn)發(fā)到哪個(gè)地址去,,也就是目的地址,,connectport 指定要轉(zhuǎn)發(fā)到的端口,也就是目的端口,。 delete命令delete 命令用來(lái)刪除一條端口轉(zhuǎn)發(fā)規(guī)則,,刪除時(shí)只需要指定端口轉(zhuǎn)發(fā)的監(jiān)聽(tīng)地址和端口即可
具體用法為: delete v4tov4 - 刪除通過(guò) IPv4 的 IPv4 和代理連接到的偵聽(tīng)項(xiàng)目。 delete v4tov6 - 刪除通過(guò) IPv6 的 IPv4 和代理連接到的偵聽(tīng)項(xiàng)目,。 delete v6tov4 - 刪除通過(guò) IPv4 的 IPv6 和代理連接到的偵聽(tīng)項(xiàng)目,。 delete v6tov6 - 刪除通過(guò) IPv6 的 IPv6 和代理連接到的偵聽(tīng)項(xiàng)目。
用法: delete v4tov4 [listenport=]<integer>|<servicename> [[listenaddress=]<IPv4 address>|<hostname>] [[protocol=]tcp] 參數(shù): 標(biāo)記 值 listenport - 要偵聽(tīng)的 IPv4 端口,。 listenport - 要偵聽(tīng)的 IPv4 地址,。 protocol - 要使用的協(xié)議。當(dāng)前僅支持 TCP,。
例如我想刪除剛才添加的端口轉(zhuǎn)發(fā)規(guī)則,,先查看下目前存在的端口轉(zhuǎn)發(fā)規(guī)則: PS C:\Windows\system32> netsh interface portproxy show all 偵聽(tīng) ipv4: 連接到 ipv4: 地址 端口 地址 端口 --------------- ---------- --------------- ---------- 127.0.0.1 3389 25.63.54.89 3389
執(zhí)行刪除命令 PS C:\Windows\system32> netsh interface portproxy delete v4tov4 listenaddress=127.0.0.1 listenport=3389
PS C:\Windows\system32> netsh interface portproxy delete v4tov4 listenaddress=127.0.0.1 listenport=3389 PS C:\Windows\system32> netsh interface portproxy show all 偵聽(tīng) ipv4: 連接到 ipv4: 地址 端口 地址 端口 --------------- ---------- --------------- ----------
dump命令dump 命令可以將已存在的端口轉(zhuǎn)發(fā)規(guī)則進(jìn)行輸出,保存到一個(gè)文件中或者輸出到控制臺(tái)的標(biāo)準(zhǔn)輸出中,,方便發(fā)送給其他人或者進(jìn)行備份,,以備下次還原。
執(zhí)行 netsh interface portproxy dump 將配置信息輸出到控制臺(tái)的標(biāo)準(zhǔn)輸出,,或者執(zhí)行 netsh interface portproxy dump > 1.txt 命令將配置信息重定向到文件中,。 PS D:\360download> netsh interface portproxy dump
#======================== # 端口代理配置 #======================== pushd interface portproxy
reset add v4tov4 listenport=3389 connectaddress=25.63.54.89 connectport=3389
popd
# 端口代理配置結(jié)束
PS D:\360download> netsh interface portproxy dump >1.txt
set命令set 命令可以修改現(xiàn)有的端口轉(zhuǎn)發(fā)配置,也可以新加端口轉(zhuǎn)發(fā)配置,。
例如將剛才的遠(yuǎn)程地址和端口改為 123.124.125.126:3390,使用以下命令來(lái)修改,。
PS C:\Windows\system32> netsh interface portproxy show all
偵聽(tīng) ipv4: 連接到 ipv4:
地址 端口 地址 端口 --------------- ---------- --------------- ---------- 127.0.0.1 3389 25.63.54.89 3389
D:\360download>netsh interface portproxy set v4tov4 listenaddress=127.0.0.1 listenport=3389 connectaddress=123.124.125.126 connectport=3390
D:\360download>netsh interface portproxy show all
偵聽(tīng) ipv4: 連接到 ipv4:
地址 端口 地址 端口 --------------- ---------- --------------- ---------- 127.0.0.1 3389 123.124.125.126 3390
本來(lái)以為可以將剛才 dump 命令導(dǎo)出的配置重新導(dǎo)入的,,但是我沒(méi)成功....可能人家就沒(méi)設(shè)計(jì)這個(gè)功能吧, 有點(diǎn)尷尬的...如果有知道的小伙伴可以告訴我,。 reset命令reset 命令可以重置所有的端口轉(zhuǎn)發(fā)規(guī)則,,如果沒(méi)有備份的小伙伴慎用,。
D:\360download>netsh interface portproxy show all
偵聽(tīng) ipv4: 連接到 ipv4:
地址 端口 地址 端口 --------------- ---------- --------------- ---------- 127.0.0.1 3389 123.124.125.126 3390
D:\360download>netsh interface portproxy reset
D:\360download>netsh interface portproxy show all
D:\360download>
注意事項(xiàng)如果有添加了規(guī)則但是規(guī)則不生效的小伙伴,可以檢查下 Windows 的 IP Helper 服務(wù)是否開(kāi)啟,,因?yàn)槎丝谵D(zhuǎn)發(fā)功能是由這個(gè)服務(wù)支持的,,一定要保證它是正常運(yùn)行的才可以。還有,,在監(jiān)聽(tīng)本地地址上的端口時(shí),,最好先確定本地的端口沒(méi)有被占用,防止端口沖突影響其他程序的正常運(yùn)行,。 總結(jié)以上就是端口轉(zhuǎn)發(fā)功能的使用教程,,在平時(shí)的開(kāi)發(fā)中臨時(shí)需要和虛擬機(jī)通信或者其他場(chǎng)景中還是比較常用的,雖然只支持 TCP 協(xié)議,,不過(guò) UDP 在平時(shí)使用的并不多,,TCP 也足夠了,所以還是可以滿(mǎn)足日常開(kāi)發(fā)需求的,。 參考鏈接:https://docs.microsoft.com/en-us/windows-server/networking/technologies/netsh/netsh-interface-portproxy
|