网络问题一般按这条顺序查:
- 先看本机配置
- IP、子网掩码、网关、网卡状态
- 看 DNS 是否正常
- 域名能不能解析成 IP
- 看主机是否可达
- 能不能到目标机器
- 看端口是否可达
- 某个服务端口开没开
- 看应用层是否正常
- HTTP/HTTPS/接口是否真能用
- 看链路卡在哪
- 哪一跳有延迟、丢包或中断
- 看本机监听和连接状态
- 服务是否启动、端口是否监听
- 必要时抓包
- 看数据到底有没有发出、有没有回来
二、常用命令总表
1. 查看本机 IP、网卡、地址配置
ip addr
查什么:
- 本机网卡
- IP 地址
- 网卡是否 UP
- 是否拿到地址
适合排查:
- 本机有没有 IP
- 网卡是否启用
- 是否在正确网段
示例:
ip addr
ifconfig
查什么:
- 和
ip addr类似,查看网卡和 IP - 老系统常见
适合排查:
- 老环境下看网卡状态
示例:
ifconfig
2. 查看路由和网关
ip route
查什么:
- 路由表
- 默认网关
- 到某网段走哪个网卡
适合排查:
- 网关是否正确
- 路由是否缺失
- 流量走向是否正常
示例:
ip route
route -n
查什么:
- 路由表
- 默认路由
适合排查:
- 老系统查看路由
示例:
route -n
3. 查看 DNS 解析
nslookup
查什么:
- 域名能否解析
- 域名对应的 IP
- 使用的是哪个 DNS 服务器
适合排查:
- 域名是否存在
- DNS 是否工作正常
示例:
nslookup example.com
dig
查什么:
- 更详细的 DNS 信息
- A/AAAA/CNAME/MX 等记录
- DNS 响应详情
适合排查:
- 精确分析 DNS 问题
- 查解析链路和记录类型
示例:
dig example.com
dig example.com A
dig example.com MX
host
查什么:
- 快速查域名解析结果
适合排查:
- 简单 DNS 验证
示例:
host example.com
4. 测试主机是否可达
ping
查什么:
- 目标主机是否可达
- 延迟
- 丢包率
适合排查:
- 网络是否基本通
- 主机是否在线
- 链路是否稳定
示例:
ping 8.8.8.8
ping example.com
注意:
ping不通不一定代表主机挂了,可能只是禁了 ICMP
5. 测试端口是否可达
telnet
查什么:
- 某个 TCP 端口能否建立连接
适合排查:
- 服务端口是否开放
- 防火墙是否拦截
- 服务是否监听
示例:
telnet example.com 80
telnet 192.168.1.10 22
nc / netcat
查什么:
- TCP/UDP 端口连通性
- 比
telnet更灵活
适合排查:
- 端口是否开放
- 某服务能不能连上
示例:
nc -zv example.com 443
nc -zv 192.168.1.10 3306
6. 测试应用层服务是否正常
curl
查什么:
- HTTP/HTTPS 服务是否正常
- 返回码、响应头、重定向、证书
适合排查:
- 网站能否访问
- API 是否正常
- HTTPS 是否有证书问题
- 端口虽通但应用是否真的可用
示例:
curl -I https://example.com
curl -v https://example.com
curl http://127.0.0.1:8080/health
wget
查什么:
- 下载资源是否成功
- HTTP/HTTPS 访问情况
适合排查:
- URL 可访问性
- 文件下载通不通
示例:
wget https://example.com/file.txt
7. 查链路路径和故障位置
traceroute
查什么:
- 到目标主机经过哪些跳
- 卡在哪一跳
适合排查:
- 路由中断
- 中间链路问题
- 是本地问题还是运营商/对端问题
示例:
traceroute example.com
mtr
查什么:
- 路径 + 每一跳延迟 + 丢包率
- 相当于
ping和traceroute结合
适合排查:
- 哪一跳丢包
- 哪一跳延迟高
- 网络不稳定问题
示例:
mtr example.com
mtr -rw example.com
8. 查看端口监听和连接状态
ss
查什么:
- 当前监听端口
- 已建立连接
- 哪个进程占用哪个端口
适合排查:
- 服务有没有启动
- 端口是否在监听
- 当前网络连接情况
示例:
ss -lnt
ss -ant
ss -lntp
netstat
查什么:
- 和
ss类似 - 监听端口、连接状态、路由等
适合排查:
- 老环境查看端口和连接
示例:
netstat -lnt
netstat -ant
netstat -tunlp
lsof -i
查什么:
- 哪个进程打开了哪些网络端口
适合排查:
- 某个端口被谁占用
- 某个服务是否在监听
示例:
lsof -i :80
lsof -iTCP -sTCP:LISTEN
9. 查看邻居、ARP、二层信息
ip neigh
查什么:
- ARP 邻居表
- IP 对应的 MAC 地址
适合排查:
- 局域网通信问题
- 网关是否可达
- ARP 是否正常学习
示例:
ip neigh
arp -n
查什么:
- ARP 缓存表
适合排查:
- 同网段设备通信问题
示例:
arp -n
10. 查看网卡统计和链路状态
ethtool
查什么:
- 网卡速率
- 双工模式
- Link 是否 up
- 驱动信息
适合排查:
- 网卡物理链路问题
- 网线/交换机口问题
- 速率协商异常
示例:
ethtool eth0
ip -s link
查什么:
- 网卡收发包统计
- 错包、丢包、碰撞等
适合排查:
- 网卡异常
- 丢包是否发生在本机网卡层面
示例:
ip -s link
11. 查看 DNS 配置文件
cat /etc/resolv.conf
查什么:
- 本机 DNS 服务器配置
适合排查:
- DNS 指向错了
- 没配置 DNS
示例:
cat /etc/resolv.conf
cat /etc/hosts
查什么:
- 本地 hosts 静态解析
适合排查:
- 域名被本地错误映射
- 为什么解析结果和 DNS 不一致
示例:
cat /etc/hosts
12. 抓包分析
tcpdump
查什么:
- 数据包有没有发出去
- 有没有回应
- 三次握手是否成功
- DNS 查询、HTTP 请求、RST、重传等
适合排查:
- 高级网络问题
- 服务连接失败原因
- 防火墙/重传/超时分析
示例:
tcpdump -i eth0 host 1.1.1.1
tcpdump -i eth0 port 80
tcpdump -i any tcp port 443
Wireshark
查什么:
- 图形化抓包分析
适合排查:
- 复杂协议问题
- 详细分析 TCP/HTTP/TLS
13. 查看防火墙规则
iptables -L -n
查什么:
- Linux 防火墙规则
适合排查:
- 为什么端口不通
- 为什么包被拦截
示例:
iptables -L -n
firewall-cmd --list-all
查什么:
- firewalld 配置
适合排查:
- 端口是否已放行
示例:
firewall-cmd --list-all
ufw status
查什么:
- Ubuntu 常见防火墙状态
适合排查:
- 端口是否被 UFW 拦截
示例:
ufw status
14. 查看服务是否启动
systemctl status 服务名
查什么:
- 服务是否运行
- 启动是否失败
适合排查:
- 端口不通到底是网络问题还是服务没启动
示例:
systemctl status nginx
systemctl status sshd
三、命令之间的关系
可以这样理解:
| 命令 | 主要查询目标 |
|---|---|
ip addr |
本机 IP、网卡状态 |
ip route |
默认网关、路由 |
nslookup / dig |
DNS 解析 |
ping |
主机可达性 |
telnet / nc |
端口连通性 |
curl |
应用层服务是否正常 |
traceroute / mtr |
路径、故障点、丢包延迟 |
ss / netstat |
本机监听和连接状态 |
lsof -i |
端口对应进程 |
ip neigh / arp |
局域网 ARP 邻居 |
ethtool |
网卡物理链路状态 |
tcpdump |
数据包实际收发情况 |
iptables / firewall-cmd |
防火墙规则 |
四、按问题类型来查
1. 域名访问失败
先查:
nslookup example.com
dig example.com
cat /etc/resolv.conf
cat /etc/hosts
目标:
- 看是不是 DNS 问题
- 看是不是本地 hosts 写错了
2. 主机不通
先查:
ping 目标IP
traceroute 目标IP
mtr 目标IP
目标:
- 主机是否在线
- 卡在哪一段链路
3. 某个端口不通
先查:
nc -zv 目标IP 端口
telnet 目标IP 端口
ss -lnt
iptables -L -n
目标:
- 端口是否开放
- 服务是否监听
- 防火墙是否阻断
4. 网站打不开 / 接口异常
先查:
curl -v https://example.com
nc -zv example.com 443
dig example.com
目标:
- 是 DNS 问题
- 还是 TCP 端口问题
- 还是 HTTPS / HTTP 应用问题
5. 本机网络配置异常
先查:
ip addr
ip route
ip neigh
ethtool eth0
目标:
- 本机 IP、网关是否正确
- 网卡链路是否正常
- 是否能找到网关 MAC
6. 怀疑包没出去或没回来
查:
tcpdump -i any host 目标IP
目标:
- 请求有没有发出
- 响应有没有回来
- 被谁 reset / timeout
五、一个实用的最小排障模板
如果你遇到“访问某个服务失败”,可以按这个顺序:
1. 看本机配置
ip addr
ip route
2. 看 DNS
nslookup example.com
dig example.com
3. 看主机通不通
ping example.com
4. 看端口通不通
nc -zv example.com 443
5. 看应用是否正常
curl -v https://example.com
6. 看链路卡在哪
mtr example.com
7. 看本机监听/防火墙
ss -lntp
iptables -L -n
8. 必要时抓包
tcpdump -i any host example.com
六、最简总结版
如果只记核心的,记这几个就够了:
| 命令 | 方法 | 查询目标 |
|---|---|---|
ip addr |
看本机配置 | IP、网卡状态 |
ip route |
看路由 | 网关、路由表 |
nslookup / dig |
查 DNS | 域名是否能解析 |
ping |
测可达性 | 主机是否能到 |
telnet / nc |
测端口 | 端口是否开放 |
curl |
测应用 | HTTP/HTTPS 是否正常 |
traceroute / mtr |
查路径 | 问题卡在哪一跳 |
ss / netstat |
看监听 | 服务端口是否启动 |
tcpdump |
抓包 | 包有没有发/回 |
iptables |
看防火墙 | 是否被规则拦截 |
如果你愿意,我可以下一步直接帮你整理成一份更方便背的:
- 面试版网络排障口诀
- Linux 网络命令速查表
- 按场景分类:DNS 问题 / 端口问题 / HTTP 问题 / 路由问题