linux ping 命令是运维最基础的网络排查工具,依靠 ICMP 协议发送探测数据包,测试本机和目标主机之间网络是否可达,同时可以查看往返延迟、丢包率,用来判断网络卡顿、断网、路由异常这类问题,很多新手容易误以为 ping 通就代表业务端口正常,这里要重点区分,ping 只测试 ICMP 连通,不代表 80 443 这类 TCP 端口可以访问,部分服务器会开启防火墙禁止 ICMP,这时候就算网络正常 ping 也会超时,Linux 版本的 ping 默认会持续不断发包,和 Windows 默认只发 4 个包不一样,需要手动按 Ctrl+C 停止,停止之后终端才会输出汇总统计信息,命令支持指定发包数量、发包间隔、包大小,适合不同场景的网络测试,下面分板块讲解语法、常用参数、输出字段、排错思路还有常见坑点。
基础语法
ping [参数] 目标地址
目标可以写域名,也可以直接写 IP 地址
基础示例
ping 192.168.1.1
ping
常用参数清单
-c 指定发送数据包的数量,测试完成自动停止,不需要手动 Ctrl+C
示例 ping -c 10
-i 设置两次发包之间的间隔秒数,默认是 1 秒
-s 指定 ICMP 数据包大小,单位字节,用来测试大报文是否丢包
-W 设置单次等待响应的超时时间,单位秒
-t 设置 TTL 值
-q 静默模式,只最后输出统计汇总,不打印每一行回显
-b 允许 ping 广播地址
输出每一行字段含义
icmp_seq 数据包序号,从 1 开始递增
ttl 生存时间,每经过一个路由节点减 1,可以粗略判断经过多少跳
time 往返延迟,单位毫秒,数值越小网络速度越快
停止之后汇总统计
packets transmitted 发送包数量
received 收到回复包数量
packet loss 丢包率
rtt min avg max mdev 最小延迟 平均延迟 最大延迟 抖动标准差
标准排查思路
第一步 ping 本机回环地址 ping 127.0.0.1,验证本机 TCP IP 协议栈是否正常
第二步 ping 网关 IP,测试局域网是否通畅
第三步 ping 公网 IP,测试外网出口是否正常
第四步 ping 域名,前面公网 IP 能通但是域名 ping 失败,代表 DNS 解析存在问题
ping 和其他网络工具对照表格
工具 协议 作用
ping ICMP 连通性 延迟 丢包测试
telnet TCP 测试端口连通
traceroute ICMP/UDP 追踪路由跳点
nslookup DNS 域名解析查询
高频易错点
Linux ping 默认持续发包,很多新手不知道要 Ctrl+C 终止,一直挂在前台
目标主机防火墙禁 ICMP,出现 Request timeout,不能直接判定主机离线
ping 通只代表三层网络可达,上层业务端口不一定开放,业务故障还要配合 telnet 或者 nc 测试端口
普通用户一般可以直接执行 ping,部分精简系统会限制 ICMP 权限,需要 root
大包测试的时候,-s 参数不要设置过大,超过 MTU 会触发分片,测试结果会失真
补充拓展
如果 ping 出现延迟忽高忽低,mdev 抖动数值很大,一般代表链路不稳定,可能是线路拥塞、无线干扰、交换机故障;如果出现丢包,优先排查网线、交换机、运营商链路,也有可能是目标服务器限速或者防火墙策略。
【常见问题】
问题 1 linuxping 命令详解 Linux 的 ping 为什么不会自动停止
回答 1 linuxping 命令详解里面,Linux 原生 ping 默认持续循环发包,需要按 Ctrl+C 终止,也可以加 - c 参数指定发包数量自动结束,这是 linuxping 命令详解和 Windows 版本最大区别。
问题 2 linuxping 命令详解 ping 通是不是代表网站可以访问
回答 2 linuxping 命令详解里面,ping 是 ICMP 三层连通测试,ping 通不代表 80 443 业务端口开放,网站仍然可能无法访问,这是 linuxping 命令详解高频误区。
问题 3 linuxping 命令详解 一直超时是什么原因
回答 3 linuxping 命令详解里面,超时原因有多种,目标离线、路由不通、防火墙拦截 ICMP 都有可能,不能直接认定主机故障,这是 linuxping 命令详解排错核心要点。
【免责申明】
本文基于 Linux 通用 iputils 包 ping 命令用法整理,不同发行版参数选项会有细微差别,测试请针对合法目标主机,不要对非授权主机发起大量 ping 探测,避免被认定为网络攻击。


