网络分析Skill NetworkAnalysis

网络分析技能用于从Linux系统的sosreport存档中提取和分析网络配置数据,包括接口配置、路由表、活动连接、防火墙规则和DNS设置,以诊断网络连通性和配置问题,适用于运维、故障排除和网络安全评估。关键词:网络分析、sosreport、Linux网络配置、故障排除、网络安全、运维工具。

安全运维 0 次安装 2 次浏览 更新于 3/14/2026

名称: 网络分析 描述: 从sosreport存档分析网络配置数据,提取接口配置、路由表、活动连接、防火墙规则(firewalld/iptables)和DNS设置,基于sosreport目录结构诊断网络连通性和配置问题

网络分析技能

该技能提供从sosreport存档分析网络配置和连通性的详细指南,包括接口、路由、防火墙规则和DNS配置。

何时使用此技能

使用此技能当:

  • 分析/sosreport:analyze命令的网络分析阶段
  • 调查网络连通性问题
  • 诊断防火墙或路由问题
  • 验证网络配置

先决条件

  • Sosreport存档必须解压到工作目录
  • 必须知道sosreport根目录的路径
  • 理解Linux网络概念

Sosreport中的关键网络数据位置

  1. 网络接口

    • sos_commands/networking/ip_-o_addr - IP地址
    • sos_commands/networking/ip_link - 链接状态
    • sos_commands/networking/ip_-s_link - 带错误的链接统计
    • etc/sysconfig/network-scripts/ - 网络配置文件(RHEL)
  2. 路由

    • sos_commands/networking/ip_route - 路由表
    • sos_commands/networking/ip_-6_route - IPv6路由表
    • proc/net/route - 内核路由表
  3. 网络连接

    • sos_commands/networking/netstat_-neopa - 活动连接
    • sos_commands/networking/ss_-tupna - 套接字统计
    • proc/net/tcp - TCP连接
    • proc/net/udp - UDP连接
  4. 防火墙

    • sos_commands/firewalld/ - Firewalld配置
    • sos_commands/iptables/iptables_-vnxL - iptables规则
    • sos_commands/nftables/ - nftables配置
  5. DNS和解析

    • etc/resolv.conf - DNS服务器
    • etc/hosts - 静态主机名映射
    • etc/nsswitch.conf - 名称解析顺序
  6. 网络服务

    • sos_commands/networking/networkmanager_info - NetworkManager状态
    • systemctl status NetworkManager 输出

实施步骤

步骤 1: 分析网络接口

  1. 列出所有网络接口

    if [ -f sos_commands/networking/ip_-o_addr ]; then
      cat sos_commands/networking/ip_-o_addr
    fi
    
  2. 检查接口状态

    if [ -f sos_commands/networking/ip_link ]; then
      # 查找接口状态(UP/DOWN)
      grep -E "^[0-9]+:" sos_commands/networking/ip_link
    fi
    
  3. 解析接口信息

    • 接口名称(eth0, ens192等)
    • 状态(UP/DOWN)
    • IP地址(IPv4和IPv6)
    • MAC地址
    • MTU大小
  4. 检查接口错误

    if [ -f sos_commands/networking/ip_-s_link ]; then
      # 查找RX/TX错误、丢包、超限
      cat sos_commands/networking/ip_-s_link
    fi
    
  5. 识别接口问题

    • 无IP地址的接口(当预期有时)
    • 处于DOWN状态的接口(当应为UP时)
    • 高错误计数(RX/TX错误、丢包)
    • 重复IP地址
    • MTU不匹配

步骤 2: 分析路由配置

  1. 检查默认路由

    if [ -f sos_commands/networking/ip_route ]; then
      grep "^default" sos_commands/networking/ip_route || echo "未找到默认路由"
    fi
    
  2. 审查路由表

    if [ -f sos_commands/networking/ip_route ]; then
      cat sos_commands/networking/ip_route
    fi
    
  3. 检查IPv6路由

    if [ -f sos_commands/networking/ip_-6_route ]; then
      cat sos_commands/networking/ip_-6_route
    fi
    
  4. 识别路由问题

    • 缺少默认路由
    • 多个默认路由(冲突)
    • 错误的网关地址
    • 无处可去的路由(不可达网关)

步骤 3: 分析网络连通性

  1. 检查活动连接

    if [ -f sos_commands/networking/netstat_-neopa ]; then
      cat sos_commands/networking/netstat_-neopa
    elif [ -f sos_commands/networking/ss_-tupna ]; then
      cat sos_commands/networking/ss_-tupna
    fi
    
  2. 按状态统计连接

    # 统计TCP连接状态
    if [ -f sos_commands/networking/netstat_-neopa ]; then
      grep "^tcp" sos_commands/networking/netstat_-neopa | awk '{print $6}' | sort | uniq -c
    fi
    
  3. 查找监听服务

    # 显示监听端口
    if [ -f sos_commands/networking/netstat_-neopa ]; then
      grep "LISTEN" sos_commands/networking/netstat_-neopa
    fi
    
  4. 检查连接问题

    • 过多的TIME_WAIT连接
    • 许多SYN_SENT连接(连接尝试失败)
    • 高数量的CLOSE_WAIT(应用未关闭)
    • 端口冲突(多个服务在同一端口)

