为什么到本地网络主机的数据包要通过网关

为什么到本地网络主机的数据包要通过网关

最近我发现我的防火墙日志中来自和发往同一个局域网的数据包丢失数量不断增加......

我已经检查了所有内容两次,网络掩码正常,没有额外的路由......

如果我 ping 主机10.0.0.3/24来自主机10.0.0.2/24并且该主机存在于网络中,一切运行正常,路由器对此一无所知(数据包直接从主机 A 发送到 B),但如果主机 B 从网络中消失,数据包将发送到默认网关...

我只在 Windows 机器上观察到了这种情况 - 所有 Linux 都正常......

有人知道为什么 Windows 会这样做以及从什么时候开始的?


编辑

以下是一些 fireHOL 的日志

2 月 5 日 20:36:26 黑色 PASS-未知:IN=lan0.20 OUT=lan0.20 MAC=(..) SRC=10.0.0.2 DST=10.0.0.3 LEN=48 TOS=00 PREC=0x00 TTL=127 ID=14503 DF PROTO =TCP SPT=62931 DPT=3050 SEQ=3210101748 ACK=0 WINDOW=8192 SYN URGP=0 MARK=0

丢弃的数据包不是 ICMP - 它是 TCP SYN 数据包 - 我们的一个应用程序正在尝试连接 Firebird 数据库

答案1

我也在自己的网络上发现了这个问题,在忘记自己在网络上捕获了什么之后,我花了几天的时间才找到它。这是一项称为“邻居不可达性检测”的功能。

本质上,在对 IP 进行初始 ARP 请求后,如果 Windows 没有收到 ARP 回复,它将发送到默认网关,以查看网关是否可以找到设备所在的位置。当您在子网中 ping 未使用的 IP(尚未进行 ARP 处理)时,您可以看到此行为,第一个响应将是目标主机无法访问,其余的将显示请求超时。

当 IPv4 和 IPv6 网络堆栈合并时,此行为在 Windows Vista 中开始出现。

您应该能够使用以下方法禁用此行为

netsh interface ipv4 set interface "<Interface Name>" nud=disabled store=persistent

请查看下面“邻居不可达”下方的链接,了解解释和更多信息。

https://blogs.technet.microsoft.com/networking/2009/04/24/source-ip-address-selection-on-a-multi-homed-windows-computer/

相关内容