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传统配置

总结排查流程:

  1. 物理连接IP配置路由验证
  2. 本地监听防火墙规则协议握手
  3. 抓包分析内核日志硬件诊断

建议配合使用 lnstat(网络层统计)、bpftrace(高级内核跟踪)等工具进行深度分析。对于容器环境,需额外检查 veth 设备、CNI插件和iptables的NAT规则。

posted @ 2025-03-19 20:08  天天向上327  阅读(391)  评论(0)    收藏  举报