3. 网络性能观测工具全景与选型

网络配置,说白了就是让机器能说话、知道往哪走。IP地址是它的身份证,路由表是它的地图。这两样搞不定,机器就是个网络哑巴。我这些年排查网络问题,十有八九最后都落到IP配错或路由丢了上。

今天咱们就把 ip addr 和 ip route 这两个命令吃透,顺便聊聊静态IP配置、默认网关,以及路由表故障怎么定位。

3.1 ip addr:看清你的网络身份证

ip addr 是查看和配置IP地址的核心命令。我个人习惯,上机器第一件事就是敲它,看看当前网络接口状态。

# 查看所有接口的IP信息
ip addr

# 只看某个接口,比如 eth0
ip addr show eth0

# 添加一个IP地址
ip addr add 192.168.1.100/24 dev eth0

# 删除一个IP地址
ip addr del 192.168.1.100/24 dev eth0

输出里有个关键字段叫 state。你想想看,如果看到 state DOWN,那接口根本没启用,配再多IP也没用。我遇到过好几次,同事说"IP配好了就是不通",我一查,网卡都没 up。

核心字段解读:

  • state UP/DOWN:接口是否启用。DOWN 时物理层都不工作。
  • link/ether:MAC地址,二层通信用。
  • inet:IPv4地址,后面跟的是 CIDR 格式(如 192.168.1.100/24)。
  • brd:广播地址,自动计算出来的。
  • scope global:全局可用;scope link 表示仅链路本地。

小技巧:用 ip -br addr 可以看精简输出,一行一个接口,适合快速扫描。我排查问题时经常用这个,一眼扫过去就知道哪个接口没配IP。

3.2 ip route:读懂你的网络地图

路由表决定了数据包往哪走。没有路由,IP地址就是个摆设。我曾经在数据中心排过一个故障,两台机器IP能 ping 通,但业务端口就是连不上,最后发现是路由表里缺了一条回程路由。

# 查看路由表
ip route show

# 或者简写
ip route

# 添加一条静态路由
ip route add 10.0.0.0/8 via 192.168.1.1 dev eth0

# 添加默认网关
ip route add default via 192.168.1.1

# 删除路由
ip route del 10.0.0.0/8

路由表里最重要的就是 默认网关。它是一条特殊路由:default via 192.168.1.1。说白了,所有不在路由表里的目标,都走这个出口。没有它,你的机器只能跟同网段通信,出不了门。

路由条目 含义 典型场景
default via 192.168.1.1 默认网关,匹配所有未明确指定的目标 访问互联网、跨网段通信
10.0.0.0/8 via 192.168.1.254 静态路由,指定10网段走特定下一跳 连接内部专网、VPN 网络
192.168.1.0/24 dev eth0 proto kernel 直连路由,自动生成 同网段内通信

注意:路由匹配遵循最长前缀匹配原则。比如目标 10.0.0.5,如果同时有 10.0.0.0/8 和 10.0.0.0/16,会走更精确的 /16 那条。这个细节在排查"为什么路由没生效"时特别重要。

3.3 配置静态IP与默认网关

临时配置用 ip 命令,但重启就丢了。永久配置得改配置文件。不同发行版文件位置不一样,我以 CentOS/RHEL 7+ 和 Ubuntu 18.04+ 为例。

CentOS/RHEL 7+:

# 编辑 /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=static          # 静态IP
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
ONBOOT=yes

# 重启网络服务
systemctl restart network

Ubuntu 18.04+(使用 netplan):

# 编辑 /etc/netplan/01-netcfg.yaml
network:
  version: 2
  ethernets:
    eth0:
      addresses:
        - 192.168.1.100/24
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]

# 应用配置
netplan apply

避坑指南:我曾经在 Ubuntu 上改完 netplan 忘了 netplan apply,重启后配置没生效,排查了半天。记住,改完配置一定要应用或重启网络服务。

3.4 路由表分析与故障排查

路由出问题,表现就是"能 ping 通网关,但出不去"或者"某些网段访问不了"。我总结了一套排查流程,分享给你。

排查步骤:

  1. 确认IP配置:ip addr 看接口状态和IP是否正确。
  2. 检查默认网关:ip route show default 看有没有默认路由。
  3. 测试网关连通性:ping 网关IP,不通说明二层或三层有问题。
  4. 跟踪路由路径:traceroute 目标IP 看在哪一跳断了。
  5. 检查路由表条目:ip route get 目标IP 看内核实际选路结果。

ip route get 这个命令特别实用。它会告诉你,对于某个目标IP,内核会走哪条路由、从哪个接口出去。我排查"为什么访问不了某台服务器"时,第一步就是敲这个。

# 查看内核如何路由到 10.0.0.5
ip route get 10.0.0.5
# 输出示例:10.0.0.5 via 192.168.1.254 dev eth0 src 192.168.1.100

常见路由故障:

  • 没有默认网关:只能访问同网段,出不去。用 ip route add default via ... 添加。
  • 网关不可达:默认网关配了,但 ping 不通。检查网关设备或 VLAN 配置。
  • 路由冲突:两条路由匹配同一个目标,但下一跳不同。用 ip route 查看并删除错误条目。
  • 回程路由缺失:数据包能出去,但回不来。检查对端设备的路由表。

3.5 知识体系:IP与路由配置全景图

下面这张图把本章的核心知识点串起来了。从IP配置到路由表,再到故障排查,你看一遍就能理清脉络。

IP地址与路由配置知识体系 IP地址与路由配置知识体系 IP地址配置 ip addr 命令 静态IP配置文件 接口状态检查 路由配置 ip route 命令 默认网关配置 静态路由添加/删除 故障排查 ip route get 诊断 traceroute 路径跟踪 路由表冲突分析 核心排查思路 1. 先确认IP:ip addr → 接口状态、IP地址、子网掩码 2. 再看路由:ip route → 默认网关、静态路由条目 3. 最后诊断:ip route get → 内核实际选路结果 4. 路径跟踪:traceroute → 定位故障节点

3.6 实战案例:一次路由丢失的排查

我记得有一次,线上某台应用服务器突然无法访问数据库。数据库在同一机房的不同网段。我上去一看:

# 第一步:检查IP
ip addr show eth0
# 输出正常,IP 192.168.1.100/24

# 第二步:检查路由
ip route show
# 只有一条直连路由:192.168.1.0/24 dev eth0
# 默认网关丢了!

# 第三步:添加默认网关
ip route add default via 192.168.1.1

# 第四步:验证
ping 数据库IP
# 通了

原因是什么?之前有人手动删了默认路由,重启网络服务后也没恢复。嗯,这里要注意,systemctl restart network 在某些场景下会清空手动添加的路由,只保留配置文件里的。所以永久配置一定要写进文件里。

重要提醒:临时用 ip route add 添加的路由,重启网络服务或重启机器后会丢失。需要持久化的路由,务必写入配置文件(如 CentOS 的 /etc/sysconfig/network-scripts/route-eth0 或 Ubuntu 的 netplan 配置)。

好了,IP地址和路由配置这块,核心就是三件事:配对IP、设对网关、看懂路由表。排查时按"先IP后路由再跟踪"的顺序走,大部分问题都能定位。多敲命令,多读输出,慢慢就有感觉了。