打印

路由器发的奇怪的 ARP 命令!这是什么原因?

[复制链接]
3277|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Wxy8030|  楼主 | 2012-8-23 09:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
安装的一个带网口的设备通过路由器经局域网连接到服务器,在服务器上PING该设备时始终没反应,后来经在设备端截取数据包发现一个奇怪的事情,服务器PING命令发到路由器后,路由器首先需要发 ARP 命令获得设备的MAC地址,问题就出在这个 ARP命令上,截取的ARP包如下:

0000   ff ff ff ff ff ff 00 16 4d 26 ad 61 08 06 00 01  ........M&.a....
0010   08 00 06 04 00 01 00 16 4d 26 ad 61 84 ef 7c a1  ........M&.a..|.
0020   00 00 00 00 00 00 84 ef 7c a3 00 00 00 00 00 00  ........|.......
0030   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................

ARP包有效数据只有42个,另加18个字节的填充,最后是4个字节的CRC,而这个包的最后4字节CRC居然为 00 00 00 00 !(网络数据截取工具也指示该CRC错误)设备的网络芯片具有硬件CRC功能,软件里设置了自动过滤掉CRC错误的包,结果就导致设备对这个CRC错误的ARP命令不响应!

可回头一想,这个路由器是个成熟的设备啊,不应该出现这种低级错误吧?我没研究过路由器,不知道象这种CRC不对的数据包,是由路由器有意为之(比如人为可设置发CRC为0的ARP包?以应付某些恶意攻击?),还是就是路由器的BUG?

请兄弟们指点!

相关帖子

沙发
aozima| | 2012-8-23 10:30 | 只看该作者
有些校验是非必须的,但不同系统的规则不一样的。
有的不发,有的不校验。

你可以ping一下PC,然后截一下包看看有没CRC,及PC是否响应。

使用特权

评论回复
板凳
Wxy8030|  楼主 | 2012-8-23 11:14 | 只看该作者
PC 没办法看,PC一旦连上去,就会发一个 GARP 命令,直接跳过 ARP 命令了,然后 PC会不断的有数据发向网络,导致 路由器一直不需要发 ARP命令!

使用特权

评论回复
地板
xyz769| | 2012-8-23 15:11 | 只看该作者
那个ARP包是正确的。你搞错抓包位置了吧?

把你的拓扑贴出来瞧瞧。。

使用特权

评论回复
5
Wxy8030|  楼主 | 2012-8-23 21:56 | 只看该作者
那个ARP包最后的校验不对(最后四位不应该是0)

使用特权

评论回复
6
sinanjj| | 2012-8-23 22:03 | 只看该作者
什么牌子的路由器

使用特权

评论回复
7
b620126| | 2012-8-23 23:14 | 只看该作者
可以用科莱抓包

使用特权

评论回复
8
xyz769| | 2012-8-24 09:01 | 只看该作者
那个ARP包最后的校验不对(最后四位不应该是0)
Wxy8030 发表于 2012-8-23 21:56


你电脑上用的什么抓包软件?竟然能抓到二层的CRC包??

使用特权

评论回复
9
Wxy8030|  楼主 | 2012-8-24 10:55 | 只看该作者
什么牌子的路由器
sinanjj 发表于 2012-8-23 22:03


路由器跟设备不在一个机房,我们根本看不到

使用特权

评论回复
10
Wxy8030|  楼主 | 2012-8-24 10:58 | 只看该作者
你电脑上用的什么抓包软件?竟然能抓到二层的CRC包??
xyz769 发表于 2012-8-24 09:01


The Ethereal Network Analyzer

CRC正确时,那些 00 和 CRC 都不显示,只有不正确时会显示出来。

对该CRC,软件里显示为:Frame check sequence: 0x00000000 [incorrect, should be 0x11c2ca72]

使用特权

评论回复
11
sinanjj| | 2012-8-24 11:03 | 只看该作者
phy层的crc才抓不到的。那个数据都是编码的也没必要看。

这个crc,有些协议里处理是添0就是不校验的。(也会有效)

当然,赶紧查查是什么牌子的路由器,是国产的不。。。。。

使用特权

评论回复
12
Wxy8030|  楼主 | 2012-8-24 11:07 | 只看该作者
phy层的crc才抓不到的。那个数据都是编码的也没必要看。
这个crc,有些协议里处理是添0就是不校验的。(也会有效)
当然,赶紧查查是什么牌子的路由器,是国产的不。。。。。 ...
sinanjj 发表于 2012-8-24 11:03


不是吧?什么协议里可以添0就不用加CRC?(关键是CRC不对时,就直接被硬件给过滤了)

路由器目前是查不到了,那个机房不让我们进......

使用特权

评论回复
13
xyz769| | 2012-8-24 22:35 | 只看该作者
本帖最后由 xyz769 于 2012-8-24 22:42 编辑
phy层的crc才抓不到的。那个数据都是编码的也没必要看。

这个crc,有些协议里处理是添0就是不校验的。(也会有效)

当然,赶紧查查是什么牌子的路由器,是国产的不。。。。。 ...
sinanjj 发表于 2012-8-24 11:03


你用普通电脑网卡抓个二层的CRC看看。。我用Wireshark抓过N多包了,就是没找到,可能是网卡驱动给过滤掉了。。

使用特权

评论回复
14
xyz769| | 2012-8-24 22:36 | 只看该作者
不是吧?什么协议里可以添0就不用加CRC?(关键是CRC不对时,就直接被硬件给过滤了)

路由器目前是查不到了,那个机房不让我们进......
Wxy8030 发表于 2012-8-24 11:07


把你的网关的MAC地址贴出来看看。。

或者试试telnet 或http网关IP地址,看有没有提示。

使用特权

评论回复
15
xyz769| | 2012-8-24 22:38 | 只看该作者
The Ethereal Network Analyzer

CRC正确时,那些 00 和 CRC 都不显示,只有不正确时会显示出来。

对该CRC,软件里显示为:Frame check sequence: 0x00000000
Wxy8030 发表于 2012-8-24 10:58


我一直用Wireshark,没这提示。能贴个图看看吗?

使用特权

评论回复
16
drentsi| | 2012-8-24 23:10 | 只看该作者
能抓到包,就表示CRC是对的。
CRC错误的包,网卡直接丢掉,你根本就抓不到,这是标准里必须的,如果不这样,那网络岂不大乱了?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

139

主题

2054

帖子

2

粉丝