我有一个应用程序向某个端口发送 UDP 广播,例如 11000 (BROADCAST_APP),还有另一个应用程序监听 11000 UDP 端口 (LISTENER_APP)。这两个应用程序效果很好在物理 LAN (192.168.1.0/24)上,当我在物理接口上启动侦听器时
UDP 192.168.1.16:11000 *:*
并从机器 192.168.1.11 发送广播。
但是我想在虚拟网络中测试它们,所以我在客户 WinXp 机器上的虚拟接口上运行 BROADCAST_APP,在主机 Win7 机器上的虚拟接口上运行 LISTENER_APP:
UDP 192.168.56.1:11000 *:*
我的主机有虚拟适配器,地址为 192.168.56.1,客户机有 192.168.56.2。我可以从主机 ping 客户机,反之亦然。
但是,来自客户机的广播没有到达 LISTENER_APP。我在 Oracle VirtualBox 中运行虚拟机。
答案1
从评论来看,Windows 防火墙确实存在这个问题,因为它被设置为阻止来自公共网络的连接,而公共网络是执行 UDP 广播的虚拟适配器的位置。关闭防火墙可以解决问题。
顺便说一句,如果您还没有这样做,更安全的方法是制定虚拟机间通信规则和/或将虚拟适配器指定为 Windows 防火墙和/或主机网络设置中更“受信任”的网络中。