步骤 4: 分析防火墙配置

  1. 检查firewalld是否活动

    if [ -d sos_commands/firewalld ]; then
      # Firewalld存在
      if [ -f sos_commands/firewalld/firewall-cmd_--list-all-zones ]; then
        cat sos_commands/firewalld/firewall-cmd_--list-all-zones
      fi
    fi
    
  2. 审查iptables规则

    if [ -f sos_commands/iptables/iptables_-vnxL ]; then
      cat sos_commands/iptables/iptables_-vnxL
    fi
    
  3. 检查防火墙区域和规则

    • 活动区域
    • 允许的服务
    • 允许的端口
    • 富规则
    • 丢弃/拒绝策略
  4. 识别防火墙问题

    • 所需端口被阻止
    • 过于宽松的规则(任意接受)
    • 冲突规则
    • 服务缺少规则

步骤 5: 分析DNS配置

  1. 检查DNS服务器

    if [ -f etc/resolv.conf ]; then
      cat etc/resolv.conf
    fi
    
  2. 审查/etc/hosts

    if [ -f etc/hosts ]; then
      # 显示非注释、非空行
      grep -v "^#\|^$" etc/hosts
    fi
    
  3. 检查主机名解析

    # 检查主机名
    if [ -f hostname ]; then
      cat hostname
    fi
    
    # 检查FQDN
    if [ -f etc/hostname ]; then
      cat etc/hostname
    fi
    
  4. 验证nsswitch配置

    if [ -f etc/nsswitch.conf ]; then
      grep "^hosts:" etc/nsswitch.conf
    fi
    
  5. 识别DNS问题

    • 未配置DNS服务器
    • 不可达DNS服务器(在日志中检查连通性)
    • 错误的搜索域
    • 日志中的主机名解析失败

步骤 6: 检查日志中的网络错误

  1. 查找网络相关错误

    # 连接拒绝错误
    grep -i "connection refused" sos_commands/logs/journalctl_--no-pager 2>/dev/null | head -20
    
    # 超时错误
    grep -i "timeout\|timed out" sos_commands/logs/journalctl_--no-pager 2>/dev/null | head -20
    
    # 网络不可达
    grep -i "network.*unreachable\|no route to host" sos_commands/logs/journalctl_--no-pager 2>/dev/null | head -20
    
    # DNS解析失败
    grep -i "could not resolve\|dns.*fail\|name resolution" sos_commands/logs/journalctl_--no-pager 2>/dev/null | head -20
    
  2. 检查链接状态变化

    grep -i "link.*up\|link.*down\|carrier.*lost" sos_commands/logs/journalctl_--no-pager 2>/dev/null | head -20
    
  3. 查找网络设备错误

    grep -i "network.*error\|eth[0-9].*error\|transmit.*error" var/log/dmesg 2>/dev/null
    

步骤 7: 生成网络分析摘要

创建结构化摘要,包括以下部分:

  1. 接口摘要

    • 所有接口列表及状态
    • 分配的IP地址
    • 接口错误/丢包
    • 链接速度和双工设置
  2. 路由摘要

    • 默认网关
    • 路由数量
    • 任何路由异常
  3. 连通性摘要

    • 按状态的活动连接计数
    • 监听服务和端口
    • 检测到的连接问题
  4. 防火墙摘要

    • 防火墙类型(firewalld/iptables/nftables)
    • 活动区域(如果firewalld)
    • 关键允许的服务/端口
    • 潜在阻止规则
  5. DNS摘要

    • 配置的DNS服务器
    • 搜索域
    • 主机名配置
    • DNS解析问题
  6. 网络问题

    • 关键网络问题
    • 警告和建议
    • 来自日志的证据

错误处理

  1. 缺少网络文件

    • 不同sosreport版本可能有不同文件名
    • 回退到替代文件(netstat vs ss)
    • 在摘要中记录缺失数据
  2. 多个网络配置

    • 系统可能使用NetworkManager、systemd-networkd或传统ifcfg
    • 识别正在使用的并相应分析
  3. IPv6存在

    • 检查IPv6是否启用
    • 如果存在则分析IPv6配置
    • 注意如果预期启用但禁用时

输出格式

网络分析应产生:

网络配置摘要
==============================

网络接口
------------------
接口:{名称}
  状态:{UP|DOWN}
  IP地址:{ipv4}, {ipv6}
  MAC:{mac_address}
  MTU:{mtu}
  RX错误:{rx_errors} 数据包, {rx_dropped} 丢包
  TX错误:{tx_errors} 数据包, {tx_dropped} 丢包
  状态:{OK|WARNING|CRITICAL}

路由
-------
默认网关:{gateway_ip} 通过 {interface}
总路由:{count}

关键路由:
  {destination} 通过 {gateway} 设备 {interface}

