我正在尝试测试嵌入式系统创建DNS请求和处理它们的回复的能力,但我在获得这些回复时遇到了问题。
物理上,我的嵌入式系统(192.168.1.50)
连接到交换机,交换机连接到路由器(192.168.1.1)
。我有另一台计算机,(192.168.1.31)
连接到同一个交换机上,我在上面运行Wireshark。
我试图从我的嵌入式系统向谷歌的公共DNS服务器(8.8.8.8:53)
发送DNS请求。在做了一些阅读之后,我并不感到奇怪的是,这个请求被重新打包为对路由器的ARP请求-- Wireshark报告了一条who has 192.168.1.1? tell 192.168.1.50
消息--但是我没有收到来自路由器的任何ARP回复,我认为这是我在实际的DNS请求被发送之前所期望的。
那么,为什么路由器没有回复呢?
我不是网络专家,所以任何简单的帮助都将不胜感激。
发布于 2014-03-21 10:23:33
我已经解决了这个问题。事实上,我无法在嵌入式系统中接收到ARP回复的原因是因为交换机正在挤压它们(我认为这是因为它是某种类型的)。解决方案是放置交换机的下游路由器并禁用其防火墙,从而在我的局域网内创建另一个网络。然后,我通过下游路由器请求由上游路由器提供的DNS服务器。下游路由器不压缩ARP应答。为了说明:
| NETWORK 1 -----------------------| NETWORK 2 --------------------|
| 192.168.1.50 --> 192.168.1.11 -|--> SWITCH --> 192.168.1.1 -|-->
| E.SYSTEM --> DSTREAM ROUTER -|--> SWITCH --> USTREAM ROUTER -|-->
上游路由器知道192.104.4.10
上有一个主DNS服务器,因此请求是从具有以下IP地址的嵌入式系统中提出的:
IP: 192.168.1.50
Gateway: 192.168.1.11
Subnet: 255.255.255.0
DNS: 192.104.4.10
谢谢你的评论,他们帮我调试了这个。
https://networkengineering.stackexchange.com/questions/6913
复制相似问题