我正在尝试测试我编写的用于发送 UDP 消息的软件。如果我不将套接字绑定到端口(即默认为 NIC 1),此软件可以工作。我可以在 PC 上运行 Wireshark 来查看消息。但是,如果我将 IP 套接字绑定到 NIC 2(具有静态 IP 地址),Wireshark 不会嗅探 192.168.1.100 的任何 UDP 数据包。最初我以为我的软件有问题,但我在另一台 PC 上进行了测试,它按预期工作。
这让我认为存在路由问题,但我不知所措。
设置:PC(Windows 10)物理上直接连接到具有静态 IP 192.168.1.100 的 FPGA。PC 有两个 NIC:(a) 板载 NIC,自动配置 IP 地址 192.168.55.XXX;(2) 外部 NIC,配置静态 IP 192.168.1.125 并启用巨型帧。
我尝试过的事情:
不同的电脑上运行相同的软件:按预期运行。
刷新路由表
正在 ping 192.168.1.100 -> 结果是
Pinging 192.168.1.100 with 32 bytes of data:
Reply from 209.53.192.YYY: Destination host unreachable.
通过以下方式更新路由表
route ADD
:到表的几条不同路由(目标 192.168.1.0 和 192.168.1.100)。结果无变化 [route print][1]使用以下方法更新路由表
netsh
tracert 192.168.1.100
1 <1 ms <1 ms <1 ms 192.168.55.NNN 2 1 ms 1 ms 1 ms 207.216.41.VVV 3 4 ms 1 ms 1 ms 96.1.221.ZZZ 4 1 ms 1 ms 1 ms 209.53.192.YYY 5 209.53.192.YYY reports: Destination host unreachable.
确保所有程序都以管理员模式启动
将以太网电缆和静态 IP 移至板载 NIC。行为相同
用另一台配置了 IP 地址的 PC 替换 FPGA。行为相同。
从第二台 PC 执行 ping 操作(见上文):ping 192.168.1.125(另一个方向)成功
其他的建议:
- 在所需配置中,Wireshark 上仅看到的相关消息是:
ARP 42 Who has 192.168.1.100? Tell 192.168.1.125
- 我的软件是用 C++ 编写的,使用 winsock
我感觉我缺少了一些简单的东西......TIA [1]:https://i.stack.imgur.com/7mnmj.png