状态:{OK|WARNING|CRITICAL}
问题:
  - {routing_issue_description}

连通性
------------
总活动连接:{count}

按状态连接:
  ESTABLISHED: {count}
  TIME_WAIT: {count}
  CLOSE_WAIT: {count}
  SYN_SENT: {count}

监听服务:
  {port}/{protocol} - {service_name} (PID {pid})

状态:{OK|WARNING|CRITICAL}
问题:
  - {connectivity_issue_description}

防火墙
--------
类型:{firewalld|iptables|nftables|none}
默认区域:{zone_name} (如果firewalld)

允许的服务:{service1}, {service2}, ...
允许的端口:{port1/protocol}, {port2/protocol}, ...

活动规则计数:{count}

状态:{OK|WARNING|CRITICAL}
潜在问题:
  - {firewall_issue_description}

DNS配置
-----------------
DNS服务器:{dns1}, {dns2}, {dns3}
搜索域:{domain1}, {domain2}
主机名:{hostname}
FQDN:{fqdn}

状态:{OK|WARNING|CRITICAL}
问题:
  - {dns_issue_description}

日志中的网络错误
------------------------
连接拒绝:{count} 次发生
超时:{count} 次发生
DNS失败:{count} 次发生
链接状态变化:{count} 次发生

最近网络错误:
  {timestamp}: {error_message}

关键网络问题
-----------------------
{severity}: {issue_description}
  证据:{file_path_or_log_excerpt}
  影响:{impact_description}
  建议:{remediation_action}

建议
---------------
1. {actionable_recommendation}
2. {actionable_recommendation}

数据源
------------
- 接口:{sosreport_path}/sos_commands/networking/ip_-o_addr
- 路由:{sosreport_path}/sos_commands/networking/ip_route
- 连接:{sosreport_path}/sos_commands/networking/netstat_-neopa
- 防火墙:{sosreport_path}/sos_commands/firewalld/
- DNS:{sosreport_path}/etc/resolv.conf

示例

示例 1: 接口分析

# 检查接口IP地址
$ cat sos_commands/networking/ip_-o_addr
1: lo    inet 127.0.0.1/8 scope host lo
2: eth0  inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0
2: eth0  inet6 fe80::a00:27ff:fe4e:66a1/64 scope link

# 检查错误
$ cat sos_commands/networking/ip_-s_link | grep -A 4 "eth0"
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
    RX: bytes  packets  errors  dropped overrun mcast
    15234567   98234    0       0       0       123
    TX: bytes  packets  errors  dropped carrier collsns
    8765432    54321    15      0       0       0

# 解释:eth0有15个TX错误 - 调查电缆/交换机

示例 2: 防火墙规则分析

# 检查firewalld活动区域
$ grep -A 20 "public" sos_commands/firewalld/firewall-cmd_--list-all-zones
public (active)
  target: default
  services: ssh dhcpv6-client http https
  ports: 8080/tcp 9090/tcp
  ...

# 解释:允许HTTP/HTTPS,开放自定义端口8080和9090

示例 3: 连接状态问题

# 统计连接状态
$ grep "^tcp" sos_commands/networking/netstat_-neopa | awk '{print $6}' | sort | uniq -c
    234 ESTABLISHED
   1523 TIME_WAIT
     12 CLOSE_WAIT
      5 SYN_SENT

# 解释:
# - 过多的TIME_WAIT(关闭连接后正常)
# - CLOSE_WAIT表示应用未正确关闭套接字
# - SYN_SENT表示出站连接尝试失败

有效分析提示

  1. 检查接口一致性:确保IP地址匹配预期配置
  2. 验证网关可达性:默认网关应在同一子网
  3. 查找不对称路由:数据包进出可能走不同路径
  4. 检查MTU设置:MTU不匹配可能导致数据包分片问题
  5. 与日志关联:日志中的网络错误常解释配置问题
  6. 考虑网络拓扑:理解预期网络布局
  7. 检查IPv4和IPv6:如果使用IPv6,务必检查

常见网络模式和问题

  1. 无默认路由:"网络不可达"错误,无法访问互联网
  2. 接口关闭:"网络关闭"错误,无连通性
  3. 重复IP:ARP冲突,间歇性连通性
  4. 防火墙阻止:"连接拒绝/超时"针对特定端口
  5. DNS失败:无法解析主机名,但IP连通性正常
  6. 端口耗尽:太多TIME_WAIT连接,无法创建新连接
  7. MTU问题:大数据包失败,小数据包工作(PMTUD失败)

网络问题严重性分类

问题类型 严重性 影响
无网络接口 关键 完全失去连通性
无默认路由 关键 无外部连通性
接口错误 >1% 警告 潜在数据包丢失
过多TIME_WAIT 警告 可能表示性能问题
缺少DNS服务器 关键 名称解析失败
防火墙阻止所需端口 服务不可用
IPv6自动配置失败 IPv6连通性问题

另见

  • 日志分析技能:用于详细网络错误日志分析
  • 系统配置分析技能:用于网络服务状态
  • 资源分析技能:用于网络I/O统计