菜鸟科技网

Solaris route命令如何正确配置静态路由?

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

Solaris route命令如何正确配置静态路由?-图1
(图片来源网络,侵删)

route 命令的基本语法

route 命令的基本语法结构如下:

route [-f] [-p] [command] [destination] [gateway] [netmask] [metric] [if]

主要参数说明:

  • -f: 清空路由表,这是一个非常强大的选项,会删除所有非接口的、非主机的路由,包括默认路由。使用时务必谨慎!
  • -p: 将路由设置为“永久”路由(仅限 Solaris 11 及以后版本),这个选项会将路由配置写入 SMF (Service Management Facility) 的配置中,使其在系统重启后依然存在。
  • command: 要执行的操作,主要有:
    • add: 添加一条新路由。
    • deletedel: 删除一条路由。
    • flush: 清空路由表 (功能同 -f)。
    • show-v: 显示路由表 (默认行为)。
  • destination: 目标网络或主机的 IP 地址。
  • gateway: 下一跳网关的 IP 地址。
  • netmask: 目标网络的子网掩码。
  • metric: 路由的成本或跳数,数值越小,优先级越高。
  • if: 指定出站接口的名称 ( bge0)。

显示路由表

最常用的功能是查看当前系统的路由表。

基本显示

直接输入 route 命令即可显示路由表:

# route

详细显示

使用 -v 选项可以显示更详细的信息,包括接口的 MTU、网络跃点数等:

Solaris route命令如何正确配置静态路由?-图2
(图片来源网络,侵删)
# route -v

输出字段解析

route -v 的输出通常包含以下列:

字段 说明
destination 目标网络或主机。default 表示默认路由 (0.0.0.0)。0.0.1 表示本地回环。
gateway 下一跳的网关地址,如果是 local0.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

Solaris route命令如何正确配置静态路由?-图3
(图片来源网络,侵删)
# 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
  • default0.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 添加永久路由

  1. 创建一个静态路由配置文件,创建 /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
  2. 启用 static-route 服务,让它读取你的配置文件:

    # svcadm enable static-route
  3. 验证路由是否已添加:

    # 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,这是官方支持的最佳实践。
分享:
扫描分享到社交APP
上一篇
下一篇