← 返回首页
🔧

Linux网络故障排查

📂 devops ⏱ 2 min 291 words

Linux网络故障排查

故障排查思路

网络问题排查应遵循从底层到高层的顺序:

  1. 物理层(网线、网卡)
  2. 数据链路层(MAC地址)
  3. 网络层(IP地址、路由)
  4. 传输层(端口、连接)
  5. 应用层(DNS、服务)

基本诊断工具

网络连通性测试

# Ping测试
ping 8.8.8.8
ping -c 4 8.8.8.8

# Ping网关
ping 192.168.1.1

# Ping域名
ping google.com

路由跟踪

# 路由跟踪
traceroute 8.8.8.8
# Windows: tracert 8.8.8.8

# 显示域名
traceroute -n 8.8.8.8

DNS诊断

# DNS解析测试
nslookup google.com
dig google.com

# 指定DNS服务器
dig @8.8.8.8 google.com

# 查看本地DNS配置
cat /etc/resolv.conf

网络配置检查

查看网络接口

# 查看所有接口
ip addr show
# 或
ifconfig -a

# 查看特定接口
ip addr show eth0

# 查看接口状态
ip link show

查看路由表

# 查看路由表
ip route show
# 或
route -n

# 添加静态路由
ip route add 10.0.0.0/8 via 192.168.1.1

查看ARP缓存

# 查看ARP缓存
arp -n
ip neigh show

端口和服务检查

查看监听端口

# 查看监听的TCP端口
netstat -tulpn
ss -tulpn

# 查看特定端口
ss -tulpn | grep :80

检查服务状态

# 检查服务是否运行
systemctl status nginx
systemctl status mysql

# 检查端口是否可达
telnet 192.168.1.100 80
nc -zv 192.168.1.100 80

防火墙问题

检查防火墙规则

# iptables
iptables -L -n

# firewalld
firewall-cmd --list-all

# ufw(Ubuntu)
ufw status

测试防火墙

# 测试端口是否被阻止
telnet 192.168.1.100 22

# 使用nc测试
nc -zv 192.168.1.100 22

抓包分析

tcpdump

# 抓取所有流量
sudo tcpdump -i eth0

# 抓取特定端口
sudo tcpdump -i eth0 port 80

# 抓取特定主机
sudo tcpdump -i eth0 host 192.168.1.100

# 保存到文件
sudo tcpdump -i eth0 -w capture.pcap

# 读取文件
tcpdump -r capture.pcap

常见问题及解决

问题1:无法访问外网

# 检查步骤
ping 8.8.8.8          # 测试IP连通性
ping google.com       # 测试DNS解析
cat /etc/resolv.conf  # 检查DNS配置
ip route show         # 检查路由

问题2:服务无法访问

# 检查步骤
systemctl status service  # 服务是否运行
ss -tulpn | grep :PORT   # 端口是否监听
firewall-cmd --list-all   # 防火墙是否放行
curl http://localhost     # 本地测试

问题3:SSH连接慢

# 检查DNS反向解析
cat /etc/ssh/sshd_config
# 添加或修改
UseDNS no

# 重启SSH
systemctl restart sshd

实践:网络排查脚本

#!/bin/bash
echo "=== 网络诊断报告 ==="
echo ""
echo "--- 网络接口 ---"
ip addr show | grep -E "inet |state"
echo ""
echo "--- 路由表 ---"
ip route show
echo ""
echo "--- DNS配置 ---"
cat /etc/resolv.conf
echo ""
echo "--- 监听端口 ---"
ss -tulpn | head -10
echo ""
echo "--- 连通性测试 ---"
ping -c 2 8.8.8.8

总结

网络故障排查是运维工程师的核心技能。系统化的排查思路和熟练使用诊断工具,能够快速定位和解决网络问题。