Skip to content

route 命令:网络路由表管理工具

1. 命令简介

route 命令是一个用于查看和操作 IP 路由表的网络管理工具。它允许系统管理员添加、删除或修改静态路由规则,这对于网络配置和故障排除非常重要。在许多现代 Linux 系统中,route 命令正逐渐被 ip route 命令取代,但它仍然在许多环境中广泛使用。

2. 基本语法

bash
route [-f] [-p] [命令 [目标] [网关] [网络掩码] [跃点数]] [if]

3. 常用选项详解

  • -n: 不解析名字,以数字形式显示地址
  • -e: 以更详细的格式显示路由表
  • -net: 目标是一个网络
  • -host: 目标是一个主机
  • add: 添加一个路由
  • del: 删除一个路由
  • gw: 指定网关
  • metric: 设置路由跳数
  • netmask: 指定子网掩码

4. 基础用法示例

显示当前路由表

bash
route -n

添加一个默认网关

bash
sudo route add default gw 192.168.1.1

添加一个静态路由

bash
sudo route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.1

删除一个路由

bash
sudo route del -net 192.168.2.0 netmask 255.255.255.0

5. 高级用法和技巧

添加一个主机路由

bash
sudo route add -host 192.168.2.10 gw 192.168.1.1

通过特定接口添加路由

bash
sudo route add -net 192.168.3.0 netmask 255.255.255.0 dev eth1

添加一个拒绝路由

bash
sudo route add -net 192.168.4.0 netmask 255.255.255.0 reject

修改默认路由的跃点数

bash
sudo route add default gw 192.168.1.1 metric 2

6. 实际应用场景

设置临时路由进行网络测试

bash
#!/bin/bash

# 添加临时路由
sudo route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.100

# 执行网络测试
ping -c 4 10.1.1.1

# 移除临时路由
sudo route del -net 10.0.0.0 netmask 255.0.0.0

脚本检查并修复默认路由

bash
#!/bin/bash

# 检查默认路由
if ! route -n | grep -q '^0\.0\.0\.0'; then
    echo "默认路由丢失,正在重新添加..."
    sudo route add default gw 192.168.1.1
else
    echo "默认路由正常"
fi

7. 性能考虑

  • route 命令本身执行速度快,对系统性能影响小。
  • 频繁修改路由表可能会影响网络性能,特别是在大型网络中。
  • 在繁忙的系统上,大量的路由项可能会略微增加路由查找时间。
  • 对于复杂的路由配置,考虑使用更高级的工具如 ip route 或路由守护进程(如 quagga)。

8. 安全注意事项

  • 修改路由表需要 root 权限,确保只有授权用户可以执行此操作。
  • 错误的路由配置可能导致网络连接问题或安全漏洞。
  • 在生产环境中修改路由时要格外小心,最好先在测试环境中验证。
  • 考虑使用防火墙规则来补充路由配置,以增强网络安全。

9. 与其他工具的集成

结合 Netstat 查看网络状态

bash
route -n && netstat -rn

使用 Traceroute 验证路由

bash
sudo route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.1 && traceroute 192.168.2.100

与 Ip 命令对比使用

bash
route -n && ip route show

10. 故障排除

  • 如果添加路由失败,检查网关是否可达。
  • 使用 route -n 确认路由是否正确添加或删除。
  • 如果路由不生效,检查是否有更具体的路由覆盖了它。
  • 在虚拟化环境中,确保虚拟网络接口配置正确。
  • 如果遇到 "Network is unreachable" 错误,检查网络接口和 IP 配置。

11. 相关命令

  • ip route 命令:更现代的路由管理工具
  • netstat 命令:网络统计信息
  • ifconfig 命令:网络接口配置
  • traceroute 命令:显示到目标主机的路由路径
  • iptables 命令:配置 Linux 防火墙规则