系统管理指南:IP 服务

配置 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 的缺省路由器配置尚未完成。您需要执行以下操作: