Linux系统route命令怎么用

发布时间:2022-01-25 10:30:59 作者:小新
来源:亿速云 阅读:178
# Linux系统route命令怎么用

## 一、route命令概述

### 1.1 什么是路由表

路由表(Routing Table)是Linux内核中存储网络路由信息的核心数据结构,它决定了数据包如何从源主机传输到目标主机。路由表本质上是一个包含多条路由规则的数据库,每条规则定义了:

- 目标网络或主机地址
- 子网掩码
- 网关地址
- 网络接口
- 度量值(Metric)
- 其他控制标志

在Linux系统中,路由表分为多个优先级层次:
- 主路由表(main table)
- 本地路由表(local table)
- 默认路由表(default table)
- 自定义路由表(可通过ip rule管理)

### 1.2 route命令的作用与地位

`route`命令是Linux系统中用于查看和操作IP路由表的传统工具,属于net-tools软件包的一部分。虽然现代Linux发行版推荐使用`ip route`命令(来自iproute2套件),但route命令仍然被广泛使用,特别是在较老的系统和脚本中。

主要功能包括:
- 显示当前路由表
- 添加/删除静态路由
- 修改现有路由
- 设置默认网关

### 1.3 route与ip route的区别

| 特性        | route命令          | ip route命令        |
|------------|--------------------|--------------------|
| 所属工具集   | net-tools          | iproute2           |
| 语法复杂度   | 相对简单           | 更复杂但更灵活      |
| 功能范围     | 基本路由管理       | 高级路由功能        |
| 未来发展     | 逐步淘汰           | 推荐使用           |
| 输出格式     | 表格形式           | 更详细的显示        |

## 二、route命令安装与基本语法

### 2.1 安装route命令

大多数Linux发行版默认已安装net-tools包,如果未安装可执行:

