用法1:指定发的次数
ping -c 2 192.168.109.1
默认是无限制的,就会一直ping
用法2:指定从哪个接口发包
ping -I eth1 192.168.109.1
一般 ping 本机其他接口的时候默认会走 lo 口,通过 -I 选项可以指定从哪个口 ping
用法3:控制每个包发的时间间隔(单位: s)
ping -i 1 192.168.109.1
用法4:控制每个包数据payload的大小
ping -s 32 192.168.109.1
Linux平台上默认每个包的 payload 是56,最大是 65507,Windows默认是 32,最大是 65500,Windows平台所用参数是 -l。
用法5:ping ipv6地址
ping -6::1# 或者ping6 ::1
Linux平台可以使用 ping-6 或者 ping6,Windows 平台可以直接使用 ping。
用法6:泛洪快速 ping 压测目标主机
ping -f 192.168.10.2
-f 选项一次可以 ping 100packets/s,一般这个选项用来配合 -s 大包来压测服务器,但是这种做法比较危险,要注意。
用法7:设置路径MTU分片策略
ping -M do/want/dont -s 1472 192.168.10.2
-M选项通常和 -s 选项结合测试 IP 包的分片情况,do: 禁止分片,即使包被丢弃;want:当包过大时本地分片,dont:不设置分片标志位 DF。
如果超出网卡的mtu值且禁止分片,会提示单个包的大小超过上限的错误
,下面来演示下:
主机设置MTU: ip link set p4p2(interface) mtu 1500 或者 ifconfig p4p2 mtu 1500
这里略去交换机设置MTU,因为命令随厂商的不同而不同,请参考手册。
检测:ping -M do -c 4 -s 8972 192.168.X.Y
故意发出8972字节+8字节ICMP头部的包。-M do是关键,不允许分片。
此时报错信息是:ping: local error: Message too long, mtu=1500
假如设置MTU: ip link set p4p2 mtu 9000
那么运行 ping -M do -c 4 -s 8972 192.168.X.Y 的结果是
8980 bytes from 192.168.X.Y: icmp_seq=1 ttl=64 time=0.104 ms
收到8980字节符合预期