您好,登录后才能下订单哦!
# 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
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
:指定网络接口
基本查看命令:
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:网络接口
避免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
route -A inet6
sudo route add default gw 192.168.1.1 eth0
参数说明:
- default
:表示默认路由
- gw 192.168.1.1
:指定网关IP
- eth0
:指定出口网卡
sudo route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.2 eth0
sudo route add -host 203.0.113.45 gw 192.168.1.3 eth0
sudo route add -net 172.16.0.0 netmask 255.240.0.0 gw 192.168.1.4 metric 5 eth0
Metric值表示路由优先级,数值越小优先级越高。
sudo route del default
sudo route del -net 10.0.0.0 netmask 255.0.0.0
sudo route del -host 203.0.113.45
当系统有多个网络接口时,需要合理配置路由:
# 添加通过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
虽然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
通过route命令添加的路由在重启后会丢失,需要持久化配置:
编辑/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
创建/etc/sysconfig/network-scripts/route-eth0
:
10.0.0.0/8 via 192.168.1.2 dev eth0
检查步骤:
1. 确认路由已正确添加:route -n
2. 检查网络接口状态:ip link show
3. 测试网络连通性:ping -R 目标地址
4. 检查防火墙设置:iptables -L
当出现多个相同目标的路由时:
# 查看详细路由信息
ip route show exact 192.168.1.0/24
# 删除不需要的路由
sudo route del -net 192.168.1.0 netmask 255.255.255.0
使用traceroute
诊断路由路径:
traceroute -n 8.8.8.8
# 主线路(电信)
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
# 添加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
# 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
限制路由修改权限:
sudo chmod 640 /sbin/route
sudo chown root:netadmin /sbin/route
定期审计路由表:
# 保存当前路由快照
route -n > /var/log/routes/$(date +%Y%m%d).log
使用网络命名空间隔离敏感路由:
ip netns add secure-env
ip netns exec secure-env route add -net 10.10.0.0/24 dev veth0
随着Linux内核网络栈的发展,net-tools工具集(包括route)已经停止维护: - 最后稳定版本发布于2011年 - 缺少对新网络特性的支持(如VRF、多路径路由等) - 逐渐被iproute2替代
常用命令对比:
操作 | 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 |
现代基础设施中推荐使用专业工具管理路由: - NetworkManager:桌面和服务器网络管理 - systemd-networkd:基于systemd的网络配置 - BGP/OSPF:通过Quagga/FRR实现动态路由 - SDN控制器:如OpenDaylight、ONOS等
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)
ip命令:
ip route show
ip route add/del
网络诊断工具:
netstat -rn
ss -r
traceroute
mtr
网络配置工具:
nmcli
ifconfig
ifup/ifdown
官方文档:
man route
man ip-route
在线资源:
专业书籍:
”`
注:本文实际约4500字,要达到10450字需要进一步扩展每个章节的详细内容,增加更多示例、场景分析和技术细节。由于篇幅限制,这里提供了完整框架和主要内容,您可以根据需要扩展具体章节。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。