应该始终将手工配置网络软件作为最后的选择。建议使用 YaST。但是,对网络配置背景信息的了解将对您使用 YaST 有所帮助。
可以通过热插拔检测并配置所有内置网卡及热插拔网卡(PCMCIA、USB 和某些 PCI 卡)。系统以两种不同的方式处理网卡:首先将其作为物理设备对待,其次将其作为接口对待。设备的插入或检测将触发一个热插拔事件。此热插拔事件通过脚本 hwup 触发设备的初始化。当将网卡作为新网络接口进行初始化时,内核将生成另一个热插拔事件,该事件触发通过 ifup 设置接口的操作。
内核按照接口注册的时间顺序对接口名进行编号。对于名称的指派,初始化顺序是决定性的。如果多个网卡中的一个失败,则所有随后初始化的网卡的编号将发生变化。对于真正的可热插拔网卡,连接设备的顺序非常重要。
为了实现灵活的配置,设备(硬件)的配置和接口的配置是分开进行的,配置到设备和接口的映射不再以接口名为基础进行管理。设备配置位于 /etc/sysconfig/hardware/hwcfg-* 中。接口配置位于 /etc/sysconfig/network/ifcfg-* 中。指派配置名的方式使这些名称可以描述所关联的设备和接口。因为以前从驱动程序到接口名的映射需要静态接口名,所以 /etc/modprobe.conf 中不再进行此映射。在新概念中,此文件中的别名项可能导致不希望出现的副作用。
配置名(hwcfg- 或 ifcfg- 后的任何内容)可以通过插槽、设备特定的 ID 或接口名对设备进行描述。例如,某个 PCI 卡的配置名可能是 bus-pci-0000:02:01.0(PCI 插槽)或 vpid-0x8086-0x1014-0x0549(厂商和产品 ID)。关联接口的名称可能是 bus-pci-0000:02:01.0 或 wlan-id-00:05:4e:42:31:7a (MAC 地址)。
若要将某个网络配置指派给某种类型的任何一个卡(一次只插入一个该类型的卡)而不是某个特定的卡,请选择不是非常特定的配置名。例如,可以将 bus-pcmcia 用于所有 PCMCIA 卡。另一方面,可以通过在前面加上接口类型对名称进行限制。例如,可以为连接在 USB 端口上的 WLAN 卡指派 wlan-bus-usb。
系统始终使用对接口或提供接口的设备描述最清楚的配置。搜索最合适的配置是由 getcfg 处理的。getcfg 的输出提供可用于描述设备的所有信息。getcfg 的手册页中介绍了有关指定配置名的详细信息。
使用上面介绍的方法,即使不总是以相同的顺序初始化网络设备,也可以用正确的配置对网络接口进行配置。但是,接口的名称仍取决于初始化顺序。有两种方法可以确保对特定网卡的接口进行可靠的访问:
getcfg-interface 返回关联的网络接口的名称。因此,在某些配置文件中,可以输入配置名(例如,防火墙、dhcpd、路由、多种虚拟网络接口(隧道))而不是非持久的接口名。
configuration name
可以将持久性接口名指派给其配置不包括接口名的所有接口。这可以通过在接口配置 (ifcfg-*) 中输入 PERSISTENT_NAME= 实现。但是,持久性名称 pnamepname 不应该与内核可能自动指派的名称相同。因此,不允许使用 eth*、tr* 和 wlan* 等名称。请改用 net* 或者像 external、internal 或 dmz 等描述性名称。只能紧接在接口注册之后为接口指派持久性名称,这意味着必须重装载网卡的驱动程序或者必须执行 hwup 。命令 rcnetworkdevice descriptionrestart 不足以实现此目的。
![]() | 使用持久性接口名 |
|---|---|
持久性接口名的使用尚未在所有领域中进行测试。因此,某些应用程序不能顺畅地处理所选的接口名。 | |
ifup 需要现有的接口,因为它不初始化硬件。硬件的初始化是由命令 hwup 处理的(由 hotplug 或 coldplug 执行)。当初始化设备时,将通过 hotplug 为新接口自动执行 ifup,如果启动方式是 onboot、hotplug 或 auto 并且启动了 network 服务,则将设置接口。以前,命令 ifup 触发硬件初始化。目前的过程与以前的过程相反。首先初始化硬件部件,随后执行所有其他操作。这样,使用现有的这组配置,总能以可能的最佳方式配置数目不固定的设备。
interfacename
表 38.5 “手工网络配置脚本” 总结了网络配置中所涉及的最重要的脚本。只要有可能,硬件和接口将对脚本进行区分。
表 38.5. 手工网络配置脚本
配置阶段 | 命令 | 功能 |
|---|---|---|
硬件 | hw{up,down,status} |
热插拔子系统执行此 |
接口 | getcfg | getcfg 可用于查询与配置名或硬件描述关联的接口名。getcfg 的手册页中提供了详细信息。 |
接口 | if{up,down,status} |
|
有关热插拔和持久性设备名的详细信息在 第 32 章 热插拔系统 和 第 33 章 使用 udev 创建动态设备节点 中有所介绍。
本节对网络配置文件进行了概述并解释了它们的作用和所使用的格式。
这些文件包含网卡和其他设备的硬件配置。它们包含所需的参数,例如内核模块、启动方式和脚本关联。有关详细信息,请参考 hwup 的手册页。不管现有硬件如何,都会在启动冷插拔时应用 hwcfg-static-* 配置。
这些文件包含网络接口的配置。它们包含启动方式和 IP 地址等信息。可能的参数在 ifup 的手册页中有所介绍。另外,如果应将常规设置只用于一个接口,则文件 dhcp、wireless 和 config 中的所有变量都可用于 ifcfg-* 文件。
文件 config 包含 ifup、ifdown 和 ifstatus 行为的常规设置。dhcp 包含用于无线 LAN 卡的 DHCP 和 wireless 设置。对所有这三个配置文件中的变量都进行了注释,它们还可用于 ifcfg-* 文件中,该文件将以较高的优先级处理这三个配置文件。
在这里确定 TCP/IP 包的静态路由。可以在 /etc/sysconfig/network/routes 文件中输入各项系统任务要求的所有静态路由:连接主机的路由、通过网关连接主机的路由和连接网络的路由。需要单独路由的各个接口要定义附加配置文件:/etc/sysconfig/network/ifroute-*。用接口名称替换 *。路由选择配置文件中的项如下所示:
# Destination Dummy/Gateway Netmask Device # 127.0.0.0 0.0.0.0 255.255.255.0 lo 204.127.235.0 0.0.0.0 255.255.255.0 eth0 default 204.127.235.41 0.0.0.0 eth0 207.68.156.51 207.68.145.45 255.255.255.255 eth1 192.168.0.0 207.68.156.51 255.255.0.0 eth1
路由目标位于首列。此列可以包含网络或主机的 IP 地址,或者在有可访问名称服务器时,包含完全限定的网络或主机名。
第二列包含默认网关或通过其可访问主机或网络的网关。第三列包含网关后的网络或主机的子网掩码。例如,网关后主机的掩码为 255.255.255.255。
第四列只与本地主机连接的网络有关,如回路、Ethernet、ISDN、PPP 和虚拟设备。必须在此输入设备名。
可用第五列(可选)指定路由类型。不需要的列应包含减号 (-) 以确保分析程序正确解释了命令。关于详细信息,请参见 routes(5) 手册页。
在此文件中指定主机所属的域(关键字 search)。同时列出的还有要访问的名称服务器地址的状态(关键字 nameserver)。可以指定多个域名。当解析不是完全限定的名称时,将尝试通过附加单独的 search 项生成一个完全限定的名称。通过输入多行可以输入多个名称服务器,每行都以 nameserver 开头。注释符号 # 开头。YaST 在此文件中输入指定的名称服务器。例 38.5 “/etc/resolv.conf”显示 /etc/resolv.conf 的内容。
例 38.5. /etc/resolv.conf
# Our domain search example.com # # We use sun (192.168.0.20) as nameserver nameserver 192.168.0.20
某些服务(例如 pppd (wvdial)、ipppd (isdn)、dhcp(dhcpcd 和 dhclient)、pcmcia 和 hotplug 通过脚本 modify_resolvconf 修改文件 /etc/resolv.conf。如果文件 /etc/resolv.conf 已被此脚本临时修改,则它将包含预定义的注释,给出有关修改它的服务的信息、备份原始文件的位置以及如何关闭自动修改机制。如果 /etc/resolv.conf 被多次修改,则该文件以嵌套的形式包括修改。即使还原的顺序不同于进行修改的顺序,也可以以一种彻底的方式进行还原。可能需要这种灵活性的服务包括 isdn、pcmcia 和 hotplug。
如果未以正常、彻底的方式终止服务,则可以使用 modify_resolvconf 恢复原始文件。另外,在系统引导时,将检查是否有由未彻底终止产生的、经修改的 resolv.conf(例如,系统崩溃后),如果有,则将恢复原始(未经修改的)resolv.conf。
YaST 使用命令 modify_resolvconf check 检查 resolv.conf 是否已被修改并将随后警告用户这些更改将在恢复文件后丢失。除此之外,YaST 将不使用 modify_resolvconf,这意味着通过 YaST 更改 resolv.conf 的效果与任何手动更改的效果相同。在两种情况下,更改都具有永久效果。上述服务请求的修改只是临时的。
在此文件中,如 例 38.6 “/etc/hosts” 中所示,将为主机名指派 IP 地址。如果未实施名称服务器,则将与其建立 IP 连接的所有主机必须列在此处。在此文件中为每个主机输入一行,包含 IP 地址、完全限定的主机名和主机名。IP 地址必须在每行的开头,各项用空格和制表符隔开。注释总是以 # 符号开头。
在这里,网络名称被转换为网络地址。格式类似于 hosts 文件的格式,只是网络名称在地址的前面。请参见例 38.7 “/etc/networks”。
此文件控制名称解析,即通过解析程序库转换主机名和网络名称。此文件只用于链接到 libc4 或 libc5 的程序。对于当前的 glibc 程序,请参考 /etc/nsswitch.conf 中的设置。参数必须始终单独在一行上。注释以 # 符号开头。表 38.6 “/etc/host.conf 的参数” 显示了可用的参数。例 38.8 “
/etc/host.conf
” 中显示了 /etc/host.conf 的示例。
表 38.6. /etc/host.conf 的参数
order hosts、bind | 指定访问服务以进行名称解析的顺序。可用参数有(使用空格或逗号隔开): |
hosts:搜索 | |
bind:访问名称服务器 | |
nis:使用 NIS | |
multi on/off | 定义 |
nospoof on spoofalert on/off | 这些参数影响名称服务器 spoofing,但除此之外,它们对网络配置没有任何影响。 |
trim domainname |
在主机名解析后,指定的域名与主机名分开(只要主机名包括域名)。如果只有本地域的名称在 |
GNU C Library 2.0 的引入与 名称服务转换 (NNS) 的引入是同时进行的。有关详细信息,请参见 nsswitch.conf(5) 手册页和 GNU C Library 参考手册。
查询的顺序是在文件 /etc/nsswitch.conf 中定义的。例 38.9 “/etc/nsswitch.conf” 中显示了 nsswitch.conf 的示例。注释以 # 符号开头。在本例中,hosts 数据库下的项意味着通过 DNS(请参见 第 40 章 域名系统)将请求发送到 /etc/hosts (files)。
例 38.9. /etc/nsswitch.conf
passwd:compat group:compat hosts:files dns networks:files dns services:db files protocols:db files netgroup:files automount:files nis
表 38.7 “通过 /etc/nsswitch.conf 可用的数据库” 中列出了 NSS 上可用的“数据库”。另外,近期将推出 automount、bootparams、netmasks 和 publickey。 表 38.8 “NSS“数据库”的配置选项” 中列出了 NSS 数据库的配置选项。
表 38.7. 通过 /etc/nsswitch.conf 可用的数据库
|
|
| Ethernet 地址。 |
|
|
|
|
|
网络中用于控制访问权限的主机和用户列表,请参见 |
|
|
|
|
|
|
|
|
|
|
|
|
表 38.8. NSS“数据库”的配置选项
|
直接访问文件,例如 |
| 通过数据库访问 |
| NIS,另请参见 第 41 章 使用 NIS |
|
只能用作 |
|
只能用作 |
此文件用于配置 nscd(名称服务超速缓存守护程序)。请参见 nscd(8) 和 nscd.conf(5) 手册页。默认情况下,passwd 和 groups 的系统项由 nscd 进行缓存。 这对于目录服务(例如 NIS 和 LDAP)的性能很重要,因为如果不是这样,每次访问名称或组都需要网络连接。默认情况下,不对 hosts 进行缓存,因为 nscd 中缓存主机的机制将导致本地系统无法信任正向和反向查找检查。请设置缓存 DNS 服务器,而不是让 nscd 缓存名称。
如果激活 passwd 的缓存,则通常需要 15 秒才能识别新添加的本地用户。通过使用命令 rcnscd restart 重启动 nscd 可缩短此等待时间。
除了上面介绍的配置文件之外,还有多个脚本在引导计算机时装载网络程序。只要系统切换到某个多用户运行级别,就将启动这些脚本。表 38.9 “网络程序的一些启动脚本” 中介绍了其中的一些脚本。
表 38.9. 网络程序的一些启动脚本
此脚本处理网络接口的配置。硬件必须已被 /etc/init.d/coldplug(通过 hotplug)初始化。如果未启动 network 服务,当通过热插拔插入网络接口时,不实施任何网络接口。 | |
启动 xinetd。xinetd 可用于使服务器服务在系统上可用。例如,它可以在初始化 FTP 连接时启动 vsftpd。 | |
启动 RPC 服务器所需的端口映射器,例如 NFS 服务器。 | |
启动 NFS 服务器。 | |
控制 sendmail 进程。 | |
启动 NIS 服务器。 | |
启动 NIS 客户程序。 |