系统管理指南:IP 服务

IPv4 网络上的包转发和路由

本节包含说明如何在 IPv4 网络上为路由器和主机配置转发和路由的过程和示例。

包转发是在网络上的系统之间共享信息的基本方法。包在源接口和目标接口(通常位于两个不同的系统上)之间进行传送。当您发出命令或将消息发送到非本地接口时,系统将那些包转发到本地网络上。然后,具有包头中所指定目标 IP 地址的接口将从本地网络检索包。如果目标地址不在本地网络上,则将包转发到下一个相邻网络或跃点。缺省情况下,在安装 Oracle Solaris : 时自动配置包转发。

路由是系统确定要向何处发送包的过程。系统上的路由协议“搜索”本地网络中的其他系统。当源系统和目标系统位于同一本地网络中时,包在它们之间传送的路径称为直接路由。如果包必须至少传送到源系统之外的一个跃点,则源系统和目标系统之间的路径称为间接路由。路由协议获知目标接口的路径,并将有关已知路由的数据保留在系统的路由表中。

路由器是特别配置的系统,具有用于将路由器连接到多个本地网络的多个物理接口。因此,路由器可以将包转发到主 LAN 之外,而不管路由器是否运行路由协议。有关路由器如何转发包的更多信息,请参阅为网络规划路由器

路由协议处理系统上的路由活动,并通过与其他主机交换路由信息,维护到远程网络的已知路由。路由器和主机都可以运行路由协议。主机上的路由协议与其他路由器和主机上的路由选择守护进程进行通信。这些协议有助于主机确定向何处转发包。启用网络接口后,系统自动与路由选择守护进程进行通信。这些守护进程监视网络中的路由器,并将路由器的地址通告本地网络中的所有主机。某些路由协议(虽然不是全部)还维护可以用于衡量路由性能的统计信息。与包转发不同,必须在 Oracle Solaris : 系统上显式配置路由。

本节介绍在 IPv4 路由器和主机上管理包转发和路由的任务。有关在启用了 IPv6 的网络中路由的信息,请参阅配置 IPv6 路由器

Oracle Solaris : 支持的路由协议

路由协议分为内部网关协议 (interior gateway protocol, IGP)、外部网关协议 (exterior gateway protocol, EGP) 或这两者的组合。内部网关协议通过常见的管理控制在网络中的路由器之间交换路由信息。在图 5–3 所示的网络拓扑中,路由器运行 IGP 以交换路由信息。通过外部网关协议,将本地互联网络连接到外部网络的路由器可以与外部网络中的其他路由器交换信息。例如,将公司网络连接到 ISP 的路由器运行 EGP,以便与 ISP 上的相应路由器交换路由信息。边界网关协议 (Border Gateway Protocol, BGP) 是常见的 EGP,用于在不同的组织和 IGP 之间传送路由信息。

下表提供有关 Oracle Solaris : 路由协议以及每个协议的关联文档的位置的信息。

表 5–1 Oracle Solaris : 路由协议

协议 

关联的守护进程 

说明 

参考 

路由信息协议 (Routing Information Protocol, RIP) 

in.routed

用于路由 IPv4 包和维护路由表的 IGP 

如何配置 IPv4 路由器

Internet 控制消息协议 (Internet Control Message Protocol, ICMP) 路由器搜索 

in.routed

由主机用来搜索网络上存在的路由器 

如何在单接口主机上启用静态路由如何在单接口主机上启用动态路由

下一代路由信息协议 (Routing Information Protocol next generation, RIPng) 

in.ripngd

用于路由 IPv6 包和维护路由表的 IGP 

如何配置启用了 IPv6 的路由器

相邻节点搜索 (Neighbor Discovery, ND) 协议 

in.ndpd

通告存在 IPv6 路由器并搜索网络中存在的 IPv6 主机 

配置 IPv6 接口

Oracle Solaris 10 也支持开放源代码 Quagga 路由协议套件。这些协议可以从 SFW 集合磁盘获取,尽管它们不是 Oracle Solaris : 主发行版的一部分。下表列出了 Quagga 协议:

表 5–2 OpenSolaris Quagga 协议

协议 

守护进程  

说明 

RIP 协议 

