Linux网络运维排查实战指南:实施工程师手册

适用对象 : 实施工程师、运维工程师、技术支持人员

适用系统 : 麒麟V10(银河麒麟/中标麒麟)、Ubuntu 20.04/22.04/24.04、CentOS/RHEL、统信UOS

目标: 建立标准化网络排查流程,支撑日常巡检、故障定位与研发日志反馈

目录


第一部分:网络基础原理(小白必读)

1.1 为什么需要网络分层?

想象你要寄一封快递:

  • 只需要写好地址和信件内容(应用层)
  • 快递公司负责分拣、选择运输路线(网络层)
  • 货车司机负责把包裹从A点运到B点(数据链路层/物理层)

每一层只关心自己的职责,层与层之间通过标准接口交互。这就是网络分层 的核心思想:复杂问题简单化,每层各司其职

如果没有分层,寄快递时你得同时操心:用什么笔写信、走哪条路、开什么车------这显然不合理。网络分层让每一层专注做好一件事,上层不用关心下层的实现细节。

1.2 OSI七层模型详解

OSI(Open Systems Interconnection,开放系统互连)是国际标准化组织(ISO)提出的理论模型,共7层:

层级 名称 核心功能 生活类比 典型协议/设备
第7层 应用层 为应用程序提供网络服务接口 你写的信件内容 HTTP、HTTPS、FTP、SMTP、DNS、SSH
第6层 表示层 数据格式转换、加密解密、压缩解压 把中文信翻译成英文、装进信封加密 TLS/SSL、JPEG、MPEG、ASCII
第5层 会话层 建立、管理、终止会话连接 打电话时的拨号、通话、挂断 NetBIOS、RPC、SQL会话
第4层 传输层 端到端可靠/不可靠传输、流量控制 快递公司的分拣中心,确保包裹完整送达 TCP、UDP、SCTP
第3层 网络层 逻辑寻址、路由选择、分组转发 快递公司的全国分拣中心,看地址决定走哪条路 IP、ICMP、ARP、路由器
第2层 数据链路层 帧封装、MAC寻址、差错检测、介质访问 同城快递站,按门牌号送货 以太网、Wi-Fi、PPP、交换机、网卡
第1层 物理层 比特流传输、电气/机械特性 公路、铁路、飞机等物理运输通道 网线、光纤、集线器、RJ45、光模块

名词解释

  • 协议(Protocol):就像人类语言的语法规则,网络协议是设备之间通信的"约定"。比如HTTP协议规定了浏览器和服务器如何请求和响应网页。
  • 寻址(Addressing):就像快递需要收件地址,网络中的数据也需要"地址"才能找到目的地。IP地址是"逻辑地址"(类似省市区街道),MAC地址是"物理地址"(类似门牌号)。
  • 路由(Routing):数据从A到B可能经过很多中间节点,路由就是选择最佳路径的过程。

1.3 TCP/IP四层模型详解

TCP/IP模型是互联网实际使用的标准,比OSI更简洁,共4层:

TCP/IP 层级 名称 对应 OSI 层级 核心功能 典型协议/设备
第4层 应用层 OSI 5-7层 为应用程序提供网络服务 HTTP、HTTPS、FTP、SMTP、DNS、SSH
第3层 传输层 OSI 4层 端到端连接、可靠/不可靠传输 TCP、UDP、SCTP
第2层 网络层(网际层) OSI 3层 逻辑寻址、路由、分组转发 IP、ICMP、ARP、路由器
第1层 网络接口层(链路层) OSI 1-2层 帧封装、MAC寻址、物理传输 以太网、Wi-Fi、交换机、网卡、网线

为什么TCP/IP把OSI的7层合并成4层?

因为实际应用中,应用层、表示层、会话层的界限很模糊。比如你用浏览器访问HTTPS网站时,HTTP是应用层协议,TLS加密是表示层功能,TCP连接管理是会话层功能------这三者通常由同一个软件(浏览器)处理,强行分开反而增加复杂度。所以TCP/IP把它们合并为"应用层"。

1.4 两模型对照关系


对照表

OSI 七层模型 TCP/IP 四层模型 核心功能 典型协议/设备
7. 应用层 (Application)
6. 表示层 (Presentation) 4.应用层 为用户应用程序提供网络服务 HTTP、HTTPS、FTP、SMTP、DNS、SSH
5. 会话层 (Session)
4. 传输层 (Transport) 3.传输层 端到端连接、可靠/不可靠传输 TCP、UDP、SCTP
3. 网络层 (Network) 2.网络层 (网际层) 寻址、路由、分组转发 IP、ICMP、ARP、OSPF、BGP、路由器
2. 数据链路层 (Data Link) 1.网络接口层 (链路层) 帧封装、MAC寻址、差错检测 以太网、Wi-Fi、PPP、交换机、网卡
1. 物理层 (Physical) 比特流传输、电气/机械特性 网线、光纤、集线器、RJ45、光模块

1.5 数据封装与解封装

想象你发一封快递,每一层都会给包裹加一个"标签":

发送端(从上到下封装)

复制代码
应用层数据(比如"你好")
  ↓ 加上HTTP头部(表示这是一个网页请求)
传输层数据段(TCP头部 + HTTP数据)
  ↓ 加上TCP头部(包含源端口、目标端口、序列号)
网络层数据包(IP头部 + TCP段)
  ↓ 加上IP头部(包含源IP、目标IP)
数据链路层帧(MAC头部 + IP包 + MAC尾部)
  ↓ 加上MAC头部(源MAC、目标MAC)和CRC校验尾部
物理层比特流(01010101...)
  ↓ 变成电信号/光信号在网线/光纤中传输

接收端(从下到上解封装)

复制代码
物理层比特流(01010101...)
  ↓ 还原成电信号
数据链路层帧
  ↓ 去掉MAC头部,检查CRC校验
网络层数据包
  ↓ 去掉IP头部,检查目标IP
传输层数据段
  ↓ 去掉TCP头部,按端口号交给对应应用
应用层数据("你好")
  ↓ 交给浏览器显示

名词解释

  • 封装(Encapsulation):就像 Russian Doll(俄罗斯套娃),每一层把自己的控制信息(头部)包在数据外面。
  • 头部(Header):每一层添加的控制信息。比如IP头部包含源IP、目标IP、TTL(生存时间)等。
  • 帧(Frame):数据链路层的传输单元。
  • 包/分组(Packet):网络层的传输单元。
  • 段(Segment):传输层的传输单元。

1.6 关键协议速查表

