红联Linux门户
Linux帮助

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

发布时间:2016-12-14 09:37:06来源:dog250作者:Bomb250
在排查网络问题的时候,ping是一个不可或缺的工具(比ping更不可或缺的是www.baidu.com...),在Cisco上,可以指定源IP地址去ping任意IP,但是在Linux上指定源IP地址却并不是那么直观。通过ping的manual,发现一个-I选项,可以从指定网卡发送出去数据包,我天真以为后面携带的那个IP地址就是指定的源IP地址了,其实并不是。
 
通过抓包,发现-I选项后面可以跟一个IP地址列表,这指定了“源路由选项”,什么是源路由,请自行搜索。比如,如果我执行ping 1.1.1.2 -I eth2 1.1.1.1,数据包如下:
关于ping命令的-I选项的一个问题
极其混乱,不是吗?目标地址在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,抓包如下:
关于ping命令的-I选项的一个问题
更加混乱。
 
实际上,-I选项指定了源路由,Wireshark会把-I列表的最后一个IP地址解析成目标IP展示出来,但是数据包的IP头里的目标IP,可能并不是这个IP。这极其容易被误用,特别是对于初学者而言,特别容易搞出一些让人难以理解的问题,分析来分析去,原来是ping工具实现的不健全导致。Cisco的ping就非常好用,我个人的观点。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/26879.html