ripd

路由 IPv4 包并将其路由表通告相邻节点的 IPv4 距离向量 IGP。 

RIPng 

ripngd

IPv6 距离向量 IGP。路由 IPv6 包和维护路由表。 

开放最短路径优先 (Open Shortest Path First, OSPF) 协议 

ospfd

用于包路由和高可用性联网的 IPv4 链路状态 IGP 

边界网关协议 (Border Gateway Protocol, BGP) 

bgpd

用于在管理域之间路由的 IPv4 和 IPv6 EGP。 

下图显示使用 Quagga 路由协议的自治系统:

图 5–2 运行 Quagga 协议的公司网络

此图显示运行 Quagga 路由协议的公司网络。上下文对该图进行了说明。

该图显示了一个公司网络自治系统,该系统已划分为两个路由域:A 和 B。路由域是具有统一的路由策略的互联网络(出于管理目的或由于域使用单个路由协议)。图中的两个域都运行 Quagga 协议套件中的路由协议。

路由域 A 是通过单个 OSPF 域 ID 管理的 OSPF 域。此域中的所有系统都将 OSPF 作为其内部网关协议运行。除了内部主机和路由器外,域 A 还包括两个边界路由器。

边界路由器 R1 将公司网络连接到 ISP 并最终连接到 Internet。为便于公司网络和外界之间的通信,R1 通过其面向外部的网络接口运行 BGP。边界路由器 R5 将域 A 与域 B 连接在一起。管理域 B 上的所有系统时,都将 RIP 作为其内部网关协议。因此,边界路由器 R5 在面向域 A 的接口上必须运行 OSPF,在面向域 B 的接口上必须运行 RIP。

有关 Quagga 协议的更多信息,请参阅 Open Solaris Quagga。有关这些协议的配置过程,请转到 quagga 文档

IPv4 自治系统拓扑

具有多个路由器和网络的站点通常将其网络拓扑作为单个路由域或自治系统 (autonomous system, AS) 进行管理。下图显示了一个将被视为小型 AS 的典型网络拓扑。在贯穿本节的示例中引用的就是此拓扑。

图 5–3 具有多个 IPv4 路由器的自治系统

在下面的上下文中,对自治系统的此拓扑图进行了说明。

该图显示了一个已划分为三个本地网络(即 10.0.5.0172.20.1.0192.168.5)的 AS。四个路由器分担包转发和路由职责。AS 包括以下类型的系统:

配置 IPv4 路由器

本节包含配置 IPv4 路由器的过程和示例。要配置启用了 IPv6 的路由器,请参阅如何配置启用了 IPv6 的路由器

由于路由器提供两个或多个网络之间的接口,因此必须为路由器的每个物理网络接口指定唯一名称和 IP 地址。这样,每个路由器都有与其主网络接口关联的主机名和 IP 地址,以及其他每个网络接口的至少一个唯一名称和 IP 地址。

也可以使用以下过程将只有一个物理接口的系统(缺省情况下为主机)配置为路由器。如果单接口系统将要用作 PPP 链路上的一个端点,则可以将它配置为路由器,如《系统管理指南:网络服务》中的“规划拨号 PPP 链路”所述。


注 –

可以在 Oracle Solaris : 系统安装过程中配置路由器的所有接口。有关说明,请参见《Oracle Solaris 10 9/10 安装指南:基本安装》


Procedure如何配置 IPv4 路由器

以下说明假定要在安装后配置路由器的接口。

开始之前