协议 层级 全称 作用 类比
HTTP 应用层 HyperText Transfer Protocol 传输网页内容 寄送普通信件
HTTPS 应用层 HTTP Secure 加密传输网页 寄送密封信件
FTP 应用层 File Transfer Protocol 文件传输 寄送包裹
SSH 应用层 Secure Shell 安全远程登录 加密电话
DNS 应用层 Domain Name System 域名→IP地址转换 电话簿查询
TCP 传输层 Transmission Control Protocol 可靠、面向连接的传输 挂号信(有回执)
UDP 传输层 User Datagram Protocol 快速、不可靠的传输 普通明信片(无回执)
IP 网络层 Internet Protocol 逻辑寻址和路由 全国快递地址系统
ICMP 网络层 Internet Control Message Protocol 网络诊断和差错报告 快递公司的查询/投诉电话
ARP 网络层 Address Resolution Protocol IP地址→MAC地址转换 根据姓名查门牌号
以太网 链路层 Ethernet 有线局域网标准 同城快递网络
Wi-Fi 链路层 Wireless Fidelity 无线局域网标准 同城快递无人机

第二部分:网络排查标准化流程

实施工程师面对网络问题时,建议遵循 "由近及远、分层排查" 的原则:

复制代码
物理层 → 链路层 → 网络层 → 传输层 → 应用层
   ↓        ↓        ↓        ↓        ↓
 网线    网卡状态   IP/路由   端口/DNS  服务/防火墙

2.1 快速诊断四步法

步骤 命令 目的 正常预期 对应层级
Step 1 ping 127.0.0.1 检查本地TCP/IP栈 100%通,延迟<1ms 传输层+网络层(本机)
Step 2 ping <网关IP> 检查本地网络连通性 100%通,延迟<5ms 网络层+链路层
Step 3 ping 223.5.5.5 检查外网连通性 100%通,延迟<100ms 网络层(跨网段)
Step 4 ping www.baidu.com 检查DNS解析能力 能解析且能ping通 应用层(DNS)

💡 实施建议: 在客户现场首先执行这四步,可快速定位问题层级,避免盲目排查。


第三部分:麒麟V10 专项运维指令

麒麟V10基于RHEL/CentOS生态,使用yum包管理,默认启用firewalld防火墙,同时保留了iptables底层支持。部分版本还集成了麒麟安全机制(Kysec),需特别注意。

3.1 网络基础检查

bash 复制代码
# 1. 查看系统版本(确认是服务器版还是桌面版)
cat /etc/os-release
# 输出示例: Kylin Linux Advanced Server V10 (Tercel)

# 2. 查看网卡状态(简洁版)
ip -br link show
ip -br addr show

# 3. 查看网卡详细统计(关注errors/dropped)
ip -s link show eth0

# 4. 查看路由表
ip route show
# 或查看默认网关
ip route show default

# 5. 查看DNS配置
cat /etc/resolv.conf
# 注意:若使用NetworkManager或systemd-resolved,此文件可能是软链接

名词解释

  • 网卡(Network Interface Card, NIC):计算机连接网络的硬件接口,也叫网络适配器。常见的有以太网卡(插网线)和无线网卡(Wi-Fi)。
  • 路由表(Routing Table):就像导航地图,记录了到达不同目的地的最佳路径。系统根据路由表决定数据包从哪个网卡发出、发给哪个网关。
  • DNS(Domain Name System):互联网的"电话簿",把人类易读的域名(如www.baidu.com)转换成机器可读的IP地址(如14.215.177.38)。

3.2 防火墙管理(firewalld)

麒麟V10服务器版默认使用firewalld,桌面版可能同时存在图形化安全中心。

bash 复制代码
# 查看防火墙状态
sudo systemctl status firewalld
sudo firewall-cmd --state

# 查看当前区域配置
sudo firewall-cmd --get-default-zone
sudo firewall-cmd --zone=public --list-all

# 开放端口(永久生效)
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

# 开放服务(如http, ssh, mysql)
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --reload

# 查看已开放端口/服务
sudo firewall-cmd --zone=public --list-ports
sudo firewall-cmd --zone=public --list-services

# 富规则(限制特定IP访问)
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept'

名词解释

  • 防火墙(Firewall):网络安全的"门卫",根据预设规则决定哪些数据可以进出系统。就像小区门口的保安,检查每个进出人员的身份。
  • 端口(Port):传输层的逻辑通道编号(0-65535),用于区分同一台机器上的不同服务。比如HTTP用80端口,SSH用22端口,HTTPS用443端口。
  • 区域(Zone):firewalld的概念,把网络接口划分到不同安全级别的区域(如public、trusted、block),每个区域有不同的默认规则。

3.3 iptables备用方案

当firewalld规则不生效或需要更精细控制时,直接使用iptables:

bash 复制代码
# 查看当前规则
sudo iptables -L -n -v --line-numbers

# 开放22端口
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 保存规则(防止重启失效)
sudo iptables-save > /etc/sysconfig/iptables

# 注意:麒麟V10桌面版可能通过安全中心管理iptables,命令行配置后可能被覆盖

名词解释

  • iptables :Linux内核自带的防火墙工具,工作在网络层传输层,通过规则链(Chain)和表(Table)管理数据包过滤。
  • 规则链(Chain):数据包经过的"检查站",常见的有INPUT(进入本机)、OUTPUT(本机发出)、FORWARD(转发)。
  • ACCEPT/DROP/REJECT:iptables的三种处理动作。ACCEPT=放行,DROP=静默丢弃(对方不知道),REJECT=明确拒绝(对方会收到错误通知)。

3.4 麒麟安全机制检查

bash 复制代码
# 查看Kysec状态(部分版本存在)
sudo kysec_status

# 查看安全日志
sudo cat /var/log/kylin/sec.log

# 若存在安全拦截,可能需要调整安全策略或临时关闭测试

3.5 网络服务管理

bash 复制代码
# 查看网络管理服务状态
sudo systemctl status NetworkManager
sudo systemctl status systemd-networkd
sudo systemctl status systemd-resolved

# 重启网络服务
sudo systemctl restart NetworkManager
# 或
sudo systemctl restart systemd-networkd

# 查看网络连接配置
nmcli device show
nmcli connection show --active

名词解释

  • NetworkManager:Linux桌面系统常用的网络管理服务,可以自动管理有线、无线、VPN等连接,提供图形化配置界面。
  • systemd-networkd:systemd项目提供的轻量级网络管理服务,常用于服务器环境,通过配置文件管理网络。
  • systemd-resolved:systemd提供的DNS解析服务,可以缓存DNS查询结果,提高解析速度。

第四部分:Ubuntu 专项运维指令

Ubuntu使用apt包管理,网络配置方式因版本而异:Ubuntu Server 默认使用Netplan+systemd-networkdUbuntu Desktop 默认使用NetworkManager

4.1 网络基础检查

bash 复制代码
# 查看版本
lsb_release -a

# 查看网络接口
ip -br addr show

# 查看路由
ip route show

# 查看DNS(注意软链接指向)
ls -l /etc/resolv.conf
cat /etc/resolv.conf

