服务器路由分析是排查网络连通性、性能瓶颈及安全策略的关键操作。以下是针对 Linux 服务器的完整路由分析指南:
—
一、基础路由诊断工具**
#### 1. **路由表查看 (`route` / `ip route`)**
“`bash
# 传统命令
route -n
# 推荐命令 (CentOS 7+)
ip route show
“`
**输出关键列**:
– `Destination`:目标网络或主机
– `Gateway`:下一跳地址(`0.0.0.0` 表示直连)
– `Genmask`:子网掩码
– `Iface`:出口网卡(如 eth0)
#### 2. **实时路径追踪**
– **跨平台追踪**:
“`bash
traceroute -n 8.8.8.8 # -n 禁用DNS解析加速
“`
– **更强大的替代工具**:
“`bash
mtr –report -n 8.8.8.8 # 综合ping+traceroute,–report生成汇总报告
“`
—
二、深度分析场景**
#### 1. **多网卡路由策略检查**
“`bash
ip rule list # 查看路由策略数据库
ip route show table all # 显示所有路由表
“`
**典型场景**:
双网卡服务器(如 内网eth0 + 公网eth1)需确保访问内网IP时不走公网网关。
#### 2. **路由缓存分析**
“`bash
ip route get 8.8.8.8 # 查看特定IP的路由路径
ss -tunp | grep “:80” # 检查80端口连接状态
“`
#### 3. **防火墙干扰排查**
“`bash
# 检查是否有DROP规则
sudo iptables -L -n -v –line-numbers
# NAT表检查(影响出口IP)
sudo iptables -t nat -L -n
“`
—
三、性能瓶颈定位**
#### 1. **网络延迟分析**
“`bash
# 持续测试到网关的延迟
ping -c 10 $(ip route show | grep default | awk ‘{print $3}’)
“`
– **异常情况**:
延迟突增或丢包 → 检查交换机端口、网卡状态 (`ethtool eth0`)
#### 2. **带宽瓶颈检测**
“`bash
# 快速带宽测试 (需安装 iperf3)
iperf3 -c <目标服务器> -p 5201 -t 10
“`
– **替代方案**:
`iftop`(实时流量监控)或 `nload`(网卡带宽统计)
—
四、高级路由问题**
#### 1. **策略路由失效**
– **症状**:VPN用户无法走指定出口
– **解决方案**:
“`bash
# 创建自定义路由表
echo “200 vpn_route” >> /etc/iproute2/rt_tables
ip route add default via 10.8.0.1 table vpn_route
ip rule add from 10.8.0.0/24 table vpn_route
“`
#### 2. **BGP/OSPF路由泄露**
– **诊断工具**:
“`bash
birdc show route all # 若使用BIRD
vtysh -c “show ip bgp” # 若使用FRRouting
“`
—
五、自动化分析脚本**
“`bash
#!/bin/bash
echo “### 路由摘要 ###”
ip route show | grep -E ‘default|via’
echo -e “\n### 到Google DNS的路径 ###”
mtr –report -n 8.8.8.8 | tail -n+2
echo -e “\n### 活动连接TOP 5 ###”
ss -tunp | awk ‘{print $6}’ | cut -d’:’ -f1 | sort | uniq -c | sort -nr | head -5
“`
**输出示例**:
“`
### 路由摘要 ###
default via 192.168.1.1 dev eth0
10.10.0.0/24 via 172.17.0.1 dev docker0
### 到Google DNS的路径 ###
1.|– 192.168.1.1 0.0% 10
2.|– 112.65.1.1 0.0% 5.2
…
### 活动连接TOP 5 ###
12 10.10.0.5 # 数据库服务器
8 54.239.28.85 # AWS S3
“`
六、关键决策点**
| **问题现象** | **可能原因** | **解决方向** |
|—————————-|————————–|————————–|
| 特定IP无法访问 | 路由缺失/防火墙拦截 | `ip route add` 或 `iptables` 放行 |
| 外网延迟高但内网正常 | 运营商线路问题 | 联系ISP或多线BGP切换 |
| 双网卡服务器出口IP错误 | 策略路由未生效 | 检查 `ip rule` 优先级 |
| 物理服务器丢包 | 网卡故障/MTU不匹配 | `ethtool -K eth0 rx off` 或调整MTU |
> 💡 **终极建议**:复杂网络环境使用 **NetworkManager** + **nftables** 替代传统工具,并配置持久化保存(`nmcli con mod` + `systemctl reload network`)。
需要进一步分析具体场景?请提供以下信息:
1. `ip route show` 输出
2. `ip addr show` 网卡配置
3. 故障目标IP及端口