在网络中物理安装路由器后,将路由器配置为以本地文件模式运行,如如何以本地文件模式配置主机中所述。此配置可确保即使网络配置服务器关闭路由器也会引导。

  1. 在要配置为路由器的系统上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 从 Solaris 10 1/06 发行版开始,使用 dladm show-link 命令确定在路由器上物理安装了哪些接口。


    # dladm show-link
    

    dladm show-link 的以下示例输出指示,在系统上以物理方式提供了具有四个接口的 qfe NIC 和两个 bge 接口。


    qfe0             type: legacy    mtu: 1500       device: qfe0
    qfe1             type: legacy    mtu: 1500       device: qfe1
    qfe2             type: legacy    mtu: 1500       device: qfe0
    qfe3             type: legacy    mtu: 1500       device: qfe1
    bge0             type: non-vlan  mtu: 1500       device: bge0
    bge1             type: non-vlan  mtu: 1500       device: bge1
  3. 查看在安装过程中配置和检测了路由器上的哪些接口。


    # ifconfig -a
    

    ifconfig -a 的以下示例输出显示在安装过程中配置了接口 qfe0。此接口位于 172.16.0.0 网络中。尚未配置 qfe NIC 上的其他接口(即 qfe1 - qfe3)以及 bge 接口。


    lo0: flags=1000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
            inet 127.0.0.1 netmask ff000000 
    qfe0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
            inet 172.16.26.232 netmask ffff0000 broadcast 172.16.26.255
            ether 0:3:ba:11:b1:15 
             
  4. 配置并检测另一个接口。


    # ifconfig interface plumb up
    

    例如,对于 qfe1,请键入:


    # ifconfig qfe1 plumb up
    

    注 –

    使用 ifconfig 命令显式配置的接口在重新引导后不会继续存在。


  5. 将 IPv4 地址和网络掩码指定给接口。


    注意 – 注意 –

    可以将 IPv4 路由器配置为通过 DHCP 接收其 IP 地址,但是此建议仅适用于非常有经验的 DHCP 系统管理员。



    # ifconfig interface IPv4-address netmask+netmask
    

    例如,要将 IP 地址 192.168.84.3 指定给 qfe1,请执行以下任一操作:

    • 如果使用传统的 IPv4 表示法,请键入以下内容:


      # ifconfig qfe1 192.168.84.3 netmask + 255.255.255.0
      
    • 如果使用 CIDR 表示法,请键入以下内容:


      # ifconfig qfe1 192.168.84.3/24
      

      前缀 /24 自动将 255.255.255.0 网络掩码指定给 qfe1。有关 CIDR 前缀及其点分十进制网络掩码等效项的表,请参阅图 2–2

  6. (可选)要确保在重新引导后接口配置继续存在,请为其他每个物理接口创建 /etc/hostname.interface 文件。

    例如,请创建 /etc/hostname.qfe1/etc/hostname.qfe2 文件。然后在 /etc/hostname.qfe1 文件中键入主机名 timbuktu,在 /etc/hostname.qfe2 中键入主机名 timbuktu-201。有关配置单个接口的更多信息,请参阅如何在安装系统后配置物理接口

    在创建此文件后,务必进行配置重新引导:


    # reboot -- -r
    
  7. /etc/inet/hosts 文件中添加每个接口的主机名和 IP 地址。

    例如:


    172.16.26.232      deadsea        #interface for network 172.16.0.0
    192.168.200.20     timbuktu       #interface for network 192.168.200
    192.168.201.20     timbuktu-201   #interface for network 192.168.201
    192.168.200.9      gobi
    192.168.200.10     mojave
    192.168.200.110    saltlake
    192.168.200.12     chilean

    接口 timbuktutimbuktu-201 位于同一系统上。请注意,timbuktu-201 的网络地址与 timbuktu 的网络接口不同。之所以不同,是因为网络 192.168.201 的物理网络介质已连接到 timbuktu-201 网络接口,而网络 192.168.200 的介质已连接到 timbuktu 接口。

  8. (仅适用于 Solaris 10 11/06 及早期 Solaris 10 发行版)将每个新接口的 IP 地址和主机名添加到 /etc/inet/ipnodes 文件或等效 ipnodes 数据库中。

    例如:


    vi /etc/inet/ipnodes
    172.16.26.232      deadsea        #interface for network 172.16.0.0
    192.168.200.20     timbuktu       #interface for network 192.168.200
    192.168.201.20     timbuktu-201   #interface for network 192.168.201
    
  9. 如果路由器连接到划分为多个子网的任何网络,请将网络号和网络掩码添加到 /etc/inet/netmasks 文件。

    • 对于传统的 IPv4 地址表示法(如 192.168.83.0),应键入:


      192.168.83.0    255.255.255.0
    • 对于 CIDR 地址,在 /etc/inet/netmask 文件的项中使用前缀的点分十进制版本。网络前缀及其点分十进制等效项可以在图 2–2 中找到。例如,可以使用 /etc/netmasks 中的以下项来表示 CIDR 网络前缀 192.168.3.0/22


      192.168.3.0 255.255.252.0
  10. 在路由器上启用 IPv4 包转发。

    使用以下命令之一启用包转发:

    • 使用 routeadm 命令,如下所示:


      # routeadm -e ipv4-forwarding -u
      
    • 使用以下服务管理工具 (service management facility, SMF) 命令:


      # svcadm enable ipv4-forwarding
      

    此时,路由器可以将包转发到本地网络之外。路由器还支持静态路由(可以将路由手动添加到路由表的过程)。如果计划在此系统上使用静态路由,则路由器配置已完成。但是,需要在系统路由表中维护路由。有关添加路由的信息,请参见配置路由route(1M) 手册页。

  11. (可选)启动路由协议。

    路由选择守护进程 /usr/sbin/in.routed 自动更新路由表(该过程称为动态路由)。使用以下任一方法打开缺省 IPv4 路由协议:

    • 使用 routeadm 命令,如下所示:


      # routeadm -e ipv4-routing -u
      
    • 使用以下 SMF 命令启动路由协议,如 RIP。


      # svcadm enable route:default
      

      in.routed 守护进程关联的 SMF FMRI 是 svc:/network/routing/route

    有关 routeadm 命令的信息,请参见 routeadm(1M) 手册页。


