在 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 有用,可以给我买一个☕!