【linux】ping命令使用方法详解(mtu)

用法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字节符合预期

猜你喜欢

转载自blog.csdn.net/m0_45406092/article/details/134312096