示例 5–4 配置网络的缺省路由器

此示例说明如何升级具有多个接口的系统以使其成为缺省路由器。目标是使图 5–3 所示的路由器 2 成为网络 172.20.1.0 的缺省路由器。路由器 2 包含两个有线网络连接,一个是与网络 172.20.1.0 的连接,另一个是与网络 10.0.5.0 的连接。该示例假定路由器在本地文件模式下工作,如如何以本地文件模式配置主机中所述。

成为超级用户或承担等效角色后,可以确定系统接口的状态。从 Solaris 10 1/06 开始,可以使用 dladm 命令,如下所示:


# dladm show-link
ce0             type: legacy    mtu: 1500       device: ce0 
bge0            type: non-vlan  mtu: 1500       device: bge0 
bge1            type: non-vlan  mtu: 1500       device: bge1

# ifconfig -a
lo0: flags=1000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
ce0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 172.20.1.10 netmask ffff0000 broadcast 172.20.10.100
        ether 8:0:20:c1:1b:c6 

dladm show-link 的输出指示有三个链路在系统上是可用的。仅检测了 ce0 接口。进行缺省路由器配置首先应将 bge0 接口物理连接到 10.0.5.0 网络。然后,检测该接口,并使其在重新引导后继续存在。


# ifconfig bge0 plumb up
# ifconfig bge0 10.0.5.10
# ifconfig -a
lo0: flags=1000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
ce0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 172.20.1.10 netmask ffff0000 broadcast 172.255.255.255
        ether 8:0:20:c1:1b:c6 
bge0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 10.0.5.10 netmask ff000000 broadcast 10.255.255.255
        ether 8:0:20:e5:95:c4
 # vi /etc/hostname.bge0
10.0.5.10
255.0.0.0

使用重新配置引导命令,重新引导系统:


# reboot -- -r

使用有关新检测的接口和它所连接到的网络的信息,继续配置以下网络数据库:


# vi /etc/inet/hosts
127.0.0.1       localhost
172.20.1.10        router2        #interface for network 172.20.1
10.0.5.10          router2-out    #interface for network 10.0.5
# vi /etc/inet/netmasks
172.20.1.0    255.255.0.0
10.0.5.0      255.0.0.0

最后,使用 SMF 启用包转发,再启用 in.routed 路由选择守护进程。


# svcadm enable ipv4-forwarding
# svcadm enable route:default

现在,在路由器 2 上启用了 IPv4 包转发和通过 RIP 的动态路由。但是,网络 172.20.1.0 的缺省路由器配置尚未完成。您需要执行以下操作:


路由表和路由类型

