在Windows上,我需要將一個IP位址(例如10.255.255.255)的所有流量對應到另一個IP位址(例如127.0.0.1)。
我遇到了netsh介面portproxy並且我已經嘗試過。
netsh interface portproxy add v4tov4 listenaddress=10.255.255.255 listenport=7073 connectaddress=127.0.0.1 connectport=7071
目標是,如果用戶發送任何資料包,10.255.255.255:7073
就像她將資料包發送到127.0.0.1:7071
netsh interface portproxy show all
Listen on ipv4: Connect to ipv4:
Address Port Address Port
--------------- ---------- --------------- ----------
10.255.255.255 7073 127.0.0.1 7071
我還新增了 7073 連接埠的防火牆規則。
netsh advfirewall firewall add rule name="7073 port" protocol=TCP dir=in localport=7073 action=allow
這是在 Windows 11 上。
netstat -na|find "7073" 結果為空,7071同樣結果如下
netstat -na|find "7071"
TCP 0.0.0.0:7071 0.0.0.0:0 LISTENING
在我的應用程式中,我首先嘗試從郵遞員將請求發送到 10.255.255.255:7073,但超時。同樣的請求可以成功傳送到127.0.0.1:7071。
如果我遠端登入 7073,它無法連接到它。
telnet 10.255.255.255 7073
Connecting To 10.255.255.255...Could not open connection to the host, on port 7073: Connect failed
我檢查過IP Helper
服務也在運作。
我的意圖是,如果用戶已經可以向 發送請求127.0.0.1:7071
,那麼在連接埠轉發之後,他們可以向 發送請求10.255.255.255:7073
並看到相同的行為。我的應用程式實際上會發送 HTTP 請求。
請注意,沒有服務實際上正在偵聽7073
傳入流量。但這就是重點,我希望任何向此連接埠發送任何內容的人(即使沒有人在監聽它),流量都會流向7071
(有人正在監聽它)。
關於將 IP:連接埠映射到另一個以將所有網路流量從來源 IP 來回轉發到目標 IP,我的方法是否正確?
如果是,這裡可能出了什麼問題?
謝謝
答案1
該命令的問題在於指定和netsh
的參數時,這些參數用於
listenaddress
connectaddress
一個特定的 IP 位址,而不是一系列位址。
因此,您使用的語法10.255.255.255
指定了這個確切的 IP 位址,而不是整個10.*
位址範圍。
的文檔 Netsh 介面 portproxy 指令 - 新增 v4tov4 說:
連接位址
指定IPv4位址要連接到的。可接受的值為 IP 位址、電腦 NetBIOS 名稱或電腦 DNS 名稱。如果未指定位址,則預設為本機。
監聽地址
指定IPv4位址聽什麼。可接受的值為 IP 位址、電腦 NetBIOS 名稱或電腦 DNS 名稱。如果未指定位址,則預設為本機。
如果您想重新建立連接埠代理,您需要先刪除您使用建立的連接埠代理 刪除 v4tov4。