跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 管理:IP 服务 Oracle Solaris 10 1/13 Information Library (简体中文) |
1. Oracle Solaris TCP/IP 协议套件(概述)
5. 配置 TCP/IP 网络服务和 IPv4 寻址(任务)
25. Oracle Solaris 中的 IP 过滤器(概述)
本节包含说明如何在 IPv4 网络上为路由器和主机配置转发和路由的过程和示例。
包转发是在网络上的系统之间共享信息的基本方法。包在源接口和目标接口(通常位于两个不同的系统上)之间进行传送。当您发出命令或将消息发送到非本地接口时,系统将那些包转发到本地网络上。然后,具有包头中所指定目标 IP 地址的接口将从本地网络检索包。如果目标地址不在本地网络上,则将包转发到下一个相邻网络或跃点。缺省情况下,在安装 Oracle Solaris 时自动配置包转发。
路由是系统确定要向何处发送包的过程。系统上的路由协议“搜索”本地网络中的其他系统。当源系统和目标系统位于同一本地网络中时,包在它们之间传送的路径称为直接路由。如果包必须至少传送到源系统之外的一个跃点,则源系统和目标系统之间的路径称为间接路由。路由协议获知目标接口的路径,并将有关已知路由的数据保留在系统的路由表中。
路由器是特别配置的系统,具有用于将路由器连接到多个本地网络的多个物理接口。因此,路由器可以将包转发到主 LAN 之外,而不管路由器是否运行路由协议。有关路由器如何转发包的更多信息,请参阅为网络规划路由器。
路由协议处理系统上的路由活动,并通过与其他主机交换路由信息,维护到远程网络的已知路由。路由器和主机都可以运行路由协议。主机上的路由协议与其他路由器和主机上的路由选择守护进程进行通信。这些协议有助于主机确定向何处转发包。启用网络接口后,系统自动与路由选择守护进程进行通信。这些守护进程监视网络中的路由器,并将路由器的地址通告本地网络中的所有主机。某些路由协议(虽然不是全部)还维护可以用于衡量路由性能的统计信息。与包转发不同,必须在 Oracle Solaris 系统上显式配置路由。
本节介绍在 IPv4 路由器和主机上管理包转发和路由的任务。有关在启用了 IPv6 的网络中路由的信息,请参阅配置 IPv6 路由器。
路由协议分为内部网关协议 (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 路由协议
|
Oracle Solaris 也支持开放源代码 Quagga 路由协议套件。这些协议可以从 SFW 集合磁盘获取,尽管它们不是 Oracle Solaris 主发行版的一部分。下表列出了 Quagga 协议。
表 5-2 Open Source Quagga 协议
|
下图显示使用 Quagga 路由协议的自治系统。
图 5-2 运行 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 协议的更多信息,请访问 Quagga Routing Suite 网站:http://www.nongnu.org/quagga/index.html.
具有多个路由器和网络的站点通常将其网络拓扑作为单个路由域或自治系统 (Autonomous System, AS) 进行管理。下图显示了一个将被视为小型 AS 的典型网络拓扑。在贯穿本节的示例中引用的就是此拓扑。
图 5-3 具有多个 IPv4 路由器的自治系统
该图显示了一个已划分为三个本地网络(即 10.0.5.0、172.20.1.0 和 192.168.5)的 AS。四个路由器分担包转发和路由职责。AS 包括以下类型的系统:
边界路由器将 AS 连接到外部网络,如 Internet。边界路由器与在本地 AS 上运行的 IGP 的外部网络互连。边界路由器可以运行 EGP,如边界网关协议 (Border Gateway Protocol, BGP),以与外部路由器(例如 ISP 上的路由器)交换信息。在图 5-3 中,边界路由器的接口连接到内部网络 10.0.5.0 以及服务提供商的高速路由器。
有关配置边界路由器的信息,请参阅适用于 BGP 的 开放源代码 Quagga 文档。
如果计划使用 BGP 将 AS 连接到 Internet,则应该从适用于您语言环境的 Internet 注册机构获取自治系统编号 (Autonomous System Number, ASN)。区域注册机构,如美国 Internet 编号注册机构 (American Registry for Internet Numbers, ARIN),提供了有关如何获取 ASN 的指导。例如,《ARIN Number Resource Policy Manual》(《ARIN 数字资源政策手册》)包含有关在美国和加拿大获取自治系统的 ASN 的说明。或者,您的 ISP 也许能够为您获取 ASN。
缺省路由器维护有关本地网络中所有系统的路由信息。这些路由器通常运行 IGP,如 RIP。在图 5-3 中,路由器 1 的接口连接到内部网络 10.0.5.0 和内部网络 192.168.5。路由器 1 还充当 192.168.5 的缺省路由器。路由器 1 维护 192.168.5 中所有系统的路由信息并路由到其他路由器(如边界路由器)。路由器 2 的接口连接到内部网络 10.0.5.0 和内部网络 172.20.1。
有关配置缺省路由器的示例,请参阅示例 5-4。
包转发路由器转发包但不运行路由协议。此类型的路由器从其连接到单个网络的接口之一接收包。然后,这些包通过路由器上的其他接口转发到其他本地网络。在图 5-3 中,路由器 3 是连接到网络 172.20.1 和 192.168.5 的包转发路由器。
多宿主主机具有连接到同一网络段的两个或更多个接口。多宿主主机可以转发包,这是运行 Oracle Solaris 的所有系统的缺省行为。图 5-3 显示了一个多宿主主机,它的两个接口都连接到网络 192.168.5。有关配置多宿主主机的示例,请参阅示例 5-6。
单接口主机不仅在包转发方面而且在接收重要配置信息方面依赖于本地路由器。图 5-3 包含 192.168.5 网络中实现动态路由的主机 A 和 172.20.1 网络中实现静态路由的主机 B。要将主机配置为运行动态路由,请参阅如何在单接口主机上启用动态路由。要将主机配置为运行静态路由,请参阅如何在单接口主机上启用静态路由。
本节包含配置 IPv4 路由器的过程和示例。要配置启用了 IPv6 的路由器,请参阅如何配置启用了 IPv6 的路由器。
由于路由器提供两个或多个网络之间的接口,因此必须为路由器的每个物理网络接口指定唯一名称和 IP 地址。这样,每个路由器都有与其主网络接口关联的主机名和 IP 地址,以及其他每个网络接口的至少一个唯一名称和 IP 地址。
也可以使用以下过程将只有一个物理接口的系统(缺省情况下为主机)配置为路由器。如果单接口系统将要用作 PPP 链路上的一个端点,则可以将它配置为路由器,如《System Administration Guide: Network Services》中的"Planning a Dial-up PPP Link"所述。
以下说明假定要在安装后配置路由器的接口。
开始之前
在网络中物理安装路由器后,将路由器配置为以本地文件模式运行,如如何以本地文件模式配置主机中所述。此配置可确保即使网络配置服务器关闭路由器也会引导。
Primary Administrator(主管理员)角色拥有 Primary Administrator(主管理员)配置文件。有关如何创建该角色并将其指定给用户,请参见《Oracle Solaris 管理:基本管理》中的第 2 章 "使用 Solaris Management Console(任务)"。
# 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
例如,对于 qfe1,请键入:
# ifconfig qfe1 plumb
注 - 使用 ifconfig 命令显式配置的接口在重新引导后不会继续存在。
注意 - 可以将 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.qfe1 和 /etc/hostname.qfe2 文件。然后在 /etc/hostname.qfe1 文件中键入主机名 timbuktu,在 /etc/hostname.qfe2 中键入主机名 timbuktu-201。有关配置单个接口的更多信息,请参阅如何在安装系统后配置物理接口。
在创建此文件后,务必进行配置重新引导:
# reboot -- -r
例如:
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 接口。
例如:
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
对于传统的 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
使用以下命令之一启用包转发:
使用 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-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 接口已使用 IP 地址进行配置。进行缺省路由器配置首先应将 bge0 接口物理连接到 10.0.5.0 网络。然后,检测该接口,并使其在重新引导后继续存在。
# ifconfig bge0 plumb # ifconfig bge0 10.0.5.10/8 up # 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 的路由表中定义边界路由器的静态路由。有关更多详细信息,请参阅路由表和路由类型。
路由器和主机都维护路由表。每个系统上的路由选择守护进程都使用所有的已知路由来更新该表。在将包转发到本地网络之前,系统的内核读取路由表。路由表列出了系统知晓的网络的 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 网络实现动态路由,请使用 routeadm 或 svcadm 命令启动 in.routed 路由选择守护进程。有关说明,请参见如何配置 IPv4 路由器。动态路由是大多数网络和自治系统的首选策略。但是,您的网络拓扑或您网络中的特定系统可能需要静态路由。在该情况下,必须手动编辑系统路由表,向网关反映已知路由。接下来的过程说明如何添加静态路由。
使用一般用户帐户运行以下形式的 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
Primary Administrator(主管理员)角色拥有 Primary Administrator(主管理员)配置文件。有关如何创建该角色并将其指定给用户,请参见《Oracle Solaris 管理:基本管理》中的第 2 章 "使用 Solaris Management Console(任务)"。
# route flush
# route -p add -net network-address -gateway gateway-address
创建一个在系统重新引导后必须继续存在的路由。如果希望路由仅对当前会话有效,则不要使用 -p 选项。
指示将要添加以下路由。
指定路由将转到具有 network-address 中地址的网络。
指示指定路由的网关系统具有 IP 地址 gateway-address。
示例 5-5 将静态路由添加到路由表
以下示例说明如何将静态路由添加到系统。该系统是路由器 2,即图 5-3 所示的 172.20.1.0 网络的缺省路由器。在示例 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 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中,具有多个接口的系统被视为多宿主主机。多宿主主机的接口可以与不同物理网络或同一物理网络中的多个子网连接。
如果一个系统的多个接口连接到同一子网,必须首先将这些接口配置到一个 IPMP 组中。否则,该系统无法成为多宿主主机。有关 IPMP 的更多信息,请参见第 5 部分, IPMP。
多宿主主机不会转发 IP 包,但可以配置为运行路由协议。通常,可以将以下类型的系统配置为多宿主主机:
通常,可以将以下类型的系统配置为多宿主主机:
可以将 NFS 服务器(尤其是用作大型数据中心的那些服务器)连接到多个网络,以便在大量用户之间共享文件。这些服务器无需维护路由表。
数据库服务器可以具有多个网络接口,从而可为大量用户提供资源,就像 NFS 服务器那样。
防火墙网关是连接公司网络和公共网络(如 Internet)的系统。管理员将设置防火墙作为一项安全措施。当配置为防火墙时,主机不在连接到主机接口的网络之间传递包。但是,主机仍可以为授权用户提供标准 TCP/IP 服务,如 ssh。
注 - 当多宿主主机在其任一接口上具有不同类型的防火墙时,请小心谨慎以免无意中中断主机的包。对于有状态防火墙,尤其容易出现此问题。针对此问题的一种解决方案是配置无状态防火墙。有关防火墙的更多信息,请参阅《System Administration Guide: Security Services》中的"Firewall Systems"或第三方防火墙的相应文档。
Primary Administrator(主管理员)角色拥有 Primary Administrator(主管理员)配置文件。有关如何创建该角色并将其指定给用户,请参见《Oracle Solaris 管理:基本管理》中的第 2 章 "使用 Solaris Management Console(任务)"。
请参阅如何在安装系统后配置物理接口。
# 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"
使用以下命令之一:
对于 routeadm 命令,请键入以下内容:
# routeadm -d ipv4-forwarding -u
要使用 SMF,请键入以下内容:
# svcadm disable ipv4-forwarding
使用以下命令之一打开 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 # ifconfig qfe0 192.168.5.85/8 up # 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 将成为多宿主主机。
单接口主机需要实现某种形式的路由。如果主机要从一个或多个本地缺省路由器获取其路由,则必须将该主机配置为使用静态路由。否则,建议对该主机使用动态路由。以下过程包含启用这两种路由类型的说明。
以下过程可在单接口主机上启用静态路由。使用静态路由的主机不运行动态路由协议(如 RIP)。相反,主机必须依赖于缺省路由器的服务来获取路由信息。IPv4 自治系统拓扑图显示了几个缺省路由器及其客户机主机。如果在安装特定主机时提供了缺省路由器的名称,则该主机已经配置为使用静态路由。
注 - 也可以使用以下过程在多宿主主机上配置静态路由。
有关 /etc/defaultrouter 文件的信息,请参见/etc/defaultrouter 文件。有关静态路由和路由表的信息,请参阅路由表和路由类型。
Primary Administrator(主管理员)角色拥有 Primary Administrator(主管理员)配置文件。有关如何创建该角色并将其指定给用户,请参见《Oracle Solaris 管理:基本管理》中的第 2 章 "使用 Solaris Management Console(任务)"。
# cd /etc # ls | grep defaultrouter
# vi /etc/defaultrouter router-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"
有关配置 /etc/inet/hosts 的信息,请参阅如何更改 IPv4 地址和其他网络配置参数。
示例 5-7 为单接口主机配置缺省路由器和静态路由
以下示例说明如何为图 5-3 所示的网络 172.20.1.0 中的单接口主机 hostb配置静态路由。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
动态路由是管理主机上路由的最简单的方法。使用动态路由的主机运行由 IPv4 的 in.routed 守护进程或 IPv6 的 in.ripngd 守护进程提供的路由协议。使用接下来的过程在单接口主机上启用 IPv4 动态路由。有关动态路由的更多信息,请参阅IPv4 网络上的包转发和路由。
Primary Administrator(主管理员)角色拥有 Primary Administrator(主管理员)配置文件。有关如何创建该角色并将其指定给用户,请参见《Oracle Solaris 管理:基本管理》中的第 2 章 "使用 Solaris Management Console(任务)"。
# cd /etc # ls | grep defaultrouter
/etc/defaultrouter 文件为空会强制主机使用动态路由。
# 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"
使用以下命令之一:
对于 routeadm 命令,请键入以下内容:
# routeadm -d ipv4-forwarding -u
要使用 SMF,请键入以下内容:
# svcadm disable ipv4-forwarding
使用以下命令之一:
对于 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