4.2 Netplan配置(Ubuntu Server 18.04+)

bash 复制代码
# 查看Netplan配置文件
ls /etc/netplan/

# 编辑配置(YAML格式,注意缩进必须是空格)
sudo nano /etc/netplan/00-installer-config.yaml

示例:静态IP配置

yaml 复制代码
network:
  version: 2
  renderer: networkd
  ethernets:
    ens33:
      dhcp4: no
      addresses:
        - 192.168.1.100/24
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses:
          - 223.5.5.5
          - 8.8.8.8
bash 复制代码
# 应用配置
sudo netplan apply

# 验证配置
sudo netplan try  # 若20秒内无确认,自动回滚

名词解释

  • Netplan :Ubuntu 18.04+引入的网络配置抽象层,统一了NetworkManager和systemd-networkd的配置方式。使用YAML格式,语法简洁但对缩进极其敏感(必须用空格,不能用Tab)。
  • DHCP(Dynamic Host Configuration Protocol):动态主机配置协议,自动分配IP地址、子网掩码、网关、DNS等网络参数。就像酒店前台自动给你分配房间号。
  • 静态IP:手动配置的固定IP地址,不会变化。适合服务器等需要固定地址的场景。
  • CIDR表示法 :如192.168.1.100/24,其中/24表示子网掩码有24个1(即255.255.255.0)。

4.3 NetworkManager配置(Ubuntu Desktop)

bash 复制代码
# 查看设备状态
nmcli device status

# 查看连接配置
nmcli connection show

# 修改DNS(通过NetworkManager)
nmcli connection modify "Wired connection 1" ipv4.dns "223.5.5.5 8.8.8.8"
nmcli connection up "Wired connection 1"

# 图形界面配置
nmtui  # 文本界面
nm-connection-editor  # GUI界面

4.4 systemd-resolved DNS管理

Ubuntu默认启用systemd-resolved管理DNS, /etc/resolv.conf通常是软链接。

bash 复制代码
# 查看systemd-resolved状态
systemctl status systemd-resolved
resolvectl status

# 修改DNS服务器
sudo nano /etc/systemd/resolved.conf

添加以下内容:

ini 复制代码
[Resolve]
DNS=223.5.5.5 8.8.8.8
FallbackDNS=114.114.114.114
bash 复制代码
# 重启服务
sudo systemctl restart systemd-resolved

# 验证DNS解析
resolvectl query www.baidu.com
dig www.baidu.com

名词解释

  • 软链接(Symbolic Link) :类似Windows的快捷方式,是一个指向另一个文件的特殊文件。/etc/resolv.conf在Ubuntu上通常是软链接,指向/run/systemd/resolve/stub-resolv.conf
  • FallbackDNS:备用DNS服务器,当主DNS不可用时自动切换。

4.5 UFW防火墙(Ubuntu默认)

bash 复制代码
# 查看UFW状态
sudo ufw status verbose

# 允许SSH
sudo ufw allow 22/tcp

# 允许特定IP访问
sudo ufw allow from 192.168.1.0/24 to any port 3306

# 启用/禁用
sudo ufw enable
sudo ufw disable

# 查看编号规则
sudo ufw status numbered
# 删除规则
sudo ufw delete 3

名词解释

  • UFW(Uncomplicated Firewall):Ubuntu的简化防火墙工具,底层仍然是iptables,但提供了更友好的命令行接口,适合新手使用。

第五部分:通用核心排查命令

以下命令适用于所有Linux发行版,是实施工程师必须掌握的基础工具。

5.1 连通性测试

bash 复制代码
# 基础ping测试
ping -c 4 192.168.1.1

# 指定间隔和包大小
ping -i 0.2 -s 1400 www.baidu.com

# 路由追踪
traceroute www.baidu.com
# 或使用mtr(更强大)
mtr --report --report-cycles 10 www.baidu.com

# 端口测试
nc -zv 192.168.1.1 22
# 或
telnet 192.168.1.1 80
# 或
curl -v telnet://192.168.1.1:22

名词解释

  • ping:利用ICMP协议测试网络连通性的工具。发送"回声请求"包,等待对方返回"回声应答"。就像你喊一声"喂",对方回"在呢"。
  • traceroute:追踪数据包从源到目的经过的所有路由器(跳)。就像快递追踪,显示包裹经过的每个中转站。
  • mtr:My Traceroute的缩写,结合了ping和traceroute的功能,可以持续测试并统计每跳的丢包率和延迟。
  • nc(netcat):网络界的"瑞士军刀",可以读写网络连接,常用于端口测试、文件传输、简单服务器搭建。

5.2 连接状态查看

bash 复制代码
# 查看所有监听端口(推荐ss,替代netstat)
sudo ss -tulnp

# 查看所有TCP连接
ss -tan

# 查看连接统计
ss -s

# 查看特定端口占用
sudo lsof -i :8080

# 查看进程网络占用
sudo lsof -i -sTCP:LISTEN

名词解释

  • ss(Socket Statistics) :新一代socket统计工具,比传统的netstat更快更高效,直接从内核获取信息。
  • socket:套接字,是传输层连接的抽象表示,包含IP地址+端口的组合。就像电话线的两端插口。
  • LISTEN:监听状态,表示服务正在等待客户端连接。
  • ESTABLISHED:已建立连接,表示双方正在通信。
  • lsof(List Open Files):列出系统打开的文件。在Linux中,网络连接也被视为"文件"(一切皆文件哲学)。

5.3 DNS排查

bash 复制代码
# 查看DNS配置
cat /etc/resolv.conf

# DNS查询
nslookup www.baidu.com
dig www.baidu.com
dig @223.5.5.5 www.baidu.com

# 追踪DNS解析过程
dig +trace www.baidu.com

# 查看本地DNS缓存(systemd-resolved)
resolvectl statistics

名词解释

  • nslookup :简单的DNS查询工具,但功能较基础,已逐渐被dig取代。
  • dig(Domain Information Groper):功能强大的DNS诊断工具,可以显示完整的DNS查询过程和响应详情。
  • +trace:追踪DNS解析的完整链条,从根域名服务器到顶级域服务器再到权威服务器,适合排查DNS解析异常。

5.4 路由排查

bash 复制代码
# 查看路由表
ip route show
route -n

# 追踪到目标的路由
ip route get 223.5.5.5

# 添加临时路由
sudo ip route add 192.168.10.0/24 via 192.168.1.1

# 删除路由
sudo ip route del 192.168.10.0/24

名词解释

  • 路由表(Routing Table):系统维护的一张"导航地图",记录了到达不同网络目的地的路径。包含目标网络、网关、接口、度量值等信息。
  • 默认路由(Default Route) :目标为0.0.0.0/0default的路由,当没有更精确的路由匹配时,数据包走默认路由。就像"其他都往这边送"。
  • CIDR(Classless Inter-Domain Routing) :无类别域间路由,用"/数字"表示子网掩码长度。如/24表示前24位是网络位,后8位是主机位。

