系统管理指南:IP 服务

TCP/IP 配置文件

网络中的每个系统都可以从以下 TCP/IP 配置文件和网络数据库中获取其 TCP/IP 配置信息:

Oracle Solaris : 安装程序在安装过程中创建上述文件。也可以按照本节中的说明手动编辑这些文件。hostsnetmasks 数据库是两个网络数据库,可供 Oracle Solaris : 网络上可用的名称服务读取。网络数据库和 nsswitch.conf 文件详细介绍了网络数据库的概念。对于 Solaris 10 11/06 及早期发行版,有关 ipnodes 文件的信息,请参见ipnodes 数据库

/etc/hostname.interface 文件

此文件定义了本地主机上的物理网络接口。本地系统上至少应该有一个 /etc/hostname.interface 文件。Oracle Solaris : 安装程序为安装过程中找到的第一个接口创建 /etc/hostname.interface 文件。此接口通常具有最低的设备编号(例如 eri0),并称为主网络接口。如果安装程序找到其他接口,您也可以在安装过程中对这些接口进行配置(可选)。


注 –

如果为同一接口创建备用主机名文件,则备用文件也必须遵循命名格式 hostname.[0-9]*,如 hostname.qfe0.a123。诸如 hostname.qfe0.bakhostname.qfe0.old 之类的名称无效,且会在系统引导期间被脚本忽略。

也请注意,一个给定的接口只能有一个相应的主机名文件。如果用有效的文件名为接口创建一个备用主机名文件,例如 /etc/hostname.qfe/etc/hostname.qfe.a123,则引导脚本会尝试同时引用这两个主机名文件的内容来进行配置,因而会产生错误。要避免这些错误,请为给定配置中不使用的主机名文件使用无效的文件名。


如果在安装之后为系统添加新的网络接口,则必须为此接口创建 /etc/hostname.interface 文件,如如何在安装系统后配置物理接口中所述。另外,为使 Oracle Solaris : 软件识别并使用新的网络接口,需要将此接口的设备驱动程序加载到相应的目录中。有关相应的 interface 名称和设备驱动程序的说明,请参阅新网络接口附带的文档。

基本的 /etc/hostname.interface 文件包含一项内容: 与此网络接口关联的主机名或 IPv4 地址。IPv4 地址可用传统的点分十进制格式或 CIDR 表示法表示。如果在 /etc/hostname.interface 文件中使用主机名,则 /etc/inet/hosts 文件也必须包含此主机名。

例如,假定 smc0 是称为 tenere 的系统的主网络接口。/etc/hostname.smc0 文件所包含的项可以是以点分十进制或 CIDR 表示法表示的 IPv4 地址,也可以是主机名 tenere


注 –

IPv6 使用 /etc/hostname6.interface 文件定义网络接口。有关更多信息,请参阅IPv6 接口配置文件


/etc/nodename 文件

此文件应该包含一项内容, 即本地系统的主机名。例如,在 timbuktu 系统上,/etc/nodename 文件将会包含 timbuktu 项。

/etc/defaultdomain 文件

此文件应该包含一项内容, 即本地主机网络所属的管理域的全限定域名。可以将此名称提供给 Oracle Solaris : 安装程序或在以后编辑此文件。有关网络域的更多信息,请参阅《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》

/etc/defaultrouter 文件

对于每个直接连接到网络的路由器,此文件可以包含一个对应项。该项应该是作为网络间路由器的网络接口的名称。/etc/defaultrouter 文件的存在表明系统是支持静态路由的。

hosts 数据库

hosts 数据库包含网络中各系统的 IPv4 地址和主机名。如果使用 NIS 或 DNS 名称服务,或者使用 LDAP 目录服务,则 hosts 数据库在专门存储主机信息的数据库中进行维护。例如,在运行 NIS 的网络中,hosts 数据库在 hostsbyname 文件中进行维护。

如果使用本地文件提供名称服务,则 hosts 数据库将在 /etc/inet/hosts 文件中进行维护。此文件包含主网络接口的主机名和 IPv4 地址、连接到系统的其他网络接口的主机名和 IPv4 地址以及系统必须检查的其他网络地址。


