关于ping命令的-I选项的一个问题

来源:互联网 发布:网络群发软件 编辑:程序博客网 时间:2024/06/11 07:49
在排查网络问题的时候,ping是一个不可或缺的工具(比ping更不可或缺的是www.baidu.com...),在Cisco上,可以指定源IP地址去ping任意IP,但是在Linux上指定源IP地址却并不是那么直观。通过ping的manual,发现一个-I选项,可以从指定网卡发送出去数据包,我天真以为后面携带的那个IP地址就是指定的源IP地址了,其实并不是。

        通过抓包,发现-I选项后面可以跟一个IP地址列表,这指定了“源路由选项”,什么是源路由,请自行google。比如,如果我执行ping 1.1.1.2 -I eth2 1.1.1.1,数据包如下:




极其混乱,不是吗?目标地址在IP头里明明是1.1.1.2,但是却解析成了1.1.1.1。如果执行ping 1.1.1.2 -I eth1 1.1.1.2 10.2.2.4 2.2.2.2,抓包如下:




更加混乱...
        实际上,-I选项指定了源路由,Wireshark会把-I列表的最后一个IP地址解析成目标IP展示出来,但是数据包的IP头里的目标IP,可能并不是这个IP。这极其容易被误用,特别是对于初学者而言,特别容易搞出一些让人难以理解的问题,分析来分析去,原来是ping工具实现的不健全导致。Cisco的ping就非常好用,我个人的观点。

0 0
原创粉丝点击