5.5 网卡深度诊断

bash 复制代码
# 查看网卡驱动和速率
ethtool eth0
ethtool -i eth0  # 驱动信息

# 查看网卡统计
ethtool -S eth0

# 查看网卡中断
cat /proc/interrupts | grep eth0

# 查看网卡队列
ethtool -l eth0

名词解释

  • ethtool:用于查询和设置网卡参数的工具,可以查看网卡速率、双工模式、驱动信息、统计计数器等。
  • 双工模式(Duplex)
    • 全双工(Full Duplex):可以同时发送和接收,像双向车道。
    • 半双工(Half Duplex):同一时间只能发送或接收,像单车道。
  • MTU(Maximum Transmission Unit):最大传输单元,以太网默认1500字节。超过MTU的数据包会被分片。

第六部分:日志抓取与反馈研发

当需要向研发团队反馈网络问题时,完整的日志和抓包文件是定位问题的关键。

6.1 系统日志收集

bash 复制代码
# 1. 收集网络相关内核日志
dmesg | grep -i "network\|eth\|tcp\|drop" > /tmp/kernel_net.log

# 2. 收集NetworkManager日志
journalctl -u NetworkManager --since "1 hour ago" --no-pager > /tmp/nm.log

# 3. 收集防火墙日志
journalctl -u firewalld --since "1 hour ago" --no-pager > /tmp/firewall.log

# 4. 收集所有网络错误日志
journalctl --since "1 hour ago" | grep -i "error\|fail\|timeout" > /tmp/errors.log

# 5. 收集socket统计
cat /proc/net/sockstat > /tmp/sockstat.log
ss -s > /tmp/ss_stats.log

名词解释

  • dmesg:显示内核环形缓冲区的消息,包含硬件检测、驱动加载、内核错误等信息。
  • journalctl:systemd的日志管理工具,可以按时间、服务、优先级等条件查询系统日志。
  • /proc/net/sockstat:内核暴露的socket统计信息伪文件,包含TCP、UDP、RAW等协议的连接统计。

6.2 tcpdump抓包指南

bash 复制代码
# 基础抓包(所有接口)
sudo tcpdump -i any -w /tmp/capture_all.pcap

# 抓特定接口
sudo tcpdump -i eth0 -w /tmp/capture_eth0.pcap

# 抓特定主机
sudo tcpdump -i any host 192.168.1.100 -w /tmp/capture_host.pcap

# 抓特定端口
sudo tcpdump -i any port 8080 -w /tmp/capture_port.pcap

# 抓特定协议
sudo tcpdump -i any icmp -w /tmp/capture_icmp.pcap

# 抓特定网段
sudo tcpdump -i any net 192.168.1.0/24 -w /tmp/capture_net.pcap

# 限制抓包数量(1000个包后停止)
sudo tcpdump -i any -c 1000 -w /tmp/capture_limit.pcap

# 轮转抓包(每100MB一个文件,保留5个文件)
sudo tcpdump -i any -C 100 -W 5 -w /tmp/capture_rotate.pcap

# 只抓SYN包(排查连接建立问题)
sudo tcpdump 'tcp[tcpflags] & tcp-syn != 0' -w /tmp/capture_syn.pcap

名词解释

  • tcpdump :强大的网络抓包工具,直接从网卡捕获数据包,保存为.pcap格式,可用Wireshark分析。
  • pcap(Packet Capture):标准的抓包文件格式,可以被Wireshark、tcpdump等工具读取分析。
  • 过滤表达式:tcpdump支持BPF(Berkeley Packet Filter)语法,可以精确过滤感兴趣的数据包。
  • SYN包:TCP三次握手的第一个包,用于发起连接。只抓SYN包可以快速分析连接建立情况。

6.3 问题反馈清单

向研发反馈时,请提供以下信息:

信息项 说明 重要性
问题现象 具体报错信息、超时时间、发生频率 ⭐⭐⭐
发生时间 精确到秒的问题发生时间点 ⭐⭐⭐
环境信息 OS版本、内核版本、网络拓扑 ⭐⭐⭐
复现步骤 如何稳定复现该问题 ⭐⭐⭐
巡检报告 使用脚本生成的完整巡检报告 ⭐⭐⭐
抓包文件 .pcap格式,包含问题发生时段 ⭐⭐⭐
系统日志 journalctl/var/log相关日志 ⭐⭐⭐
已尝试措施 已尝试的排查步骤和结果 ⭐⭐

第七部分:常见问题排查手册

7.1 物理层/链路层问题

问题现象 排查步骤 解决方案 对应层级
网卡灯不亮 ethtool eth0查看Link detected 更换网线、更换交换机端口、检查网卡驱动 物理层
网卡状态DOWN ip link show查看状态 ip link set eth0 up启用;检查NetworkManager是否禁用 链路层
无IP地址 ip addr show查看;cat /var/log/messages 检查DHCP服务;手动配置静态IP 网络层
频繁丢包 ip -s link show查看errors/dropped 更换网线、检查网卡驱动版本、调整MTU 链路层
双工不匹配 ethtool eth0查看Speed/Duplex 强制指定速率:ethtool -s eth0 speed 1000 duplex full 链路层

7.2 网络层问题

问题现象 排查步骤 解决方案 对应层级
无法ping通网关 检查网线→ip route show→检查子网掩码 修正网关配置;检查交换机VLAN 网络层
无法ping通外网 traceroute定位断点;检查NAT 检查路由器/NAT配置;检查防火墙出站规则 网络层
路由不可达 ip route get <dest> 添加静态路由;检查动态路由协议 网络层
IP地址冲突 arping -I eth0 <ip>检测重复MAC 更换IP;检查DHCP服务器配置 网络层
间歇性断网 mtr --report查看哪一跳丢包 定位故障节点(交换机/路由器);联系运营商 网络层

名词解释

  • VLAN(Virtual Local Area Network):虚拟局域网,把一个物理交换机逻辑上划分成多个独立的广播域。不同VLAN之间默认不通,需要三层设备(路由器/三层交换机)转发。
  • NAT(Network Address Translation):网络地址转换,把私有IP地址转换成公网IP地址。家庭路由器就是典型的NAT设备,让多台设备共享一个公网IP上网。
  • arping:发送ARP请求探测IP是否被占用,可以检测IP地址冲突。

7.3 传输层问题

