Linux 到 Windows - 无法连接到 LAN 中的设备

Linux 到 Windows - 无法连接到 LAN 中的设备

我在 Windows 桌面上运行了一个 C# 程序,该程序在 UDP 上广播,我在 Raspian Buster 上运行了一个 Java 程序,该程序正在监听广播。两个设备都通过以太网电缆连接到同一个交换机。但是,Java 客户端没有收到广播。

在我搬家并更改网络设置之前,一切都运行正常。

我尝试过的:

台式机的 IP 是 192.168.1.22
树莓派的 IP 是 192.168.1.25

在 Windows 上,调用arp -acmd 会显示 Raspberry:

192.168.1.25 b8-27-eb-db-16-f0 动态

在 Raspberry 上,调用arp -a会显示桌面:

Desktop-so5t7k8-1.home (192.168.1.22) 位于 eth0 上的 70:85:c0:7f:4f [ether]

从桌面 Ping Raspberry 工作正常(无数据包丢失,时间<1ms)
但是,从 Raspberry ping 桌面不起作用——100% 数据包丢失

我意识到这可能是由无数可能的问题引起的,但我不知道从哪里开始。我该如何调试它?

答案1

我该如何着手调试这个问题?

有两件事可以尝试,顺序不限:

  1. 防火墙配置。Windows 附带一个防火墙,配置为阻止“新”入站数据包 - 它会提示您一次对于每个尝试侦听数据包的新程序,但如果您匆忙关闭对话框,则很可能会导致 java.exe 被阻止。

    运行wf.msc以打开 Windows 防火墙配置工具,导航到“入站”规则,并查找任何明确阻止可执行文件的规则。如果找到,请将其更改为“允许”规则,或者删除它并手动添加基于端口的规则。(例如,添加一条规则以允许接收 UDP 到端口 23456。)

    请记住,某些防病毒程序带有自己的防火墙,并禁用 Windows 附带的防火墙。

  2. 数据包捕获。在应该接收数据包的机器上安装 Wireshark,将其指向您的网络接口,使用它来验证系统是否整体接收到您要查找的 UDP 数据包。如果它们出现在数据包捕获中但没有出现在程序中 - 这通常是防火墙问题。如果它们在数据包捕获中显示 - 这是某种网络问题(例如交换机或 Wi-Fi 接入点阻止广播)。

相关内容