linux 系统 基础网络问题定位常用命令及流程

1. 基础连通性测试

ping – 网络连通性测试

功能: 使用ICMP协议测试网络连通性

ping google.com                    # 基础连通性测试
ping -c 4 -s 1000 google.com      # 发送4个1000字节的包
ping -i 0.2 192.168.1.1           # 每0.2秒发送一次
ping -f 192.168.1.1               # 洪水ping(需要root权限)
ping -W 2 192.168.1.1             # 设置超时时间2秒

默认参数: Linux下ping包大小默认为64字节
使用场景:

  • 基础网络连通性检查
  • 测试网络延迟和丢包率
  • 验证DNS解析是否正常

arping – ARP层ping测试

功能: 在数据链路层测试主机连通性

arping -c 3 192.168.1.1           # 发送3个ARP请求
arping -I eth0 192.168.1.1        # 指定网络接口
arping -D 192.168.1.100           # 检测IP地址冲突
arping -U -I eth0 192.168.1.50    # 发送无偿ARP

使用场景:

  • 检测同网段主机存活(绕过防火墙)
  • 检测IP地址冲突
  • 更新ARP缓存表

2. 路由信息查看

route – 路由表管理

功能: 显示和操作内核路由表

route -n                          # 显示路由表(数字格式)
route -A inet6                    # 显示IPv6路由表
route add default gw 192.168.1.1  # 添加默认网关
route del -net 192.168.2.0/24     # 删除路由

ip route – 现代路由管理工具

功能: 显示和操作路由信息

ip route show                     # 显示路由表
ip route get 8.8.8.8             # 获取到达指定IP的路由信息
ip route add 192.168.2.0/24 via 192.168.1.1  # 添加路由
ip route flush cache             # 清空路由缓存

使用场景:

  • 查看系统路由配置
  • 追踪数据包路径
  • 诊断路由问题

3. 网络接口查看

系统网卡查看命令

# 查看系统网卡设备
ll /sys/class/net/
ls /sys/class/net/

# 查看PCI网卡设备
lspci | grep -i ethernet
lspci | grep -i network
lspci -v | grep -i ethernet

# 查看网卡详细信息
ethtool eth0                      # 查看网卡参数
ethtool -i eth0                   # 查看网卡驱动信息
ethtool -S eth0                   # 查看网卡统计信息

网卡状态和配置

# 查看网卡状态
ip link show
cat /sys/class/net/eth0/operstate

# 查看网卡速率
cat /sys/class/net/eth0/speed
ethtool eth0 | grep Speed

4. 网卡绑定(Bond)相关

Bond模式查看

# 查看bond模式
cat /sys/class/net/bond0/bonding/mode

# 查看bond状态
cat /proc/net/bonding/bond0

# 查看bond成员接口
cat /sys/class/net/bond0/bonding/slaves

# 查看bond其他配置
cat /sys/class/net/bond0/bonding/miimon      # 监控间隔
cat /sys/class/net/bond0/bonding/updelay     # 激活延迟
cat /sys/class/net/bond0/bonding/downdelay   # 停用延迟

Bond模式说明:

  • mode=0 (balance-rr): 轮询策略
  • mode=1 (active-backup): 主备策略
  • mode=2 (balance-xor): XOR策略
  • mode=3 (broadcast): 广播策略
  • mode=4 (802.3ad): IEEE 802.3ad动态链路聚合
  • mode=5 (balance-tlb): 传输负载均衡
  • mode=6 (balance-alb): 自适应负载均衡

5. 网络协议栈统计

netstat -s – 协议统计

功能: 查看各网络协议栈统计信息

netstat -s                        # 显示所有协议统计
netstat -s --tcp                  # 只显示TCP统计
netstat -s --udp                  # 只显示UDP统计
netstat -s --icmp                 # 只显示ICMP统计

UDP丢包分析重点字段

# 重点关注的UDP统计字段:
netstat -s --udp | grep -E "(packet receive errors|receive buffer errors|InErrors)"