问题现象 排查步骤 解决方案 对应层级
端口不通 nc -zv <ip> <port>ss -tulnp 启动服务;开放防火墙端口 传输层
连接被拒绝 ss -tulnp查看监听地址 修改服务绑定地址为0.0.0.0而非127.0.0.1 传输层
连接超时 tcpdump抓包看三次握手 检查中间防火墙;检查服务端是否过载 传输层
大量TIME_WAIT ss -tan统计 调整tcp_tw_reuse=1;优化应用连接池 传输层
大量CLOSE_WAIT ss -tan统计 检查应用程序是否及时关闭连接;修复代码bug 传输层
SYN Flood攻击 netstat -n统计各状态数量 启用SYN Cookies;调整tcp_max_syn_backlog 传输层

名词解释

  • 三次握手(Three-way Handshake) :TCP建立连接的过程:
    1. 客户端发送SYN(请求建立连接)
    2. 服务端回复SYN+ACK(同意建立连接)
    3. 客户端发送ACK(确认收到)
  • 四次挥手(Four-way Handshake):TCP断开连接的过程,比建立连接多一步是因为TCP是全双工的,双方都需要确认关闭。
  • TIME_WAIT:连接关闭后,主动关闭方保持的状态,持续2MSL(最大段生存时间,通常60秒),确保最后的ACK能被对方收到。
  • CLOSE_WAIT:被动关闭方收到FIN后进入的状态,表示等待本地应用关闭连接。如果大量存在,通常是应用程序没有正确关闭socket。
  • SYN Flood:一种DoS攻击,攻击者发送大量SYN包但不完成三次握手,耗尽服务器的连接队列资源。

7.4 DNS问题

问题现象 排查步骤 解决方案 对应层级
域名无法解析 dig <domain>cat /etc/resolv.conf 检查DNS配置;更换DNS服务器 应用层
解析结果错误 dig +trace追踪解析链 检查hosts文件;清除DNS缓存 应用层
解析速度慢 dig @<dns> <domain>对比 更换就近DNS;检查网络延迟 应用层
间歇性解析失败 对比多个DNS服务器解析结果 检查DNS服务器负载;配置多个DNS备用 应用层

名词解释

  • hosts文件 :本地静态域名解析表,优先级高于DNS。位于/etc/hosts,格式为IP地址 域名
  • DNS缓存 :本地保存的DNS查询结果,避免重复查询。可以手动清除:sudo systemd-resolve --flush-caches

7.5 防火墙问题

问题现象 排查步骤 解决方案 对应层级
规则不生效 firewall-cmd --reloadiptables -L 重载防火墙;检查规则顺序(iptables按顺序匹配) 网络层/传输层
端口已开放但外部不通 iptables -L -n -v查看计数器 检查INPUT链是否DROP;检查默认策略 网络层/传输层
远程操作断连 谨慎操作22端口规则 使用screen/tmux;先添加允许规则再删除旧规则 传输层
安全软件拦截 kysec_status(麒麟);getenforce(SELinux) 调整安全策略;临时设置为permissive模式测试 应用层

名词解释

  • SELinux(Security-Enhanced Linux):美国NSA开发的安全机制,通过强制访问控制(MAC)限制进程权限。有三种模式:Enforcing(强制)、Permissive(宽容,只记录不拦截)、Disabled(关闭)。
  • screen/tmux:终端复用工具,可以在SSH断开后保持会话不中断,远程操作防火墙时强烈建议使用。

7.6 性能问题

问题现象 排查步骤 解决方案 对应层级
网络延迟高 mtr定位延迟节点 优化路由;更换链路;就近部署 网络层
带宽不达标 iperf3 -c <server>测试 检查网卡协商速率;检查交换机端口 物理层/链路层
连接数耗尽 cat /proc/net/sockstat 调整ulimit;调整内核nf_conntrack_max 传输层
网卡软中断高 cat /proc/interrupts 开启RPS/XPS;调整中断亲和性(smp_affinity) 物理层
TCP重传率高 tc -s qdisc showtcpdump 检查拥塞控制算法;检查物理链路质量 传输层

名词解释

  • iperf3:网络带宽测试工具,可以在客户端和服务器之间测试实际传输速率。
  • RPS/XPS(Receive/Transmit Packet Steering):Linux内核特性,将网卡中断处理分散到多个CPU核心,提高多核系统的网络性能。
  • 拥塞控制(Congestion Control):TCP防止网络过载的机制,包括慢启动、拥塞避免、快速重传、快速恢复等算法。

第八部分:日常巡检方案

8.1 每日巡检(5分钟)

bash 复制代码
#!/bin/bash
# daily_check.sh - 每日快速巡检
echo "=== $(date) 网络巡检 ==="
ip -br link show
ip -br addr show
ping -c 2 $(ip route | awk '/default/{print $3}') && echo "网关正常" || echo "网关异常"
ping -c 2 223.5.5.5 && echo "外网正常" || echo "外网异常"
ss -s
df -h | grep -E "Filesystem|/dev/"

8.2 每周巡检(15分钟)

bash 复制代码
#!/bin/bash
# weekly_check.sh - 每周深度巡检
# 1. 接口统计
ip -s link show | grep -E "RX:|TX:|errors|dropped"
# 2. 路由检查
ip route show
# 3. DNS测试
for dns in 223.5.5.5 114.114.114.114 8.8.8.8; do
    dig @$dns www.baidu.com +short +time=2 >/dev/null && echo "$dns OK" || echo "$dns FAIL"
done
# 4. 防火墙检查
firewall-cmd --list-all 2>/dev/null || iptables -L -n
# 5. 日志检查
journalctl --since "1 week ago" | grep -i "error\|fail\|drop" | tail -20
# 6. 性能基线
ss -s
cat /proc/net/sockstat

8.3 月度巡检(30分钟)

  • 执行完整巡检脚本(见下方下载链接)
  • 对比历史巡检数据,发现趋势变化
  • 检查网卡驱动版本是否需要更新
  • 验证备份链路可用性
  • 更新网络拓扑文档

第九部分:实用工具与脚本

我已为您准备了三份实用文件,可直接用于生产环境:

9.1 综合巡检脚本 (linux_network_inspect.sh):一键执行完整网络巡检,自动生成报告和原始数据备份。

bash 复制代码
#!/bin/bash
###############################################################################
# Linux网络运维巡检与故障排查脚本
# 适用系统: 麒麟V10 / Ubuntu / CentOS / 统信UOS
# 作者: 实施运维团队
# 用途: 日常巡检、网络故障排查、日志抓取反馈研发
###############################################################################

set -e

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 输出目录
OUTPUT_DIR="/tmp/network_inspect_$(date +%Y%m%d_%H%M%S)"
mkdir -p "$OUTPUT_DIR"
REPORT_FILE="$OUTPUT_DIR/network_report.txt"

