网络桥接 - DHCP 和 DNS 问题

网络桥接 - DHCP 和 DNS 问题

背景:我是嵌入式有线网络设备的设计师,该设备几乎适用于所有设置,但在某些情况下它不起作用,我正在处理排除根本原因并解决问题。

这是一个由多部分组成的问题,但涉及两件相关的事情。

问题 1 - 端口在获得载体后尚未准备好

场景:我将 Windows 7 PC 设置为 WiFi(通过路由器使用 DHCP/DNS 上网)和有线嵌入式设备(直接连接)之间的桥梁。当有线嵌入式设备关闭时,它所连接的 Windows PC 端口处于关闭状态。当我打开设备电源时,它会在几秒钟内发送 DHCP 发现,但似乎 Windows PC 的端口(或其驱动程序部分)尚未准备好,并且没有对 DHCP 数据包的响应。如果我稍后手动发出 DHCP 请求,它会起作用;如果我将集线器放在两者之间,这样当嵌入式设备不关闭 PC 端口时,设备在开机后就可以从 DHCP 正确获取 IP 配置。

似乎我在思科等(太多)智能路由器中也发现了同样的问题,它们在载波出现在线路中后也无法正常工作。

在操作系统 - Windows、Linux 和 Cisco IOS 中是否有任何设置可以进行调整,以便端口在感知到运营商后尽快可用?

问题 2 - DNS 响应被阻止

与上述设置相同 - Windows PC 作为 WiFi(互联网)和有线(嵌入式设备)之间的桥梁。嵌入式设备在有线上发出 DNS 请求,我可以看到该请求出现在 WiFi 端,并且可以看到 PC 的 WiFi 端从路由器收到响应,但该响应未出现在有线端。

我不知道造成这种阻塞的原因是什么,但是通过比较连接的另一台 PC 而不是嵌入式设备发送的数据包,我发现嵌入式设备发送的数据包具有不要分裂强制设置标志。

更新:我发现 SYN/ACK TCP 数据包在 Windows 7 PC 桥接器中也受到阻止,无法到达嵌入式设备。必须有一些设置来阻止这种阻止,但我无法确定具体是什么。

答案1

我找到了解决 Windows 主机拦截数据包的奇怪行为的答案。答案很简单 - Windows PC 认为这些数据包是给自己的!

桥接机制似乎与将数据包从一个接口转换到另一个接口有关,将桥接器的 MAC 地址放入数据包中。在我的例子中,我将 Windows PC 主机设置为使用 DHCP 接收 IP 地址,但是当有线设备尝试 DHCP 时,Windows PC 会用自己的 MAC 地址替换该设备的 MAC 地址,当然路由器也会为该设备提供相同的 IP 地址。因此,有两个具有相同 IP 地址的设备,无论嵌入式设备发送什么,(几乎)所有回复(DHCP 除外,因为它们是广播)都以菊花链中具有该 IP 地址的第一个设备的入口结束(因此在 Windows PC 上)。

解决方案很简单 - 我为 Windows 主机提供了 DHCP 地址池之外的固定 IP 地址。

相关内容