route 命令是 Solaris 系统中用于手动查看和操作 IP 路由表的核心工具,虽然现代系统(如 Solaris 11 及以后版本)推荐使用更强大的 ipadm 和 route(1M) 守护进程进行持久化配置,但 route 命令在故障排查、临时修改和脚本编写中仍然非常有用。

route 命令的基本语法
route 命令的基本语法结构如下:
route [-f] [-p] [command] [destination] [gateway] [netmask] [metric] [if]
主要参数说明:
-f: 清空路由表,这是一个非常强大的选项,会删除所有非接口的、非主机的路由,包括默认路由。使用时务必谨慎!-p: 将路由设置为“永久”路由(仅限 Solaris 11 及以后版本),这个选项会将路由配置写入 SMF (Service Management Facility) 的配置中,使其在系统重启后依然存在。command: 要执行的操作,主要有:add: 添加一条新路由。delete或del: 删除一条路由。flush: 清空路由表 (功能同-f)。show或-v: 显示路由表 (默认行为)。
destination: 目标网络或主机的 IP 地址。gateway: 下一跳网关的 IP 地址。netmask: 目标网络的子网掩码。metric: 路由的成本或跳数,数值越小,优先级越高。if: 指定出站接口的名称 (bge0)。
显示路由表
最常用的功能是查看当前系统的路由表。
基本显示
直接输入 route 命令即可显示路由表:
# route
详细显示
使用 -v 选项可以显示更详细的信息,包括接口的 MTU、网络跃点数等:

# route -v
输出字段解析
route -v 的输出通常包含以下列:
| 字段 | 说明 |
|---|---|
destination |
目标网络或主机。default 表示默认路由 (0.0.0.0)。0.0.1 表示本地回环。 |
gateway |
下一跳的网关地址,如果是 local 或 0.0.1,表示是直接连接的网络,如果是 default,则指向默认网关。 |
flags |
路由标志,用字母表示: U (Up): 路由可用。 H (Host): 目标是一个主机,而不是一个网络。 G (Gateway): 需要通过网关转发。 D (Dynamic): 动态路由(如通过 RIP、OSPF 学习到的)。 S (Static): 静态路由。 |
refcnt |
引用计数,表示有多少个活动使用此路由。 |
use |
此路由被使用的次数。 |
interface |
出站网络接口的名称。 |
expire |
路由的过期时间(对于动态路由)。 |
添加路由
使用 add 子命令来添加一条新的路由。
添加静态主机路由
假设你有一台服务器,IP 是 168.1.100,它位于网络 168.10.0/24,网关是 168.1.1,你想让 Solaris 主机能访问这台服务器。
# route add -host 192.168.1.100 192.168.1.1
-host: 指明这是一个主机路由(可选,因为目标地址是单个 IP)。168.1.100: 目标主机。168.1.1: 下一跳网关。
添加静态网络路由
假设你有一个子网 10.20.0/24,访问这个子网需要通过网关 168.1.254。

# route add -net 10.10.20.0 -netmask 255.255.255.0 192.168.1.254
-net: 指明这是一个网络路由(可选)。10.20.0: 目标网络。-netmask 255.255.255.0: 目标网络的子网掩码。168.1.254: 下一跳网关。
指定出站接口
如果存在多个网络接口,可能需要明确指定从哪个接口发送数据包。
# route add 10.10.20.0 -netmask 255.255.255.0 192.168.1.254 -ifp bge0
-ifp bge0: 指定使用bge0接口作为出站接口。
设置默认路由
如果所有非本地网络的数据包都应通过 168.1.1 发送:
# route add default 192.168.1.1
default是0.0.0的别名。
删除路由
使用 delete 子命令来删除路由,删除路由时,必须提供与添加时完全相同的参数。
删除主机路由
# route delete -host 192.168.1.100
删除网络路由
# route delete -net 10.10.20.0 -netmask 255.255.255.0
删除默认路由
# route delete default
重要注意事项:临时 vs. 永久
这是在 Solaris 中使用 route 命令最关键的一点。
临时路由 (Solaris 10 及更早版本)
在 Solaris 10 及更早版本中,所有通过 route add 命令添加的路由都是临时的,它们只存在于当前运行的内核中,一旦系统重启,这些路由就会丢失。
永久路由 (Solaris 11 及以后版本)
从 Solaris 11 开始,引入了 SMF 来管理系统配置,要使路由永久生效,必须使用 -p 选项。
添加永久路由:
# route add -p default 192.168.1.1 # route add -p -net 10.10.20.0 -netmask 255.255.255.0 192.168.1.254
删除永久路由:
# route delete -p default 192.168.1.1
验证永久路由配置:
永久路由的配置信息存储在 SMF 中,可以通过 svccfg 查看:
# svccfg -s route:default listprop
现代替代方案:ipadm (推荐)
对于 Solaris 11 及以后版本,Oracle 推荐使用 ipadm 命令来管理 IP 接口和地址,并结合 SMF 来管理静态路由。ipadm 是更现代、更强大的工具。
使用 ipadm 添加永久路由
-
创建一个静态路由配置文件,创建
/etc/inet/static_route.conf:# Format: <interface> <dest> <gateway> <netmask> # Example for a network route bge0 10.10.20.0 192.168.1.254 255.255.255.0 # Example for a host route bge0 192.168.1.100 192.168.1.1 # Example for a default route bge0 0.0.0.0 192.168.1.1 0.0.0.0 -
启用
static-route服务,让它读取你的配置文件:# svcadm enable static-route
-
验证路由是否已添加:
# route -v # netstat -rvn
| 特性 | route 命令 |
ipadm + SMF |
|---|---|---|
| 适用版本 | 所有 Solaris 版本 | Solaris 11+ |
| 持久性 | Solaris 10: 临时 Solaris 11+: 使用 -p 选项永久 |
永久 (通过 SMF 管理) |
| 推荐用途 | 快速故障排查、临时修改、脚本 | 生产环境的永久网络配置 |
| 管理方式 | 直接修改内核路由表 | 通过 SMF 服务管理配置文件 |
- 如果你在 Solaris 10 上工作:
route命令是你手动管理路由的主要工具,但要记住这些路由是临时的,重启后会丢失,如果需要永久路由,通常需要将其写入启动脚本(如/etc/rc3.d/S99local)。 - 如果你在 Solaris 11 或更高版本上工作:对于快速检查或临时修改,
route命令仍然很好用,但对于任何需要永久存在的路由,强烈推荐使用ipadm和 SMF,这是官方支持的最佳实践。