# 获取系统信息
get_os_info() {
    echo -e "${BLUE}========== 系统信息 ==========${NC}"
    echo "检查时间: $(date '+%Y-%m-%d %H:%M:%S')"
    echo "主机名: $(hostname)"
    echo "操作系统: $(cat /etc/os-release | grep PRETTY_NAME | cut -d'"' -f2)"
    echo "内核版本: $(uname -r)"
    echo "架构: $(uname -m)"
    echo ""
}

# 网络接口检查
check_interfaces() {
    echo -e "${BLUE}========== 网络接口状态 ==========${NC}"
    ip -br link show
    echo ""
    echo "详细接口信息:"
    ip -br addr show
    echo ""
    echo "网卡统计信息(关注errors/dropped):"
    for iface in $(ip -br link show | awk '{print $1}' | grep -v lo); do
        echo "--- $iface ---"
        ip -s link show $iface 2>/dev/null | grep -E "(RX:|TX:|errors|dropped|overrun)"
    done
    echo ""
}

# 路由表检查
check_routes() {
    echo -e "${BLUE}========== 路由表 ==========${NC}"
    ip route show
    echo ""
    echo "默认网关:"
    ip route show default
    echo ""
}

# DNS配置检查
check_dns() {
    echo -e "${BLUE}========== DNS配置 ==========${NC}"
    echo "resolv.conf内容:"
    cat /etc/resolv.conf 2>/dev/null || echo "文件不存在"
    echo ""
    
    # 检查systemd-resolved
    if systemctl is-active systemd-resolved &>/dev/null; then
        echo "systemd-resolved状态: 运行中"
        resolvectl status 2>/dev/null || systemd-resolve --status 2>/dev/null || echo "无法获取resolvectl状态"
    else
        echo "systemd-resolved状态: 未运行"
    fi
    echo ""
    
    # DNS解析测试
    echo "DNS解析测试:"
    for dns in "223.5.5.5" "114.114.114.114" "8.8.8.8"; do
        if dig @$dns www.baidu.com +short +time=2 &>/dev/null; then
            echo "  DNS $dns: ${GREEN}正常${NC}"
        else
            echo "  DNS $dns: ${RED}异常${NC}"
        fi
    done
    echo ""
}

# 连通性测试
check_connectivity() {
    echo -e "${BLUE}========== 网络连通性测试 ==========${NC}"
    
    # 本地回环
    if ping -c 2 127.0.0.1 &>/dev/null; then
        echo "本地回环(127.0.0.1): ${GREEN}正常${NC}"
    else
        echo "本地回环(127.0.0.1): ${RED}异常${NC}"
    fi
    
    # 网关
    gateway=$(ip route show default | awk '{print $3}' | head -1)
    if [ -n "$gateway" ]; then
        if ping -c 2 $gateway &>/dev/null; then
            echo "网关($gateway): ${GREEN}正常${NC}"
        else
            echo "网关($gateway): ${RED}异常${NC}"
        fi
    fi
    
    # 外网
    if ping -c 2 223.5.5.5 &>/dev/null; then
        echo "外网(223.5.5.5): ${GREEN}正常${NC}"
    else
        echo "外网(223.5.5.5): ${RED}异常${NC}"
    fi
    
    # DNS解析
    if ping -c 2 www.baidu.com &>/dev/null; then
        echo "DNS解析(www.baidu.com): ${GREEN}正常${NC}"
    else
        echo "DNS解析(www.baidu.com): ${RED}异常${NC}"
    fi
    echo ""
}

# 端口监听检查
check_ports() {
    echo -e "${BLUE}========== 端口监听状态 ==========${NC}"
    echo "监听端口列表:"
    ss -tulnp 2>/dev/null || netstat -tulnp 2>/dev/null || echo "ss/netstat命令不可用"
    echo ""
    
    echo "连接状态统计:"
    ss -s 2>/dev/null || echo "ss命令不可用"
    echo ""
}

# 防火墙检查
check_firewall() {
    echo -e "${BLUE}========== 防火墙状态 ==========${NC}"
    
    # firewalld
    if systemctl is-active firewalld &>/dev/null; then
        echo "firewalld: ${GREEN}运行中${NC}"
        echo "默认区域: $(firewall-cmd --get-default-zone 2>/dev/null)"
        echo "开放端口:"
        firewall-cmd --list-ports 2>/dev/null
        echo "开放服务:"
        firewall-cmd --list-services 2>/dev/null
    else
        echo "firewalld: 未运行"
    fi
    echo ""
    
    # iptables
    echo "iptables规则:"
    iptables -L -n -v --line-numbers 2>/dev/null | head -30 || echo "iptables未配置或无规则"
    echo ""
}

# 网络服务检查
check_services() {
    echo -e "${BLUE}========== 网络服务状态 ==========${NC}"
    services=("NetworkManager" "systemd-networkd" "systemd-resolved" "sshd" "nginx" "httpd" "docker")
    for svc in "${services[@]}"; do
        status=$(systemctl is-active $svc 2>/dev/null || echo "unknown")
        if [ "$status" = "active" ]; then
            echo "$svc: ${GREEN}运行中${NC}"
        elif [ "$status" = "inactive" ]; then
            echo "$svc: ${YELLOW}未运行${NC}"
        else
            echo "$svc: 未安装/未知"
        fi
    done
    echo ""
}

# 日志检查
check_logs() {
    echo -e "${BLUE}========== 网络相关日志 ==========${NC}"
    
    # 内核网络日志
    echo "--- 内核网络日志(最近50条) ---"
    dmesg | grep -i "network\|eth\|net\|tcp\|udp" | tail -50 2>/dev/null || echo "无相关内核日志"
    echo ""
    
    # systemd日志
    if command -v journalctl &>/dev/null; then
        echo "--- systemd网络服务日志(最近30条) ---"
        journalctl -u NetworkManager --no-pager -n 30 2>/dev/null || echo "无NetworkManager日志"
        echo ""
        
        echo "--- 内核网络错误日志 ---"
        journalctl -k --no-pager -n 30 | grep -i "error\|fail\|drop" 2>/dev/null || echo "无相关错误日志"
        echo ""
    fi
    
    # 传统日志
    if [ -f /var/log/messages ]; then
        echo "--- /var/log/messages网络相关 ---"
        grep -i "network\|eth\|firewall" /var/log/messages | tail -20 2>/dev/null || echo "无相关日志"
        echo ""
    fi
    
    if [ -f /var/log/syslog ]; then
        echo "--- /var/log/syslog网络相关 ---"
        grep -i "network\|eth\|firewall" /var/log/syslog | tail -20 2>/dev/null || echo "无相关日志"
        echo ""
    fi
}

