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 通网关,但出不去"或者"某些网段访问不了"。我总结了一套排查流程,分享给你。
排查步骤:
- 确认IP配置:
ip addr看接口状态和IP是否正确。 - 检查默认网关:
ip route show default看有没有默认路由。 - 测试网关连通性:
ping 网关IP,不通说明二层或三层有问题。 - 跟踪路由路径:
traceroute 目标IP看在哪一跳断了。 - 检查路由表条目:
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配置到路由表,再到故障排查,你看一遍就能理清脉络。
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后路由再跟踪"的顺序走,大部分问题都能定位。多敲命令,多读输出,慢慢就有感觉了。