ping容易忽略的10点用法和排查问题技巧
作者:CloudDeveloper 来源:公众号「Linux云计算网络」
ping 相信是很多人非常常用的命令,但究竟有多少人把它的动能发挥到最大了呢?今天就来看看你可能会忽略的一些功能,我不敢说使用了这些就能发挥 ping 的最大功能,大家有什么补充的,欢迎留言。
我们知道,ping 使用 ICMP 协议来诊断网络的连通性,这块具体就不多说了,我们直接来看用法。
用法1:指定发多少个包
ping -c 2 192.168.109.10
用法2:指定从哪个接口发包
ping -I eth1 192.168.109.10
一般 ping 本机其他接口的时候默认会走 lo 口,通过 -I 选项可以指定从哪个口 ping
用法3:控制每个包发的时间间隔(单位: s)
ping -i 1 192.168.109.10
用法4:控制每个包数据payload的大小
ping -s 32 192.168.109.10
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。
用法8:和 awk 命令结合
# 比如增加可读的时间戳
ping www.baidu.com | awk '{print $0 ' ' strftime('%Y-%m-%d %H:%M:%S',systime())}'
打印结果:
PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data. 2019-11-04 20:32:41
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=1 ttl=53 time=5.20 ms 2019-11-04 20:32:41
用法9:ping 多个地址
这个 ping 就无能为力了,我们上
fping
,fping
实现类似 ping,也是基于 ICMP 协议,这里我们只谈这个功能,关于 fping 更多用法我们后面再写文章介绍。
fping -c 2 10.1.1.2 10.1.1.3
# ping 一个区间的地址
fping -g 10.1.1.1 10.1.1.255
# 或者用 CIDR 的方式
fping -g 10.1.1.0/24
# 或者从文件中读取
fping --file=add.txt
用法10:设置 TTL,检查中间网络设备情况
这条硬凑的,10看起来比较完整点。。。
这个选项用法等于是 traceroute 的手工版
ping -t 1 baidu.com
OK,以上便是 ping 容易忽略的一些用法,当然还有更多用法,大家可以补充。
最后咱们来说说,
如何用 ping 来排查网络故障:
1. ping 本机环回地址127.0.0.1: 如果 ping 不通,说明本机 TCP/IP 协议栈 不能正常工作,请重新编译安装。如果通,继续排查第 2 步。
2. ping 本机对外的 IP 地址: 如果 ping 不通,说明本机的 网卡或网络适配器(Modem) 出现故障,如果通,继续排查第 3 步。
3. ping 本机的网关地址: ping 之前,需要先检查下网关路由器是否禁 ping,检查防火墙是否禁 ping,确定可 ping 的情况下,如果不通,说明 网线或者路由器 有问题,如果通,继续排查第 4 步。
4. ping Internet上任意网站(比如baidu.com): 如果 ping 不通,说明 DNS 设置有问题或 DNS 服务器 工作不正常,如果通,则说明网络良好。