# 性能指标检查
check_performance() {
    echo -e "${BLUE}========== 网络性能指标 ==========${NC}"
    
    # 网卡速率
    echo "网卡速率信息:"
    for iface in $(ip -br link show | awk '{print $1}' | grep -v lo); do
        if command -v ethtool &>/dev/null; then
            echo "--- $iface ---"
            ethtool $iface 2>/dev/null | grep -E "Speed|Duplex|Link detected" || echo "无法获取ethtool信息"
        fi
    done
    echo ""
    
    # 网络连接数
    echo "TCP连接统计:"
    cat /proc/net/sockstat 2>/dev/null || echo "无法获取sockstat"
    echo ""
    
    # 路由缓存
    echo "路由缓存统计:"
    ip route show cache 2>/dev/null | wc -l | xargs -I{} echo "路由缓存条目数: {}"
    echo ""
}

# 抓包功能
capture_packets() {
    echo -e "${BLUE}========== 网络抓包 ==========${NC}"
    echo "如需抓包,请使用以下命令:"
    echo "  抓取特定接口所有流量: sudo tcpdump -i eth0 -w $OUTPUT_DIR/capture_all.pcap"
    echo "  抓取特定端口: sudo tcpdump -i any port 80 -w $OUTPUT_DIR/capture_http.pcap"
    echo "  抓取特定主机: sudo tcpdump -i any host 192.168.1.1 -w $OUTPUT_DIR/capture_host.pcap"
    echo "  抓取特定进程: sudo tcpdump -i any -Z root -w $OUTPUT_DIR/capture_proc.pcap"
    echo ""
    echo "注意: 抓包需要root权限,且可能产生大文件,请按需使用"
    echo ""
}

# 生成巡检报告
generate_report() {
    echo -e "${GREEN}========== 巡检完成 ==========${NC}"
    echo "报告保存位置: $OUTPUT_DIR"
    echo ""
    echo "打包命令:"
    echo "  tar czvf $OUTPUT_DIR.tar.gz $OUTPUT_DIR"
    echo ""
    echo "反馈研发时,请提供以下信息:"
    echo "  1. 本报告文件"
    echo "  2. 如有时序问题,提供tcpdump抓包文件(.pcap)"
    echo "  3. 问题发生时间点和现象描述"
}

# 主函数
main() {
    echo "Linux网络运维巡检脚本"
    echo "========================"
    echo ""
    
    get_os_info | tee -a "$REPORT_FILE"
    check_interfaces | tee -a "$REPORT_FILE"
    check_routes | tee -a "$REPORT_FILE"
    check_dns | tee -a "$REPORT_FILE"
    check_connectivity | tee -a "$REPORT_FILE"
    check_ports | tee -a "$REPORT_FILE"
    check_firewall | tee -a "$REPORT_FILE"
    check_services | tee -a "$REPORT_FILE"
    check_logs | tee -a "$REPORT_FILE"
    check_performance | tee -a "$REPORT_FILE"
    capture_packets | tee -a "$REPORT_FILE"
    generate_report | tee -a "$REPORT_FILE"
    
    # 保存原始命令输出(不带颜色)
    {
        echo "========== 原始数据备份 =========="
        echo "--- ip addr ---"
        ip addr show
        echo "--- ip route ---"
        ip route show
        echo "--- ss -tulnp ---"
        ss -tulnp 2>/dev/null || true
        echo "--- iptables ---"
        iptables -L -n 2>/dev/null || true
        echo "--- /etc/resolv.conf ---"
        cat /etc/resolv.conf 2>/dev/null || true
    } > "$OUTPUT_DIR/raw_data.txt" 2>&1
}

# 执行
main

使用方法:

bash 复制代码
chmod +x linux_network_inspect.sh
sudo ./linux_network_inspect.sh

9.2 排查速查表 (linux_network_cheatsheet.md):涵盖7大场景的快速参考。

一、物理层/链路层问题

现象 排查命令 解决思路
网卡不亮灯 ethtool eth0 / ip link show 检查网线、交换机端口、驱动
网卡状态DOWN ip link set eth0 up 启用网卡,检查NetworkManager
无IP地址 ip addr show / dhclient -v eth0 检查DHCP或手动配置静态IP
丢包严重 ip -s link show eth0 检查网线质量、网卡驱动、MTU设置
双工模式不匹配 ethtool eth0 强制指定速率/双工模式

二、网络层问题

现象 排查命令 解决思路
无法ping通网关 ip route show / ping <gateway> 检查路由表、网关配置、子网掩码
无法ping通外网 traceroute 223.5.5.5 检查默认路由、NAT配置、防火墙
路由不可达 ip route get <dest> 添加静态路由或检查动态路由
IP冲突 arping -I eth0 <ip> 更换IP或检查DHCP服务器

三、传输层问题

现象 排查命令 解决思路
端口不通 nc -zv <ip> <port> / telnet <ip> <port> 检查服务是否启动、防火墙规则
连接被拒绝 ss -tulnp / lsof -i :<port> 确认服务监听地址(0.0.0.0 vs 127.0.0.1)
连接超时 tcpdump -i any host<ip> and port <port> 抓包分析三次握手是否完成
大量TIME_WAIT ss -s / netstat -an 调整tcp_tw_reuse/recycle参数
大量CLOSE_WAIT ss -tan 检查应用程序是否及时关闭连接

四、应用层/DNS问题

现象 排查命令 解决思路
域名无法解析 dig <domain> / nslookup <domain> 检查DNS配置、DNS服务器状态
解析结果错误 dig +trace <domain> 检查DNS缓存、hosts文件
解析慢 dig @<dns-server> <domain> 更换DNS服务器、检查网络延迟
部分网站打不开 curl -v <url> 检查HTTP代理、HTTPS证书

五、防火墙问题

现象 排查命令 解决思路
端口已开放但外部不通 iptables -L -n / firewall-cmd --list-all 检查INPUT链、区域设置
防火墙规则不生效 iptables-save / firewall-cmd --reload 保存规则、重载防火墙
安全软件拦截 kysec_status (麒麟) 检查麒麟安全机制、SELinux
连接被重置 iptables -L -n -v 检查REJECT/DROP规则

六、性能问题

现象 排查命令 解决思路
网络延迟高 mtr --report <target> 定位延迟节点、检查带宽
带宽不足 iperf3 -c <server> 检查网卡速率、交换机端口
连接数过多 ss -s / cat /proc/net/sockstat 调整内核参数、优化应用
网卡软中断高 cat /proc/interrupts 开启RPS/XPS、调整中断亲和性

七、日志定位

场景 命令
查看网络服务日志 journalctl -u NetworkManager -f
查看内核网络日志 `dmesg
查看防火墙日志 journalctl -u firewalld -f
查看认证日志 journalctl -u sshd -f
实时跟踪所有日志 journalctl -f
查看历史网络错误 `journalctl --since "1 hour ago"

八、抓包分析

