搞网络运维,图形界面看着舒服,但真到排查问题的时候,还是得靠命令行。速度快、资源少、自动化方便,尤其是远程连上一台服务器,黑乎乎的终端一开,几条命令下去,问题立马现形。下面这几个命令行网络工具,都是日常高频使用的,实用又靠谱。
ping:最基础的连通性检测
检查网络通不通,第一反应就是 ping。比如你家宽带突然上不了网,先 ping 一下网关,再 ping 百度,看看是内网问题还是外网断了。
ping www.baidu.com
如果丢包严重或者超时,基本就能判断链路有问题。加个 -c 4 参数可以限制发4个包就停,避免一直刷屏。
curl:查看服务响应的利器
想看某个接口能不能访问,返回什么内容,curl 比浏览器更直接。比如测试一个 API 是否正常返回 JSON:
curl -s http://api.example.com/status | jq .
加上 -s 静默输出,配合 jq 格式化 JSON,清晰明了。还能测 HTTPS、带 Header、传 Cookie,功能非常灵活。
netstat 和 ss:查端口占用和连接状态
服务起不来?可能是端口被占了。老工具 netstat 还能用,但推荐换 ss,更快更现代。
ss -tulnp | grep :80
这条命令查所有监听 80 端口的进程,谁在用一目了然。线上服务端口冲突,十次有八次靠它定位。
tcpdump:抓包分析网络流量
遇到诡异问题,比如请求发出去没回包,就得抓包看真相。tcpdump 能直接抓网卡数据,虽然输出是二进制流,但结合过滤规则很高效。
tcpdump -i eth0 port 443 -n -c 10
抓 eth0 网卡上 443 端口的前10个包,不解析主机名,快速定位是否 TLS 握手失败。配合 Wireshark 导出文件分析也行。
dig:DNS 问题全靠它
网站打不开,有时候不是网络问题,而是 DNS 解析失败。dig 比 nslookup 更详细,适合查权威记录。
dig @8.8.8.8 example.com A +short
指定用 Google 的 DNS 查询 A 记录,+short 只显示结果。切换不同 DNS 服务器对比结果,轻松判断是不是本地解析出问题。
wget:稳定下载文件
要从远程服务器拉配置文件或日志包,wget 支持断点续传,比浏览器下载稳得多。
wget -c https://example.com/big-log.tar.gz
网络不稳定也不怕,-c 参数让它接着下。还能递归下载整个目录,适合备份静态站点。
nc(netcat):网络调试的瑞士军刀
测试端口通不通,不用写脚本,nc 几秒搞定。
nc -zv 192.168.1.100 22
检测目标机器 22 端口是否开放,-z 表示只扫描不传数据,-v 显示详细信息。还能当简易聊天工具,两个终端之间传消息,调试内网通信很方便。
这些工具看起来简单,但组合起来威力不小。熟练掌握之后,查问题不再依赖别人,自己动手几分钟就能出结果。运维这活儿,拼的就是反应快、下手准,工具用熟了,自然就稳了。