在 Windows 7 及更高版本上的所有網路介面上強制 IPv4 UDP 廣播。
下載最新版本。
如果您使用 Windows,您可能會感到驚訝的是,發送到全域廣播位址255.255.255.255
(所有可用網路介面)的 IPv4 UDP 廣播封包實際上不會傳遞到網路上存在的所有可用網路介面。
這是因為 BSD 套接字的 Windows 網路實作認為此類封包只能傳遞到最高優先權的介面(「預設」介面)。網路介面的優先順序由其度量值決定,該度量值(通常)由系統自動分配。具有最低度量值的介面將是最高優先權的介面。通常,這是您的 PC 連接到網際網路(或家庭路由器)的介面。您可以透過在 PowerShell 中執行以下命令來檢查 Windows 指派給所有網路介面的指標值:
Get-NetIPInterface
無論此行為的基本原理是什麼,它都會嚴重影響所有其他網路介面將不會接收全域 UDP 廣播資料包,並且某個應用程式如果依賴此類資料包的正確傳遞,將會遇到連接問題。
這有什麼關係呢?考慮一台 PC 連接到標準子網路為 192.168.179.0/24 的區域網路和子網路為 100.100.100.0/24 的 VPN。現在,這台 PC 上運行著一項服務,VPN 用戶端也必須存取該服務,並且該服務依賴全域 UDP 廣播封包進行通訊。
當然,在 Windows 中解決此問題的唯一方法是橋接兩個網路。但橋接是非常不可取的,因為這樣做會將您的整個 LAN 暴露給透過 VPN 連線的一方。
BROADcast 透過捕獲傳遞到主路由(也稱為「首選」路由)的全域 UDP 廣播封包並簡單地將它們中繼到 Windows 決定忽略的所有其他合適的網路接口,很好地解決了這個問題。
在上面的螢幕截圖中,BROADcast 正在捕獲傳遞到10.10.10.100
真實 LAN 位址(也是首選路由)的全域 UDP 廣播封包,並將它們中繼到 VPN 位址100.100.100.1
。如果不執行 BROADcast,封包將僅傳送到10.10.10.100
,完全忽略網路的 VPN 段。
嚴重依賴此功能的軟體範例包括:LAN 聊天應用程式、一些多人視訊遊戲以及其他用於協作的分散式應用程式。
注意:BROADcast 需要管理員權限才能運作。這是因為它必須使用原始套接字捕獲 UDP 封包,並且只有提升帳戶才允許這樣做。
BROADcast 是一個控制台應用程式。它也可以作為 Windows 服務在背景運行。
開始中繼全域UDP廣播封包:
broadcast.exe -b
添加-d
以顯示詳細的診斷訊息(對於故障排除很有用):
broadcast.exe -b -d
廣播資料包將傳遞到除預設介面之外的所有網路介面。使用Ctrl+C徹底退出 BROADcast。
作為獎勵功能,BROADcast 允許將任何介面設定為預設(或首選)介面。它透過取得您想要變成預設值的介面的當前度量值並將其新增至每個其他介面度量值中,使其成為所有介面中的最低度量值來實現此目的:
BROADcast.exe -i " Interface " -m
再次執行不含-m
參數的命令以撤銷所有指標值變更並恢復自動系統管理的值:
BROADcast.exe -i " Interface "
「Interface」是網路介面名稱,可在Windows控制面板的「網路和共用中心」部分中尋找(和變更)。您可以按Win+R並打開來快速存取它:
%windir%explorer.exe shell:::{992CFFA0-F557-101A-88EC-00DD010CCC48}
若要將 BROADcast 作為 Windows 服務安裝(或卸載),請使用適當的參數呼叫它:
broadcast .exe [install | uninstall]
BROADcast 儲存庫包含範例 OpenVPN 設定和腳本,用於在使用 TAP 裝置啟動 OpenVPN 伺服器後執行 BROADcast。
請注意,如果您打算使用其啟動/停止腳本功能從 OpenVPN 啟動 BROADcast,則也必須以管理員權限執行 OpenVPN,就像 BROADcast 一樣。
因此,強烈建議將 BROADcast 作為 Windows 服務單獨啟動。
雖然與 BROADcast 或 UDP 廣播沒有直接關係,但另一個有用的 Windows 網路拐杖是 ForceBindIP。
與為UDP 協定提供修復的BROADcast 不同,ForceBindIP 為TCP 協定提供了類似的修復,方法是強制應用程式綁定(或偵聽)特定網路接口,而不是它自動選擇的網路介面(通常不是您選擇的網路介面)。
製作高品質的軟體既困難又耗時。如果您覺得 BROADcast 有用,可以買一個☕給我!