场景 命令
抓取所有流量 sudo tcpdump -i any -w capture.pcap
抓取特定端口 sudo tcpdump -i any port 80 -w http.pcap
抓取特定主机 sudo tcpdump -i any host 192.168.1.1
抓取特定网段 sudo tcpdump -i any net 192.168.1.0/24
只抓SYN包 sudo tcpdump 'tcp[tcpflags] & tcp-syn != 0'
抓取ICMP sudo tcpdump -i any icmp
限制抓包大小 sudo tcpdump -i any -s 0 -w full.pcap
轮转抓包(按大小) sudo tcpdump -i any -C 100 -W 5 -w rotate.pcap

9.3 巡检报告模板 (network_inspection_report_template.md):标准化报告格式,便于归档和反馈。

Linux网络运维巡检报告
基本信息
  • 巡检时间: {datetime}
  • 主机名: {hostname}
  • 操作系统: {os_version}
  • 内核版本: {kernel}
  • 巡检人: _____________
  • 业务系统: _____________

一、网络接口状态

1.1 接口列表

bash 复制代码
ip -br link show

结果记录:

接口名 状态 MAC地址 备注
eth0 UP xx:xx:xx:xx:xx:xx
lo UP 00:00:00:00:00:00

1.2 IP地址配置

bash 复制代码
ip -br addr show

结果记录:

接口名 IP地址 子网掩码 状态
eth0 192.168.1.100/24 255.255.255.0 正常

1.3 网卡统计信息

bash 复制代码
ip -s link show eth0

关注指标:

指标 RX值 TX值 是否正常
errors 0 0
dropped 0 0
overrun 0 -
二、路由与DNS

2.1 路由表

bash 复制代码
ip route show

关键路由:

目标网络 网关 接口 备注
default 192.168.1.1 eth0 默认路由

2.2 DNS配置

bash 复制代码
cat /etc/resolv.conf
resolvectl status

DNS服务器:

优先级 DNS地址 状态
1 223.5.5.5 正常
2 114.114.114.114 正常
三、连通性测试

3.1 基础连通性

测试目标 命令 结果 延迟
本地回环 ping 127.0.0.1 ✓通 <1ms
网关 ping 192.168.1.1 ✓通 1ms
外网IP ping 223.5.5.5 ✓通 15ms
外网域名 ping www.baidu.com ✓通 20ms

3.2 端口连通性

目标地址 端口 协议 结果 备注
192.168.1.10 22 TCP ✓通 SSH服务
192.168.1.10 80 TCP ✓通 HTTP服务
192.168.1.10 443 TCP ✓通 HTTPS服务
四、服务与端口

4.1 监听端口

bash 复制代码
ss -tulnp
协议 端口 服务 进程 状态
TCP 22 sshd 1234 LISTEN
TCP 80 nginx 5678 LISTEN

4.2 连接状态统计

bash 复制代码
ss -s
状态类型 数量 是否正常
ESTAB 45
TIME-WAIT 120 关注
CLOSE-WAIT 5
五、防火墙状态

5.1 firewalld状态

bash 复制代码
systemctl status firewalld
firewall-cmd --list-all

状态: running / stopped

开放端口: _____________

开放服务: _____________

5.2 iptables规则

bash 复制代码
iptables -L -n -v

关键规则记录: _____________

六、日志检查

6.1 内核日志

bash 复制代码
dmesg | grep -i network | tail -20

异常记录: _____________

6.2 服务日志

bash 复制代码
journalctl -u NetworkManager --no-pager -n 30

异常记录: _____________

七、性能指标

7.1 网卡性能

bash 复制代码
ethtool eth0
指标 当前值 期望值 状态
Speed 1000Mb/s 1000Mb/s
Duplex Full Full
Link detected yes yes

7.2 连接统计

bash 复制代码
cat /proc/net/sockstat
类型 数量 状态
TCP inuse 50
UDP inuse 10
八、问题记录与处理
序号 问题描述 发现时间 处理措施 处理结果 备注
1
2
九、巡检结论

网络状态正常,无需处理

发现轻微异常,已处理/需跟进

发现严重异常,已上报/紧急处理

巡检结论: _____________

下一步建议: _____________

十、附件清单

巡检脚本输出日志

tcpdump抓包文件(.pcap)

系统日志导出

其他: _____________


巡检人签字: _____________ 日期: _____________

审核人签字: _____________ 日期: _____________

第十部分:关键注意事项

  1. 权限要求 : 大部分网络排查命令需要root权限,建议实施工程师使用sudo或在客户授权下操作
  2. 生产环境谨慎操作: 修改防火墙规则、路由表前,务必确认有备用访问通道(如IPMI、Console)
  3. 及时备份 : 修改网络配置前,备份原配置文件(如/etc/netplan/*.yaml/etc/sysconfig/network-scripts/ifcfg-*
  4. 记录基线: 系统正常运行时记录网络性能基线,便于故障时对比
  5. 版本差异: 麒麟V10桌面版与服务器版网络管理工具可能不同,先确认系统版本再执行命令
  6. 安全机制: 国产系统可能集成额外安全模块(如Kysec),排查时需综合考虑

第十一部分:推荐学习路径

  1. 基础: 掌握TCP/IP协议栈、OSI七层模型
  2. 工具 : 熟练使用ip/ss/tcpdump/wireshark
  3. 进阶 : 理解Linux内核网络参数调优(sysctl
  4. 实战: 建立个人故障案例库,积累排查经验

🎯 核心原则 : "先连通、后优化;先抓包、后猜测" ------ 任何网络问题,用tcpdump抓包分析永远是最直接有效的手段。


附录:核心概念速查表

概念 一句话解释
协议 设备间通信的"语法规则"
IP地址 网络中的逻辑地址,类似"省市区街道"
MAC地址 网卡的物理地址,类似"门牌号"
端口 区分同一主机不同服务的逻辑通道
路由 选择数据包最佳传输路径的过程
DNS 互联网的"电话簿",域名↔IP转换
防火墙 网络安全的"门卫",控制数据进出
NAT 私有IP↔公网IP的地址转换
VLAN 把物理交换机逻辑划分成多个独立网络
三次握手 TCP建立连接的三个步骤(SYN→SYN+ACK→ACK)
四次挥手 TCP断开连接的四个步骤
MTU 最大传输单元,以太网默认1500字节
CIDR 用"/数字"表示子网掩码的简洁写法
DHCP 自动分配IP地址等网络参数的协议
ICMP 网络诊断和差错报告的协议(ping用它)
ARP IP地址→MAC地址的查询协议
TCP 可靠、面向连接的传输协议(挂号信)
UDP 快速、不可靠的传输协议(明信片)
socket 传输层连接的抽象,= IP+端口
pcap 标准网络抓包文件格式

本文档基于麒麟V10、Ubuntu 22.04等主流系统实践整理,结合OSI七层与TCP/IP四层模型,从零基础到实战排查,适合实施工程师系统学习。