Windows

將 Windows Server 上的傳入 UDP 數據包轉發到不同介面上的客戶端

  • February 2, 2021

我有 2 個網路和 3 個客戶端的以下設置:

  • 網路 A:192.168.0.0/16
  • 網路 B:172.16.0.0/12
  • 客戶端 1 連接到網路 A (192.168.0.1)
  • 客戶端 2 (Windows Server) 連接到網路 A (192.168.0.2) 和網路 B (172.16.0.2)
  • 客戶端 3 連接到網路 B (172.16.0.1)

在我的設置中,客戶端 2 充當兩個網路之間的橋樑。我無法修改現有的網路結構,無法在客戶端 1 或 3 上安裝任何軟體或以任何方式修改系統。

客戶端 1 正在向客戶端 2 (192.168.0.2) 發送 UDP 數據包到埠 1202。現在我想將數據包轉發到客戶端 3 (172.16.0.1) 到埠 1202。如果可能,這也應該在相反的方向上工作。

以下使用netsh的命令應該可以完成這項工作。

netsh interface portproxy add v4tov4 listenaddress=192.168.0.2 listenport=1202 connectaddress=172.16.0.1 connectport=1202

但是,這僅適用於TCP 流量,不適用於 UDP。

我還在這個網站上找到了一個名為Simple UDP proxy/pipe的程序,但是我無法讓它轉發任何流量。

我建議使用 socat ……這個程序也存在於 windows連結。閱讀該工具需要一些時間,但它確實非常強大。

這裡解釋一下如何使用 socat 轉發 udp 流量。

還有另一種方式:你可以把你的windows伺服器變成一個網路路由器。這篇文章解釋瞭如何。您需要在客戶端 1 和 3 上安裝正確的路由 - 所以這個選項更複雜。

引用自:https://serverfault.com/questions/1051667