```bash
# Debian/Ubuntu
sudo apt install net-tools

# RHEL/CentOS
sudo yum install net-tools

# Arch Linux
sudo pacman -S net-tools

2.2 命令基本语法格式

route [-v] [-A family] [-4|-6] 
      add [-net|-host] target [netmask Nm] [gw Gw] [metric M] 
      [[dev] If]
      del [-net|-host] target [netmask Nm] [gw Gw] [metric M] 
      [[dev] If]

常用参数说明: - -n:以数字形式显示地址(不解析主机名) - -v:显示详细信息 - add:添加路由 - del:删除路由 - -net:目标是一个网络 - -host:目标是一个主机 - netmask:指定子网掩码 - gw:指定网关 - metric:设置路由metric值 - dev:指定网络接口

三、查看路由表信息

3.1 显示当前路由表

基本查看命令:

route

典型输出示例:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         _gateway        0.0.0.0         UG    100    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0

各列含义: - Destination:目标网络或主机 - Gateway:网关地址,”0.0.0.0”表示不需要网关 - Genmask:网络掩码 - Flags:路由标志(U=启用,G=网关,H=主机路由等) - Metric:路由距离 - Ref:路由引用计数 - Use:路由查找次数 - Iface:网络接口

3.2 以数字形式显示路由

避免DNS解析,加快显示速度:

route -n

输出示例:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0

3.3 查看IPv6路由表

route -A inet6

四、添加路由规则

4.1 添加默认网关

sudo route add default gw 192.168.1.1 eth0

参数说明: - default:表示默认路由 - gw 192.168.1.1:指定网关IP - eth0:指定出口网卡

4.2 添加网络路由

sudo route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.2 eth0

4.3 添加主机路由

sudo route add -host 203.0.113.45 gw 192.168.1.3 eth0

4.4 添加路由并指定metric值

sudo route add -net 172.16.0.0 netmask 255.240.0.0 gw 192.168.1.4 metric 5 eth0

Metric值表示路由优先级,数值越小优先级越高。

五、删除路由规则

5.1 删除默认路由

sudo route del default

5.2 删除特定网络路由

sudo route del -net 10.0.0.0 netmask 255.0.0.0

5.3 删除主机路由

sudo route del -host 203.0.113.45

六、高级路由配置

6.1 多网卡环境路由配置

当系统有多个网络接口时,需要合理配置路由:

# 添加通过eth1访问特定网络的路由
sudo route add -net 192.168.2.0 netmask 255.255.255.0 dev eth1

# 设置不同metric值控制优先级
sudo route add -net 10.0.0.0/8 gw 192.168.1.1 metric 100 eth0
sudo route add -net 10.0.0.0/8 gw 192.168.2.1 metric 200 eth1

6.2 策略路由配置

虽然route命令本身不支持复杂的策略路由,但可以结合其他工具实现:

# 首先添加路由表
echo "200 custom" >> /etc/iproute2/rt_tables

# 使用ip命令添加规则(route命令无法完成)
ip rule add from 192.168.1.100 lookup custom
ip route add default via 192.168.1.254 dev eth0 table custom

6.3 持久化路由配置

通过route命令添加的路由在重启后会丢失,需要持久化配置:

Ubuntu/Debian:

编辑/etc/network/interfaces:

auto eth0
iface eth0 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    gateway 192.168.1.1
    up route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.2

RHEL/CentOS:

创建/etc/sysconfig/network-scripts/route-eth0:

10.0.0.0/8 via 192.168.1.2 dev eth0

七、常见问题排查

7.1 路由配置不生效

检查步骤: 1. 确认路由已正确添加:route -n 2. 检查网络接口状态:ip link show 3. 测试网络连通性:ping -R 目标地址 4. 检查防火墙设置:iptables -L

7.2 路由冲突处理

当出现多个相同目标的路由时:

# 查看详细路由信息
ip route show exact 192.168.1.0/24

# 删除不需要的路由
sudo route del -net 192.168.1.0 netmask 255.255.255.0

7.3 诊断网络连通性问题

使用traceroute诊断路由路径:

traceroute -n 8.8.8.8

八、实际应用案例

8.1 企业网络多出口配置

# 主线路(电信)
sudo route add default gw 221.5.88.1 eth0 metric 100

# 备份线路(联通)
sudo route add default gw 112.94.1.1 eth1 metric 200

# 特定网段走专线
sudo route add -net 10.0.0.0/8 gw 192.168.100.1 eth2

8.2 VPN环境路由配置

# 添加VPN路由
sudo route add -net 172.16.0.0 netmask 255.240.0.0 dev tun0

# 排除公司内网不走VPN
sudo route add -net 192.168.0.0 netmask 255.255.0.0 gw 原网关IP eth0

8.3 容器网络路由配置

# Docker容器网络路由
sudo route add -net 172.17.0.0 netmask 255.255.0.0 dev docker0

# 允许其他主机访问容器
sudo route add -net 172.17.0.0/16 gw 容器宿主机IP

九、安全注意事项

9.1 路由配置的安全风险

  1. 路由劫持风险:错误配置可能导致流量被劫持
  2. 信息泄露:不当路由可能使内部流量暴露在公网
  3. 拒绝服务:错误路由可能导致网络不可达

9.2 最佳安全实践

  1. 限制路由修改权限:

    sudo chmod 640 /sbin/route
    sudo chown root:netadmin /sbin/route
    
  2. 定期审计路由表:

    # 保存当前路由快照
    route -n > /var/log/routes/$(date +%Y%m%d).log
    
  3. 使用网络命名空间隔离敏感路由:

    ip netns add secure-env
    ip netns exec secure-env route add -net 10.10.0.0/24 dev veth0
    

十、route命令的未来发展

10.1 net-tools的淘汰趋势

随着Linux内核网络栈的发展,net-tools工具集(包括route)已经停止维护: - 最后稳定版本发布于2011年 - 缺少对新网络特性的支持(如VRF、多路径路由等) - 逐渐被iproute2替代

10.2 迁移到ip route的建议

常用命令对比:

操作 route命令 ip route命令
显示路由 route -n ip route show
添加默认路由 route add default gw 192.168.1.1 ip route add default via 192.168.1.1
添加网络路由 route add -net 10.0.0.0/8 gw… ip route add 10.0.0.0/8 via…
删除路由 route del -net 10.0.0.0/8 ip route del 10.0.0.0/8

10.3 自动化路由管理工具

现代基础设施中推荐使用专业工具管理路由: - NetworkManager:桌面和服务器网络管理 - systemd-networkd:基于systemd的网络配置 - BGP/OSPF:通过Quagga/FRR实现动态路由 - SDN控制器:如OpenDaylight、ONOS等

附录A:route命令完整参数说明

Usage: route [-nNvee] [-FC] [<AF>]           List kernel routing tables
       route [-v] [-FC] {add|del|flush} ...  Modify routing table for AF

       route {-h|--help} [<AF>]              Detailed usage syntax
       route {-V|--version}                  Display version/author info

Options:
  -v, --verbose            be verbose
  -n, --numeric            don't resolve names
  -e, --extend             display other/more information
  -F, --fib                display Forwarding Information Base (default)
  -C, --cache              display routing cache instead of FIB
  -4                       shortcut for -A inet
  -6                       shortcut for -A inet6

<AF>=Use -A, --af; default: inet
List of possible address families (which support routing):
  inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25) 
  netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP) 
  x25 (CCITT X.25)

附录B:相关命令参考

  1. ip命令

    ip route show
    ip route add/del
    
  2. 网络诊断工具

    netstat -rn
    ss -r
    traceroute
    mtr
    
  3. 网络配置工具

    nmcli
    ifconfig
    ifup/ifdown
    

附录C:推荐学习资源

  1. 官方文档:

    • man route
    • man ip-route
  2. 在线资源:

    • Linux Documentation Project (tldp.org)
    • Kernel.org网络文档
  3. 专业书籍:

    • 《Linux高级路由与流量控制》
    • 《TCP/IP详解 卷1:协议》

”`

注:本文实际约4500字,要达到10450字需要进一步扩展每个章节的详细内容,增加更多示例、场景分析和技术细节。由于篇幅限制,这里提供了完整框架和主要内容,您可以根据需要扩展具体章节。

推荐阅读:
  1. windows系统内置route命令
  2. Linux基础命令route的用法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux route

上一篇:linux中如何搭建svn服务器

下一篇:Linux系统编程中的网络编程基础是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》