路由器和主机都维护路由表。每个系统上的路由选择守护进程都使用所有的已知路由来更新该表。在将包转发到本地网络之前,系统的内核读取路由表。路由表列出了系统知晓的网络的 IP 地址,包括系统本地缺省网络的 IP 地址。该表还列出了每个已知网络的网关系统的 IP 地址。网关是一个系统,它可以接收传出包并将它们转发到距本地网络一个跃点的位置。以下是一个仅启用了 IPv4 的网络中某系统的简单路由表:


Routing Table: IPv4
  Destination           Gateway           Flags  Ref   Use   Interface
-------------------- -------------------- ----- ----- ------ ---------
default              172.20.1.10          UG       1    532   ce0
224.0.0.0            10.0.5.100           U        1      0   bge0
10.0.0.0             10.0.5.100           U        1      0   bge0
127.0.0.1            127.0.0.1            UH       1     57   lo0

可以在 Oracle Solaris : 系统上配置以下两种类型的路由:静态路由和动态路由。可以在单个系统上配置其中一种或两种路由类型。实现动态路由的系统依赖路由协议(如用于 IPv4 网络的 RIP 和用于 IPv6 网络的 RIPng)来维护其路由表。仅运行静态路由的系统不依赖于路由协议来获取路由信息及更新路由表。相反,您必须通过 route 命令手动维护系统的已知路由。有关完整的详细信息,请参阅 route(1M) 手册页。

为本地网络或自治系统配置路由时,请考虑在特定的路由器和主机上支持哪种路由类型。

下表显示了不同的路由类型,以及各个路由类型分别最适用于哪种网络方案。

路由类型 

最适用于 

静态 

小型网络、从缺省路由器获取其路由的主机,以及仅需要知晓接下来几个跃点上一个或两个路由器的缺省路由器。

动态 

较大的互联网络、具有多个主机的本地网络中的路由器以及大型自治系统上的主机。动态路由是大多数网络中系统的最佳选择。

组合的静态和动态路由 

将静态路由网络和动态路由网络连接在一起的路由器,以及将内部自治系统与外部网络连接在一起的边界路由器。将系统上的静态路由和动态路由组合在一起是一种常见的做法。 

图 5–3 所示的 AS 将静态路由和动态路由组合在一起。

配置路由

要为 IPv4 网络实现动态路由,请使用 routeadmsvcadm 命令启动 in.routed 路由选择守护进程。有关说明,请参见如何配置 IPv4 路由器。动态路由是大多数网络和自治系统的首选策略。但是,您的网络拓扑或您网络中的特定系统可能需要静态路由。在该情况下,必须手动编辑系统路由表,向网关反映已知路由。接下来的过程说明如何添加静态路由。


注 –

到同一目标的两个路由不会自动导致系统进行负载平衡或故障转移。如果需要这些功能,请使用 IPMP,如第 30 章中所述。


Procedure如何将静态路由添加到路由表

  1. 查看路由表的当前状态。

    使用常规用户帐户运行以下形式的 netstat 命令:


    % netstat -rn
    

    输出将与如下所示类似:


    Routing Table: IPv4
      Destination           Gateway           Flags  Ref   Use   Interface
    -------------------- -------------------- ----- ----- ------ ---------
    192.168.5.125        192.168.5.10          U      1   5879   ipge0
    224.0.0.0            198.168.5.10          U      1  0       ipge0
    default              192.168.5.10          UG     1  91908
    127.0.0.1            127.0.0.1             UH     1  811302   lo0
  2. 承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  3. (可选)刷新路由表中的现有项。


    # route flush
    
  4. 添加一个在系统重新引导后继续存在的路由。


    # route -p add -net network-address -gateway gateway-address
    
    -p

    创建一个在系统重新引导后必须继续存在的路由。如果希望路由仅对当前会话有效,则不要使用 -p 选项。

    add

    指示将要添加以下路由。

    -net network-address

    指定路由将转到具有 network-address 中地址的网络。

    -gateway gateway-address

    指示指定路由的网关系统具有 IP 地址 gateway-address


示例 5–5 将静态路由添加到路由表

以下示例说明如何将静态路由添加到系统。该系统是路由器 2,即Figure&;5–3 所示的 图 5–3 网络的缺省路由器。在示例 5–4 中,为路由器 2 配置了动态路由。为了更好地充当网络 172.20.1.0 中主机的缺省路由器,路由器 2 还需要到 AS 的边界路由器 10.0.5.150 的静态路由。

