linux排查网络
一、基础连接检查
# 1. 物理连接验证
ip link show # 查看网卡状态(注意"LOWER_UP"表示物理连接正常)
ethtool eth0 # 检查网卡协商速率(Speed/Duplex)
mii-tool eth0 # 快速检测物理层状态(旧版网卡)
# 2. IP地址配置检查
ip -4 addr show # 显示IPv4地址(比ifconfig更推荐)
ip route show # 查看路由表
nmcli device status # NetworkManager管理的设备状态
# 3. 基础连通性测试
ping -c4 8.8.8.8 # ICMP测试(无响应可能是防火墙拦截)
ping -I eth0 8.8.8.8 # 指定出口网卡测试
arp -n # 检查ARP缓存
二、网络层深入排查
# 1. 路由追踪
traceroute -n 8.8.8.8 # 传统路由跟踪
mtr -n 8.8.8.8 # 实时路由质量监测(推荐)
tracepath 8.8.8.8 # 无特权用户可用
# 2. 防火墙检查
nft list ruleset # nftables规则查看
iptables -L -n -v --line-numbers # 传统iptables检查
ss -tulnp # 查看监听端口与进程对应关系
# 3. 数据包捕获
tcpdump -i eth0 -nn 'host 8.8.8.8' -w capture.pcap # 原始抓包
tshark -i eth0 -f 'tcp port 80' # Wireshark命令行版实时分析
三、传输层/应用层检查
# 1. 端口连通性测试
nc -zv 192.168.1.1 22 # TCP端口扫描
nc -zuv 8.8.8.8 53 # UDP端口测试
telnet 192.168.1.1 80 # 交互式协议测试(HTTP等)
# 2. DNS解析验证
dig +short google.com # 精确DNS解析测试
dig +trace google.com # 完整DNS解析路径追踪
nslookup -debug google.com # 传统调试方式
# 3. 协议级调试
curl -vI https://example.com # HTTP/HTTPS详细请求分析
openssl s_client -connect example.com:443 -servername example.com # TLS握手测试
ssh -vvv user@host # SSH连接详细日志
四、高级诊断工具
# 1. 网络质量评估
iperf3 -c 192.168.1.100 # 带宽测试(需服务端)
nping --tcp -p 80 --flags syn example.com # 高级ping工具
# 2. 连接状态分析
ss -s # 全局socket统计
conntrack -L # 查看NAT连接跟踪表
cat /proc/net/tcp # 原始TCP连接信息
# 3. 内核参数检查
sysctl -a | grep net.ipv4 # 查看网络相关内核参数
dmesg | grep -i 'network\|eth0' # 检查内核日志中的网络事件
五、典型问题处理方案
场景1:服务器无法访问外网
# 检查顺序:
1. ip route show default # 确认默认网关存在
2. ping 8.8.8.8
3. curl -I https://google.com # 区分DNS问题
4. journalctl -u NetworkManager --since "10 minutes ago"
5. nft list ruleset | grep 'drop\|reject'
场景2:特定端口不通
# 排查流程:
1. ss -tlnp | grep :80 # 本地是否监听
2. nc -zv 127.0.0.1 80 # 本机测试
3. iptables -L -n -v # 防火墙规则
4. cat /proc/sys/net/ipv4/ip_forward # 路由转发是否开启
5. tcpdump -i eth0 'port 80' # 观察入站请求
场景3:间歇性网络抖动
# 诊断方法:
1. mtr -c 100 -n 8.8.8.8 # 持续路由跟踪
2. ethtool -S eth0 | grep 'err\|drop' # 网卡错误统计
3. sar -n DEV 1 10 # 实时流量监控
4. tc -s qdisc show dev eth0 # 流量控制队列
六、网络配置文件速查
# 关键配置文件路径:
/etc/resolv.conf # DNS服务器配置
/etc/hosts # 本地域名解析
/etc/sysconfig/network-scripts/ifcfg-eth0 # RHEL系网卡配置
/etc/netplan/01-netcfg.yaml # Ubuntu 18+网络配置
/etc/network/interfaces # Debian传统配置
总结排查流程:
- 物理连接 → IP配置 → 路由验证
- 本地监听 → 防火墙规则 → 协议握手
- 抓包分析 → 内核日志 → 硬件诊断
建议配合使用 lnstat
(网络层统计)、bpftrace
(高级内核跟踪)等工具进行深度分析。对于容器环境,需额外检查 veth
设备、CNI插件和iptables的NAT规则。
前事不忘,后事之师