2.3.6 常用网络管理工具与实践
常用网络管理工具应围绕“查看—诊断—配置—验证”的流程使用,优先保证可读性与可回滚性,避免在生产环境进行不可控变更。本节给出工具原理草图、安装方式、关键命令解释、完整示例、排错与练习。
原理草图:网络排查闭环#
安装与准备(发行版通用)#
# Debian/Ubuntu
sudo apt update
sudo apt install -y iproute2 net-tools traceroute mtr-tiny dnsutils \
ethtool tcpdump curl netcat-openbsd
# RHEL/CentOS/Rocky/Alma
sudo yum install -y iproute net-tools traceroute mtr ethtool \
tcpdump curl nc bind-utils
查看与状态类工具(含解释与示例)#
ip addr/ip link:查看接口、地址与链路状态;UP表示管理状态可用,LOWER_UP表示物理链路已通。ip route:查看路由表;default为默认路由,metric为优先级。ss -lntup:查看监听端口与进程映射。ethtool <iface>:查看物理链路、速率与双工信息。
示例:查看接口与路由并保存现状
ip link show
ip addr show
ip route show
# 保存快照,便于回滚与比对
mkdir -p /var/tmp/net_snapshot
ip addr show > /var/tmp/net_snapshot/ip_addr.txt
ip route show > /var/tmp/net_snapshot/ip_route.txt
ss -lntup > /var/tmp/net_snapshot/ss_listen.txt
诊断与连通性类工具(含解释与示例)#
ping -c:基础连通性与延迟观测。traceroute/tracepath:定位路由路径。mtr:持续观测延迟与丢包。curl/nc -zv:验证端口连通与应用响应。dig/nslookup:验证 DNS 解析链路与结果一致性。
示例:从链路到应用逐层验证
# 1) 链路与路由
ping -c 3 192.168.1.1
# 2) 路由路径
traceroute -n 8.8.8.8
# 3) DNS 解析
dig +short www.example.com
# 4) TCP 端口联通性
nc -zv www.example.com 80
# 5) 应用层响应
curl -I http://www.example.com
配置与维护类工具(含解释与示例)#
ip addr add/del、ip route add/del:临时配置,重启后失效。nmcli/nmtui:NetworkManager 环境持久化配置。ifup/ifdown:传统网络脚本环境使用。resolvectl/systemd-resolve:systemd-resolved 环境下 DNS 查看与配置。
示例:临时添加地址与路由并验证
# 添加临时 IP(重启失效)
sudo ip addr add 192.168.10.10/24 dev eth0
# 添加临时默认路由
sudo ip route add default via 192.168.10.1 dev eth0 metric 100
# 验证
ip addr show dev eth0
ip route show
ping -c 3 192.168.10.1
示例:NetworkManager 持久化配置
# 查看连接名称
nmcli con show
# 假设连接名为 "System eth0"
sudo nmcli con mod "System eth0" ipv4.addresses 192.168.10.10/24
sudo nmcli con mod "System eth0" ipv4.gateway 192.168.10.1
sudo nmcli con mod "System eth0" ipv4.dns "114.114.114.114 8.8.8.8"
sudo nmcli con mod "System eth0" ipv4.method manual
# 使配置生效
sudo nmcli con up "System eth0"
# 验证
nmcli con show "System eth0" | egrep 'ipv4.addresses|ipv4.gateway|ipv4.dns'
抓包与分析类工具(含解释与示例)#
tcpdump -i <iface> -nn:抓取数据包,-nn禁止解析主机名和端口名。ss -o state:查看连接状态与超时。
示例:针对 80 端口排查 HTTP 失败
# 1) 查看连接状态
ss -o state syn-sent '( dport = :80 )'
# 2) 抓包(限制端口与主机)
sudo tcpdump -i eth0 -nn host 203.0.113.10 and port 80 -c 50
# 3) 结合 curl 验证
curl -v http://203.0.113.10/
常见排错场景与步骤#
1) 访问不了外网
- 检查接口状态:
ip link show dev eth0
- 检查默认路由:
ip route | grep default
- 检查 DNS:
resolvectl status | sed -n '1,120p'
dig +short www.baidu.com
2) 端口不通
- 检查服务是否监听:
ss -lntup | grep ':8080'
- 防火墙与安全组:
# 本机防火墙(示例)
sudo iptables -L -n | sed -n '1,80p'
- 远端连通性:
nc -zv 203.0.113.10 8080
3) 间歇性丢包
- 观测:
mtr -rw 8.8.8.8
- 检查链路速率与双工:
ethtool eth0 | egrep 'Speed|Duplex|Link detected'
实战练习(含预期效果)#
1) 用 ip 临时添加地址并验证连通
- 任务:
sudo ip addr add 10.10.10.10/24 dev eth0
ping -c 3 10.10.10.1
- 预期:
ping有响应,ip addr可见新增地址。
2) 用 nmcli 持久化 DNS 并验证解析
- 任务:
sudo nmcli con mod "System eth0" ipv4.dns "8.8.8.8 1.1.1.1"
sudo nmcli con up "System eth0"
dig +short example.com
- 预期:返回 A 记录,解析成功。
3) 用 tcpdump 定位连接失败
- 任务:
sudo tcpdump -i eth0 -nn host 203.0.113.10 and port 443 -c 20
curl -vk https://203.0.113.10/
- 预期:抓包中出现 SYN/SYN-ACK/ACK 或 TLS 交互;若无 SYN-ACK,说明链路或端口被阻断。
关键命令速查(命令→作用)#
ip addr:查看/配置 IP 地址ip route:查看/配置路由ss -lntup:查看监听端口与进程ethtool eth0:链路速率与双工ping -c:连通性traceroute:路径定位mtr:丢包/延迟统计dig:DNS 解析nmcli:持久化网络配置tcpdump:抓包分析