要查看路由器 2 上的路由表,请执行以下操作:


# netstat -rn
Routing Table: IPv4
  Destination           Gateway           Flags  Ref   Use   Interface
-------------------- -------------------- ----- ----- ------ ---------
default              172.20.1.10          UG        1    249 ce0
224.0.0.0            172.20.1.10          U         1      0 ce0
10.0.5.0             10.0.5.20            U         1     78 bge0
127.0.0.1            127.0.0.1            UH        1     57 lo0

路由表指示路由器 2 知晓的两个路由。缺省路由将路由器 2 的 172.20.1.10 接口用作其网关。在路由器 2 上运行的 in.routed 守护进程搜索到第二个路由 10.0.5.0。此路由的网关是 IP 地址为 10.0.5.20 的路由器 1。

要将另一个路由添加到网络 10.0.5.0(它将其网关作为边界路由器),请执行以下操作:


# route -p add -net 10.0.5.0/24 -gateway 10.0.5.150/24
add net 10.0.5.0: gateway 10.0.5.150

现在,路由表具有边界路由器(其 IP 地址为 10.0.5.150/24)的路由。


# netstat -rn
Routing Table: IPv4
  Destination           Gateway           Flags  Ref   Use   Interface
-------------------- -------------------- ----- ----- ------ ---------
default              172.20.1.10          UG        1    249 ce0
224.0.0.0            172.20.1.10          U         1      0 ce0
10.0.5.0             10.0.5.20            U         1     78 bge0
10.0.5.0             10.0.5.150           U         1    375 bge0
127.0.0.1            127.0.0.1            UH        1     57 lo0

配置多宿主主机

在 Oracle Solaris : 中,有多个接口的系统被视为多宿主主机。多宿主主机不转发 IP 包。但是,您可以将多宿主主机配置为运行路由协议。通常,可以将以下类型的系统配置为多宿主主机:

Procedure如何创建多宿主主机

  1. 在预期的多宿主主机上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 配置并检测在 Oracle Solaris : 安装过程中没有配置的其他每个网络接口。

    请参阅如何在安装系统后配置物理接口

  3. 验证是否未在多宿主主机上启用 IP 转发。


    # routeadm
     
    

    不带选项的 routeadm 命令可报告路由选择守护进程的状态。routeadm 的以下输出说明已启用 IPv4 转发:


       Configuration   Current              Current
                         Option   Configuration        System State
    ---------------------------------------------------------------
                   IPv4 routing   disabled             disabled
                   IPv6 routing   disabled             disabled
                IPv4 forwarding   enabled              disabled
                IPv6 forwarding   disabled             disabled
    
                Routing services   "route:default ripng:default"
  4. 如果在系统上启用了包转发,请禁用它。

    使用以下命令之一:

    • 对于 routeadm 命令,请键入以下内容:


      # routeadm -d ipv4-forwarding -u
      
    • 要使用 SMF,请键入以下内容:


      # svcadm disable ipv4-forwarding
      
  5. (可选)为多宿主主机打开动态路由。

    使用以下命令之一打开 in.routed 守护进程:

    • 对于 routeadm 命令,请键入以下内容:


      # routeadm -e ipv4-routing -u
      
    • 要使用 SMF,请键入以下内容:


      # svcadm enable route:default
      

示例 5–6 配置多宿主主机

以下示例说明如何配置图 5–3 所示的多宿主主机。在该示例中,系统具有主机名 hostc。此主机具有两个接口,这两个接口都已连接到网络 192.168.5.0

要开始操作,请显示系统接口的状态。


# dladm show-link
hme0           type: legacy    mtu: 1500       device: hme0 
qfe0           type: legacy    mtu: 1500       device: qfe0 
qfe1           type: legacy    mtu: 1500       device: qfe1 
qfe2           type: legacy    mtu: 1500       device: qfe2 
qfe3           type: legacy    mtu: 1500       device: qfe3
# ifconfig -a
lo0: flags=1000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
hme0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
      inet 192.168.5.82 netmask ff000000 broadcast 192.255.255.255
      ether 8:0:20:c1:1b:c6 
 