# 查看详细的UDP统计
cat /proc/net/snmp | grep Udp
cat /proc/net/udp_stats

关键指标解析:

  • packet receive errors: 接收错误包总数(持续增长表明有丢包)
  • receive buffer errors: 接收缓冲区满导致的丢包
  • InErrors: 接收到的错误数据包
  • NoPorts: 目标端口无进程监听的包数量
  • InCsumErrors: 校验和错误的包数量

6. 网络丢包深度分析

系统级丢包统计

# 查看网络接口丢包统计
cat /proc/net/dev
ip -s link show

# 查看各层丢包情况
ss -s                            # socket统计
cat /proc/net/softnet_stat       # 软中断统计

丢包类型分析

# 硬件层丢包
ethtool -S eth0 | grep -E "(drop|error|crc)"

# 内核层丢包
cat /proc/net/softnet_stat       # 各CPU的网络软中断统计

# 应用层丢包
ss -u -a                        # 查看UDP socket状态

7. 网络性能和流量分析

网络流量监控

# 实时流量监控
iftop -i eth0                    # 实时连接流量
nload eth0                       # 实时接口流量
vnstat -i eth0                   # 历史流量统计

# 详细流量统计
cat /proc/net/dev               # 接口流量统计

连接状态分析

# TCP连接状态统计
ss -s
netstat -an | awk '/^tcp/ {print $6}' | sort | uniq -c

# 连接数统计
ss -tan | wc -l                 # 总TCP连接数
ss -tun | wc -l                 # 总UDP连接数

8. 高级网络诊断

数据包捕获和分析

# 基础抓包
tcpdump -i eth0 -n              # 指定接口抓包
tcpdump -i any host 192.168.1.1 # 抓取指定主机流量
tcpdump -i eth0 port 80 -w http.pcap  # 抓取HTTP流量并保存

# 高级过滤
tcpdump -i eth0 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0'  # 抓取连接建立/断开

网络延迟和质量测试

# 高级ping测试
fping -a -g 192.168.1.0/24      # 批量ping网段
hping3 -S -p 80 google.com      # TCP SYN ping

# 网络质量测试
mtr google.com                   # 结合ping和traceroute

9. 网络安全和防火墙

防火墙状态检查

# iptables
iptables -L -n -v               # 详细规则列表
iptables -t nat -L -n -v        # NAT表规则
iptables -t mangle -L -n -v     # mangle表规则

# firewalld (CentOS/RHEL)
firewall-cmd --state            # 防火墙状态
firewall-cmd --list-all-zones   # 所有zone配置
firewall-cmd --get-active-zones # 活动zone

# ufw (Ubuntu)
ufw status verbose              # 详细状态

10. 网络问题排查清单

系统性排查步骤

  1. 物理层检查
   ethtool eth0                 # 网卡状态
   dmesg | grep -i eth          # 网卡相关内核消息
  1. 数据链路层检查
   ip link show                 # 接口状态
   arping -c 3 gateway_ip      # ARP层连通性
  1. 网络层检查
   ip route show               # 路由表
   ping gateway_ip             # 网关连通性
  1. 传输层检查
   ss -tuln                    # 监听端口
   netstat -s                  # 协议统计
  1. 应用层检查
   telnet target_ip port       # 端口连通性
   curl -I http://target       # HTTP服务检查

常见问题诊断命令组合

# 网络丢包问题
netstat -s --udp | grep -i error
ethtool -S eth0 | grep drop
cat /proc/net/softnet_stat

# 连接超时问题
ss -o state established        # 查看连接超时设置
tcpdump -i eth0 host target_ip # 抓包分析

# 网络性能问题
iperf3 -c server_ip            # 带宽测试
iftop -i eth0                  # 实时流量监控

本文版权归原作者zhaofujian所有,采用 CC BY-NC-ND 4.0 协议进行许可,转载请注明出处。

发表评论