注 –

为了与基于 BSD 的操作系统兼容,/etc/hosts 文件是指向 /etc/inet/hosts 的符号链接。


/etc/inet/hosts 文件格式

/etc/inet/hosts 文件使用以下基本语法。有关完整的语法信息,请参阅 hosts(4) 手册页。

IPv4-address hostname [nicknames] [#comment]

IPv4-address

包含本地主机必须识别的每个接口的 IPv4 地址。

hostname

包含设置期间指定给系统的主机名,以及指定给本地主机必须识别的其他网络接口的主机名。

[nickname]

包含主机别名的可选字段。

[#comment]

可选的注释字段。

初始 /etc/inet/hosts 文件

在系统上运行 Oracle Solaris : 安装程序时,该程序将配置初始 /etc/inet/hosts 文件。此文件包含本地主机所需的最少数目的项。其中包括回送地址、主机 IPv4 地址以及主机名。

例如,Oracle Solaris : 安装程序可能为图 5–1 中所示的 tenere 系统创建以下 /etc/inet/hosts 文件:


示例 10–1 系统 tenere/etc/inet/hosts 文件


127.0.0.1     localhost         loghost    #loopback address
192.168.200.3   tenere                      #host name

回送地址

示例 10–1 中,IPv4 地址 127.0.0.1回送地址。回送地址是本地系统用来允许进程间通信的保留网络接口。主机可使用此地址将数据包发送给自己。ifconfig 命令使用回送地址进行配置和测试,如使用 ifconfig 命令监视接口配置中所述。TCP/IP 网络中的每个系统都必须使用 IP 地址 127.0.0.1 作为本地主机的 IPv4 回送地址。

主机名

IPv4 地址 192.168.200.1 和名称 tenere 是本地系统的地址和主机名。它们指定给系统的主网络接口。

多个网络接口

一些系统具有多个网络接口,因为它们是路由器或者多宿主主机。每个连接到系统的网络接口都需要有自己的 IP 地址以及与其关联的名称。在安装过程中,必须配置主网络接口。安装时,如果特定系统具有多个接口,Oracle Solaris : 安装程序会针对其他接口对您进行提示。此时,您可以选择性地配置一个或多个其他接口,或者以后手动进行配置。

安装 Oracle Solaris : 后,可以通过将接口信息添加到系统的 /etc/inet/hosts 文件,来为路由器或多宿主主机配置其他接口。有关配置路由器和多宿主主机的更多信息,请参阅配置 IPv4 路由器配置多宿主主机

示例 10–2 显示了图 5–1 中所示的系统 timbuktu/etc/inet/hosts 文件。


示例 10–2 系统 timbuktu/etc/inet/hosts 文件


127.0.0.1        localhost     loghost
192.168.200.70   timbuktu      #This is the local host name
192.168.201.10   timbuktu-201  #Interface to network 192.9.201

通过这两个接口,timbuktu 作为路由器连接网络 192.168.200192.168.201

名称服务如何影响 hosts 数据库

NIS 和 DNS 名称服务以及 LDAP 目录服务在一台或多台服务器上维护主机名和地址。这些服务器维护 hosts 数据库,该数据库包含服务器所在的网络中每台主机和路由器(如果适用)的信息。有关这些服务的更多信息,请参阅《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》

本地文件何时提供名称服务

在使用本地文件提供名称服务的网络中,以本地文件模式运行的系统将查询各自的 /etc/inet/hosts 文件,以查找网络中其他系统的 IPv4 地址和主机名。因此,这些系统的 /etc/inet/hosts 文件必须包含以下内容:

图 10–1 显示了系统 tenere/etc/inet/hosts 文件。此系统以本地文件模式运行。请注意,此文件包含 192.9.200 网络中每个系统的 IPv4 地址和主机名。此文件还包含接口名称 timbuktu-201 及其对应的 IPv4 地址。此接口将 192.9.200 网络连接到 192.9.201 网络。

配置为网络客户机的系统对其回送地址和 IPv4 地址使用本地 /etc/inet/hosts 文件。

图 10–1 以本地文件模式运行的系统的 /etc/inet/hosts 文件

显示以本地文件模式运行的系统的主机文件可能的样式。

ipnodes 数据库


注 –

在 Solaris 10 11/06 之后的发行版中,不再包括 ipnodes 数据库。在这些后续发行版中,ipnodes 的 IPv6 功能迁移到 hosts 数据库中。


/etc/inet/ipnodes 文件既可以存储 IPv4 地址,又可以存储 IPv6 地址。此外,也可以存储以传统的点分十进制或 CIDR 表示法表示的 IPv4 地址。此文件作为将主机名与其 IPv4 和 IPv6 地址进行关联的本地数据库。不要将主机名及其地址存储在静态文件中,例如 /etc/inet/ipnodes。但是,为了进行测试,可以按照在 /etc/inet/hosts 中存储 IPv4 地址的方式在文件中存储 IPv6 地址。ipnodes 文件与 hosts 文件使用相同的格式约定。有关 /etc/inet/hosts 的更多信息,请参阅hosts 数据库。有关 ipnodes 文件的说明,请参见 ipnodes(4) 手册页。

启用了 IPv6 的应用程序使用 /etc/inet/ipnodes 数据库。只包含 IPv4 地址的现有 /etc/hosts 数据库保持不变,以利于现有应用程序的运行。如果 ipnodes 数据库不存在,则启用了 IPv6 的应用程序使用现有的 hosts 数据库。


注 –

如果需要添加地址,必须将 IPv4 地址同时添加到 hostsipnodes 文件中,而只需将 IPv6 地址添加到 ipnodes 文件中。



示例 10–3 /etc/inet/ipnodes 文件

必须按主机名对主机名地址进行分组,如以下示例所示。


#
# Internet IPv6 host table
# with both IPv4 and IPv6 addresses
#
::1     localhost
2001:db8:3b4c:114:a00:20ff:fe78:f37c   farsite.com farsite farsite-v6
fe80::a00:20ff:fe78:f37c     farsite-11.com farsitell
192.168.85.87   				 farsite.com farsite farsite-v4
2001:db8:86c0:32:a00:20ff:fe87:9aba   nearsite.com nearsite nearsite-v6
fe80::a00:20ff:fe87:9aba     nearsite-11.com nearsitell
10.0.0.177  				 nearsite.com nearsite nearsite-v4 loghost

netmasks 数据库

当您在网络中设置了子网划分时,才需要在配置网络时编辑 netmasks 数据库。netmasks 数据库由网络及其关联的子网掩码的列表组成。


注 –

创建子网时,每个新网络必须是单独的物理网络。不能在单个物理网络中应用子网划分。


什么是子网划分?

在大型互联网络中,子网划分是一种最大程度地利用有限的 32 位 IPv4 地址空间并减小路由表大小的方法。借助地址类,子网划分提供了一种将部分主机地址空间分配给网络地址的方法,从而使您具有更多网络。分配给新网络地址的主机地址空间部分称为子网号

除了更有效地利用 IPv4 地址空间之外,子网划分还具有多种管理方面的优势。随着网络数量的增长,路由过程将变得非常复杂。例如,某个小型组织可能为每个本地网络分配了一个 C 类网络号。随着组织的发展,管理大量不同的网络号可能变得异常复杂。一个更好的解决办法是将少量 B 类网络号分配给组织中的各个主要部门。例如,可以为工程部分配一个 B 类网络,为业务部分配一个 B 类网络,等等。然后,使用通过子网划分获得的附加网络号,将每一个 B 类网络划分为多个附加网络。这种划分方式还可以减少必须在路由器间传送的路由信息量。

为 IPv4 地址创建网络掩码

在进行子网划分的过程中,需要选择一个网络范围的网络掩码。网络掩码确定主机地址空间中有多少位以及哪些位表示子网号,有多少位以及哪些位表示主机号。请记住,完整的 IPv4 地址由 32 位组成。其中最多可用 24 位、最少可用 8 位表示主机地址空间,具体取决于地址类。网络掩码是在 netmasks 数据库中指定的。

如果计划使用子网,必须在配置 TCP/IP 之前确定网络掩码。如果计划将安装操作系统作为网络配置的一部分,Oracle Solaris : 安装程序将要求您提供网络的网络掩码。

32 位 IP 地址由网络部分和主机部分组成,如设计 IPv4 寻址方案中所述。32 位分为 4 个字节。根据网络类的不同,将每个字节分别指定给网络号或主机号。

例如,在 B 类 IPv4 地址中,左边的 2 个字节指定给网络号,而右边的 2 个字节指定给主机号。在 B 类 IPv4 地址 172.16.10 中,您可以将右边的 2 个字节指定给主机。

如果要实现子网划分,您需要将指定给主机号的字节中的某些位应用到子网地址。例如,16 位的主机地址空间可为 65,534 台主机提供地址。如果将第三个字节应用到子网地址,第四个字节应用到主机地址,则可以为最多 254 个网络提供地址,其中每个网络中最多具有 254 台主机。

主机地址字节中的哪些位应用到子网地址及主机地址是由子网掩码确定的。使用子网掩码从用作子网地址的字节中选择位。尽管网络掩码位必须是连续的,但它们不需要与字节边界对齐。

通过使用按位逻辑 AND 运算符,可以将网络掩码应用到 IPv4 地址。此操作将选出地址的网络号和子网号位置。

可以采用二进制表示法来说明网络掩码。可以使用计算器进行二进制到十进制的转换。以下示例显示了网络掩码的十进制格式和二进制格式。

如果将网络掩码 255.255.255.0 应用到 IPv4 地址 172.16.41.101,则结果为 IPv4 地址 172.16.41.0

172.16.41.101 & 255.255.255.0 = 172.16.41.0

此操作的二进制格式如下所示:

10000001.10010000.00101001.01100101(IPv4 地址)

11111111.11111111.11111111.00000000(网络掩码)进行 AND 操作

现在,系统查找网络号 172.16.41,而不是 172.16。如果您的网络号是 172.16.41,则此编号便是系统检查并找到的编号。因为最多可以为 IPv4 地址空间的第三个字节指定 254 个值,所以通过子网划分可以为 254 个网络创建地址空间,之前地址空间只可用于一个网络。

如果只需要为两个附加网络提供地址空间,则可以使用以下子网掩码:

255.255.192.0

此网络掩码将生成以下结果:

11111111.11111111.1100000.00000000

此结果仍然保留 14 位,供主机地址使用。因为所有 0 和 1 都是保留的,所以必须至少为主机号保留 2 位。

/etc/inet/netmasks 文件

如果您的网络运行 NIS 或 LDAP,则提供这些名称服务的服务器将维护 netmasks 数据库。对于使用本地文件提供名称服务的网络,此信息在 /etc/inet/netmasks 文件中维护。


注 –

为了与基于 BSD 的操作系统兼容,/etc/netmasks 文件是指向 /etc/inet/netmasks 的符号链接。


以下示例显示 B 类网络的 /etc/inet/netmasks 文件。


示例 10–4 B 类网络的 /etc/inet/netmasks 文件。


 # The netmasks file associates Internet Protocol (IPv4) address
 # masks with IPv4 network numbers.
 #
 # 	network-number	netmask
 #
 # Both the network-number and the netmasks are specified in
 # “decimal dot” notation, e.g:
 #
 #        128.32.0.0   255.255.255.0
 192.168.0.0  255.255.255.0

如果 /etc/netmasks 文件不存在,请使用文本编辑器创建此文件。使用以下语法:

network-number	netmask-number

有关完整的详细信息,请参阅 netmasks(4) 手册页。

创建网络掩码号时,在 /etc/inet/netmasks 中键入由 ISP 或 Internet 注册机构指定的网络号(不是子网号)和网络掩码号。每个子网掩码应单占一行。

例如:


128.78.0.0	    255.255.248.0

您还可以在 /etc/inet/hosts 文件中键入网络号的符号名称。然后,可以使用这些网络名称代替网络号作为命令参数。