dladm show-link 命令报告,hostc 具有两个接口,共有五个可能的链路。但是,仅检测到 hme0。要将 hostc 配置为多宿主主机,必须在 qfe NIC 上添加 qfe0 或其他链路。首先,请将 qfe0 接口物理连接到 192.168.5.0 网络。然后,检测 qfe0 接口,并使其在重新引导后继续存在。


# ifconfig qf0 plumb up
# ifconfig qfe0 192.168.5.85
# ifconfig -a
lo0: flags=1000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
hme0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 192.168.5.82 netmask ff0000 broadcast 192.255.255.255
        ether 8:0:20:c1:1b:c6 
qfe0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 192.168.5.85 netmask ff000000 broadcast 192.255.255.255
        ether 8:0:20:e1:3b:c4
 # vi /etc/hostname.qfe0
192.168.5.85
255.0.0.0

使用重新配置命令,重新引导系统:


# reboot -- -r

接下来,将 qfe0 接口添加到 hosts 数据库:


# vi /etc/inet/hosts
127.0.0.1           localhost
192.168.5.82        host3    #primary network interface for host3
192.168.5.85        host3-2  #second interface

然后,在 host3 上检查包转发和路由的状态:


# routeadm
              Configuration   Current              Current
                     Option   Configuration        System State
---------------------------------------------------------------
               IPv4 routing   enabled              enabled
               IPv6 routing   disabled             disabled
            IPv4 forwarding   enabled              enabled
            IPv6 forwarding   disabled             disabled

           Routing services   "route:default ripng:default"

routeadm 命令报告,当前打开了通过 in.routed 守护进程的动态路由和包转发。但是,您将需要关闭包转发:


# svcadm disable ipv4-forwarding

也可以使用 routeadm 命令(如如何创建多宿主主机所示)关闭包转发。禁用包转发后,host3 将成为多宿主主机。


为单接口系统配置路由

单接口主机需要实现某种形式的路由。如果主机要从一个或多个本地缺省路由器获取其路由,则必须将该主机配置为使用静态路由。否则,建议对该主机使用动态路由。以下过程包含启用这两种路由类型的说明。

Procedure如何在单接口主机上启用静态路由

以下过程可在单接口主机上启用静态路由。使用静态路由的主机不运行动态路由协议(如 RIP)。相反,主机必须依赖于缺省路由器的服务来获取路由信息。IPv4 自治系统拓扑图显示了几个缺省路由器及其客户机主机。如果在安装特定主机时提供了缺省路由器的名称,则该主机已经配置为使用静态路由。


注 –

也可以使用以下过程在多宿主主机上配置静态路由。


有关 /etc/defaultrouter 文件的信息,请参见/etc/defaultrouter 文件。有关静态路由和路由表的信息,请参阅路由表和路由类型

  1. 在单接口主机上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 验证主机上是否存在 /etc/defaultrouter 文件。


    # cd /etc
    # ls | grep defaultrouter
    
  3. 打开文本编辑器以创建或修改 /etc/defaultrouter 文件。

  4. 添加缺省路由器的项。


    # vi  /etc/defaultrouter
    router-IP
           
    

    其中 router-IP 指示供主机使用的缺省路由器的 IP 地址。

  5. 验证路由和包转发没有在主机上运行。


    # routeadm
       Configuration   Current              Current
                         Option   Configuration        System State
    ---------------------------------------------------------------
                   IPv4 routing   disabled             disabled
                   IPv6 routing   disabled             disabled
                IPv4 forwarding   disabled            disabled
                IPv6 forwarding   disabled             disabled
    
               Routing services   "route:default ripng:default"
  6. 在本地 /etc/inet/hosts 文件中添加缺省路由器的项。

    有关配置 /etc/inet/hosts 的信息,请参阅如何更改 IPv4 地址和其他网络配置参数


示例 5–7 为单接口主机配置缺省路由器和静态路由

以下示例说明如何为Figure&;5–3 所示的网络 172.20.1.0 中的单接口主机 图 5–3 配置静态路由。hostb 需要将路由器 2 用作其缺省路由器。

首先,请以超级用户身份登录到 hostb 或承担等效角色。然后,确定主机上是否存在 /etc/defaultrouter 文件:


# cd /etc
# ls | grep defaultrouter

如果没有来自 grep 的响应,则表示您需要创建 /etc/defaultrouter 文件。


# vi /etc/defaultrouter
172.20.1.10

/etc/defaultrouter 文件中的项是连接到 172.20.1.0 网络的路由器 2 上接口的 IP 地址。接下来,验证主机当前启用包转发还是启用路由。


# routeadm
   Configuration   Current              Current
                     Option   Configuration        System State
---------------------------------------------------------------
               IPv4 routing   disabled             disabled
               IPv6 routing   disabled             disabled
            IPv4 forwarding   enabled              enabled
            IPv6 forwarding   disabled             disabled

           Routing services   "route:default ripng:default"

已对此特定主机启用包转发。可按如下所示将其禁用:


# svcadm disable ipv4-forwarding

最后,确保主机的 /etc/inet/hosts 文件包含新缺省路由器的项。


# vi /etc/inet/hosts
127.0.0.1           localhost
172.20.1.18         host2    #primary network interface for host2
172.20.1.10         router2  #default router for host2

Procedure如何在单接口主机上启用动态路由

动态路由是管理主机上路由的最简单的方法。使用动态路由的主机运行由 IPv4 的 in.routed 守护进程或 IPv6 的 in.ripngd 守护进程提供的路由协议。使用接下来的过程在单接口主机上启用 IPv4 动态路由。有关动态路由的更多信息,请参阅IPv4 网络上的包转发和路由

  1. 在主机上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 验证是否存在 /etc/defaultrouter 文件。


    # cd /etc
    # ls | grep defaultrouter
    
  3. 如果存在 /etc/defaultrouter,则删除在该文件中找到的所有项。

    /etc/defaultrouter 文件为空会强制主机使用动态路由。

  4. 验证是否在主机上启用了包转发和路由。


    # routeadm
       Configuration   Current              Current
                         Option   Configuration        System State
    ---------------------------------------------------------------
                   IPv4 routing   disabled             disabled
                   IPv6 routing   disabled             disabled
                IPv4 forwarding   enabled              enabled
                IPv6 forwarding   disabled             disabled
    
               Routing services   "route:default ripng:default"
  5. 如果启用了包转发,请将其关闭

    使用以下命令之一:

    • 对于 routeadm 命令,请键入以下内容:


      # routeadm -d ipv4-forwarding -u
      
    • 要使用 SMF,请键入以下内容:


      # svcadm disable ipv4-forwarding
      
  6. 在主机上启用路由协议。

    使用以下命令之一:

    • 对于 routeadm 命令,请键入以下内容:


      # routeadm -e ipv4-routing -u
      
    • 要使用 SMF,请键入以下内容:


      # svcadm enable route:default
      

    现在已启用 IPv4 动态路由。主机的路由表是由 in.routed 守护进程动态维护的。


示例 5–8 在单接口主机上运行动态路由

以下示例说明如何为图 5–3 所示的网络 192.168.5.0 中的单接口主机 hosta 配置动态路由。hosta 当前将路由器 1 用作其缺省路由器。但是,hosta 现在需要运行动态路由。

首先,请以超级用户身份登录到 hosta 或承担等效角色。然后,确定主机上是否存在 /etc/defaultrouter 文件:


# cd /etc
# ls | grep defaultrouter
defaultrouter

grep 的响应指示 hosta 存在相应的 /etc/defaultrouter 文件。


# vi /etc/defaultrouter
192.168.5.10

该文件具有项 192.168.5.10(这是路由器 1 的 IP 地址)。请删除此项以启用静态路由。接下来,需要验证是否已对该主机启用了包转发和路由。


# routeadm   Configuration   Current              Current
                     Option   Configuration        System State
---------------------------------------------------------------
               IPv4 routing   disabled             disabled
               IPv6 routing   disabled             disabled
            IPv4 forwarding   disabled             disabled
            IPv6 forwarding   disabled             disabled

           Routing services   "route:default ripng:default"

对于 hosta,路由和包转发均处于关闭状态。启用路由以完成 hosta 的动态路由配置,如下所示:


# svcadm enable route:default