本节包含配置 IPv4 路由器的过程和示例。要配置启用了 IPv6 的路由器,请参阅如何配置启用了 IPv6 的路由器。
由于路由器提供两个或多个网络之间的接口,因此必须为路由器的每个物理网络接口指定唯一名称和 IP 地址。这样,每个路由器都有与其主网络接口关联的主机名和 IP 地址,以及其他每个网络接口的至少一个唯一名称和 IP 地址。
也可以使用以下过程将只有一个物理接口的系统(缺省情况下为主机)配置为路由器。如果单接口系统将要用作 PPP 链路上的一个端点,则可以将它配置为路由器,如《系统管理指南:网络服务》中的“规划拨号 PPP 链路”所述。
可以在 Oracle Solaris : 系统安装过程中配置路由器的所有接口。有关说明,请参见《Oracle Solaris 10 9/10 安装指南:基本安装》。
以下说明假定要在安装后配置路由器的接口。
在网络中物理安装路由器后,将路由器配置为以本地文件模式运行,如如何以本地文件模式配置主机中所述。此配置可确保即使网络配置服务器关闭路由器也会引导。
在要配置为路由器的系统上,承担主管理员角色或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
从 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 |
查看在安装过程中配置和检测了路由器上的哪些接口。
# 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 |
# ifconfig interface plumb up |
例如,对于 qfe1,请键入:
# ifconfig qfe1 plumb up |
使用 ifconfig 命令显式配置的接口在重新引导后不会继续存在。
将 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。
(可选)要确保在重新引导后接口配置继续存在,请为其他每个物理接口创建 /etc/hostname.interface 文件。
例如,请创建 /etc/hostname.qfe1 和 /etc/hostname.qfe2 文件。然后在 /etc/hostname.qfe1 文件中键入主机名 timbuktu,在 /etc/hostname.qfe2 中键入主机名 timbuktu-201。有关配置单个接口的更多信息,请参阅如何在安装系统后配置物理接口。
在创建此文件后,务必进行配置重新引导:
# reboot -- -r |
向 /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 |
接口 timbuktu 和 timbuktu-201 位于同一系统上。请注意,timbuktu-201 的网络地址与 timbuktu 的网络接口不同。之所以不同,是因为网络 192.168.201 的物理网络介质已连接到 timbuktu-201 网络接口,而网络 192.168.200 的介质已连接到 timbuktu 接口。
(仅适用于 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 |
如果路由器连接到划分为多个子网的任何网络,请将网络号和网络掩码添加到 /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 |
在路由器上启用 IPv4 包转发。
使用以下命令之一启用包转发:
使用 routeadm 命令,如下所示:
# routeadm -e ipv4-forwarding -u |
使用以下服务管理工具 (service management facility, SMF) 命令:
# svcadm enable ipv4-forwarding |
此时,路由器可以将包转发到本地网络之外。路由器还支持静态路由(可以将路由手动添加到路由表的过程)。如果计划在此系统上使用静态路由,则路由器配置已完成。但是,需要在系统路由表中维护路由。有关添加路由的信息,请参见配置路由和 route(1M) 手册页。
(可选)启动路由协议。
路由选择守护进程 /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–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 的缺省路由器配置尚未完成。您需要执行以下操作:
修改 172.10.1.10 中的每个主机,以便主机从新的缺省路由器获取其路由信息。有关更多信息,请参阅如何在单接口主机上启用静态路由。
在路由器 2 的路由表中定义边界路由器的静态路由。有关更多详细信息,请参阅路由表和路由类型。