一、排障前先准备常用工具

原始笔记里建议先安装下面这些工具:

yum install -y net-tools lsof nethogs iftop telnet nc nmap

它们分别覆盖的方向大致如下:

  • ss / netstat:看端口和连接
  • lsof:看端口对应的进程
  • telnet / nc:测试端口能否连通
  • nmap:扫描端口
  • iftop / nethogs:看流量
  • dig / host / nslookup:看 DNS
  • traceroute:看路径

二、先确认本机 IP、网关和路由

很多网络问题,一上来就查服务端口,其实容易走偏。先看本机地址和路由更稳。

ip a
ifconfig
ip ro
route -n

重点关注:

  • IP 是否正确
  • 掩码是否正确
  • 默认网关是否存在
  • 路由是否走对出口

三、检查端口是否真的在监听

3.1 推荐先用 ss

ss -lntup | grep 22
ss -lntu

参数含义:

  • -l:只看监听端口
  • -n:数字形式显示地址和端口
  • -t:只看 TCP
  • -u:只看 UDP
  • -p:显示进程信息

3.2 也可以用 netstat

netstat -lntup | grep -w 22

3.3 用 lsof 反查进程更直接

lsof -i :22
lsof -ni :22
lsof -nPi :22

如果要排查“22 端口到底是不是 sshd 在监听”,lsof -nPi :22 非常直观。

四、检查端口是否能从外部访问

服务监听不代表外部一定能访问,可能还有防火墙、ACL、云安全组或链路问题。

4.1 telnet

telnet 10.0.0.200 22

4.2 nc

nc -v 10.0.0.200 22

4.3 nmap

nmap -p22 10.0.0.200
nmap -p1-1024 10.0.0.200
nmap -p22 10.0.0.0/24 jd.com taobao.com

当你不在目标服务器本机,而是站在客户端侧排查时,这组命令尤其好用。

五、检查 TCP 连接状态和并发

5.1 查看当前 TCP 连接

ss -ant
netstat -ant

常见状态解释:

  • LISTEN:服务在监听
  • ESTABLISHED:连接已建立
  • TIME_WAIT:连接刚关闭,等待回收
  • CLOSE_WAIT:对端已关,本端未彻底释放

5.2 统计并发连接

原始笔记给出了一个很实用的思路:统计某个端口处于 ESTABLISHED 状态的连接数量。

ss -ant | awk 'NR>1 && $4~/:80$/ {print $1}' | sort | uniq -c

如果要做压力测试,也可以配合 ab 使用:

ab -n 90000000 -c 3 http://192.168.1.20/

实际工作里,你未必会真的发这么多请求,但这类命令能帮助你快速理解“并发数”和“当前连接状态”之间的关系。

六、检查网络带宽和流量来源

6.1 看网卡总体流量

iftop -nNP -i eth0

参数含义:

  • -n:不解析主机名
  • -N:不解析端口对应的服务名
  • -P:显示端口信息
  • -i eth0:指定网卡

它会显示 2s10s40s 的流量平均值,适合观察当前带宽是否被打满。

6.2 看进程级流量

nethogs eth0

如果想知道“到底是谁在吃带宽”,可以按照笔记里的思路组合使用:

1、iftop 找出高流量端口 2、ss 找出端口对应的 PID 3、ps 根据 PID 找出具体进程

七、DNS 解析排障

7.1 dig

dig baidu.com
dig +trace baidu.com
dig -x 8.8.8.8

7.2 host

host baidu.com

7.3 nslookup

nslookup baidu.com

如果域名不通但公网 IP 通,可以优先怀疑:

  • DNS 配置错了
  • /etc/resolv.conf 被覆盖了
  • 网卡配置里的 DNS1 / DNS2 不正确

八、追踪链路是否通畅

8.1 Windows 侧用 tracert

tracert -d www.baidu.com

常见参数:

  • -d:不做域名解析,只显示 IP
  • -h:指定最大跃点数
  • -w:设置超时时间

8.2 Linux 侧用 traceroute

traceroute -nI www.baidu.com

常见参数:

  • -n:不做名称解析
  • -I:使用 ICMP
  • -T:使用 TCP
  • -p:指定目标端口

当怀疑“本机能连网,但去目标站点中途绕路或卡在某一跳”时,路径追踪非常有帮助。

九、一个实用的排障顺序

遇到“网站打不开、端口不通、访问很慢”这类问题,可以按下面顺序排查:

1、看本机 IP、网关、路由。 2、看目标服务端口是否在监听。 3、看端口从客户端是否可访问。 4、看连接状态是不是异常堆积。 5、看带宽是否打满。 6、看 DNS 是否解析正确。 7、看路径追踪是否异常。

十、小结

网络命令不用一次全背下来,但至少要先熟练掌握下面这组:

  • ss
  • lsof
  • nc
  • nmap
  • iftop
  • dig
  • traceroute

这几类命令组合起来,已经足够覆盖大多数 Linux 网络故障的一线排查场景。