应该始终将手动配置网络软件作为最后的选择。 建议使用 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
自动向每个接口指定永久接口名。 可以根据需要调整它们。 创建接口名时,请按 /etc/udev/rules.d/30-net_persistent_names.rules 中所述继续。 但是,持久性名称 pname 不应该与内核可能自动指派的名称相同。 因此,不允许使用 eth*、tr*、wlan*、qeth*、iucv* 等名称。请改用 net* 或者像 external、internal 或 dmz 等描述性名称。 确保同一个接口名仅使用一次。 接口名中的字符的范围是 [a-zA-Z0-9]。 只能紧接在接口注册之后为接口指派持久性名称,这意味着必须重装载网卡的驱动程序或者必须执行 hwup。命令 rcnetworkdevice descriptionrestart 不足以实现此目的。
![]() | 使用持久性接口名 |
|---|---|
持久性接口名的使用尚未在所有领域中进行测试。 因此,某些应用程序不能顺畅地处理所选的接口名。 | |
ifup 需要现有的接口,因为它不初始化硬件。 硬件的初始化是由命令 hwup 处理的(由 hotplug 或 coldplug 执行)。 当初始化设备时,将通过 hotplug 为新接口自动执行 ifup,如果启动方式是 onboot、hotplug 或 auto 并且启动了 network 服务,则将设置接口。 以前,命令 ifup 触发硬件初始化。 目前的过程与以前的过程相反。 首先初始化硬件部件,随后执行所有其他操作。 这样,使用现有的这组配置,总能以可能的最佳方式配置数目不固定的设备。
interfacename
表 30.5 “手动网络配置脚本”总结了网络配置中所涉及的最重要的脚本。 只要有可能,硬件和接口将对脚本进行区分。
表 30.5. 手动网络配置脚本
配置阶段 | 命令 | 功能 |
|---|---|---|
硬件 | hw{up,down,status} |
热插拔子系统执行此 |
接口 | getcfg |
getcfg 可用于查询与配置名或硬件描述关联的接口名。 |
接口 | if{up,down,status} |
|
有关热插拔和持久性设备名的详细信息在第 24 章 使用 udev 进行动态内核设备管理中有所介绍。
本节对网络配置文件进行了概述并解释了它们的作用和所使用的格式。
这些文件包含网卡和其他设备的硬件配置。 它们包含所需的参数,例如内核模块、启动方式和脚本关联。 有关详细信息,请参见 hwup 的手册页。 不管现有硬件如何,都会在启动冷插拔时应用 hwcfg-static-* 配置。
这些文件包含网络接口的配置。 它们包含启动方式和 IP 地址等信息。 可能的参数在 ifup 的手册页中有所介绍。 另外,如果应将常规设置只用于一个接口,则文件 dhcp、wireless 和 config 中的所有变量都可用于 ifcfg-* 文件。
►zseries:
IBM System z 不支持 USB。接口文件的名称和网络别名包含特定于 System z 的元素,例如 qeth。
◄
文件 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。
第四列只与本地主机连接的网络有关,如回路、以太网、ISDN、PPP 和虚拟设备。 必须在此输入设备名。
(可选)可以使用第五列来指定路由的类型。 不需要的列中应该包含一个减号 -,这样才能确保分析程序正确解析命令。 关于详细信息,请参见 routes(5) 手册页。
在此文件中指定主机所属的域(关键字 search)。 同时列出的还有要访问的名称服务器地址的状态(关键字 nameserver)。 可以指定多个域名。 当解析不是完全限定的名称时,将尝试通过附加单独的 search 项生成一个完全限定的名称。 通过输入多行可以输入多个名称服务器,每行都以 nameserver 开头。 注释以 # 符号开头。YaST 在此文件中输入指定的名称服务器。例 30.5 “/etc/resolv.conf” 显示 /etc/resolv.conf 的内容。
例 30.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_resolvconfcheck 检查 resolv.conf 是否已被修改并将随后警告用户这些更改将在恢复文件后丢失。 除此之外,YaST 将不使用 modify_resolvconf,这意味着通过 YaST 更改 resolv.conf 的效果与任何手动更改的效果相同。 在两种情况下,更改都具有永久效果。 上述服务请求的修改只是临时的。
在此文件中,如 例 30.6 “/etc/hosts” 中所示,将为主机名指派 IP 地址。 如果未实施名称服务器,则将与其建立 IP 连接的所有主机必须列在此处。 在此文件中为每个主机输入一行,包含 IP 地址、完全限定的主机名和主机名。 IP 地址必须在每行的开头,各项用空格和制表符隔开。 注释总是以 # 符号开头。
例 30.6. /etc/hosts
127.0.0.1 localhost 192.168.0.20 sun.example.com sun 192.168.0.1 earth.example.com earth
此文件控制名称解析,即通过解析程序库转换主机名和网络名称。 此文件只用于链接到 libc4 或 libc5 的程序。 对于当前的 glibc 程序,请参见 /etc/nsswitch.conf 中的设置。 参数必须始终单独在一行上。 注释以 # 符号开头。表 30.6 “/etc/host.conf 的参数” 显示了可用的参数。 例 30.8 “
/etc/host.conf
”中显示了 /etc/host.conf 的示例。
表 30.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 中定义的。 中显示了 nsswitch.conf 的示例。例 30.9 “/etc/nsswitch.conf” 注释以 # 符号开头。 在本例中,hosts 数据库下的项意味着通过 DNS(请参见 第 33 章 域名系统)将请求发送到 /etc/hosts (files)。
例 30.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
表 30.7 “通过 /etc/nsswitch.conf 可用的数据库”中列出了 NSS 上可用的“数据库”。另外,近期将推出 automount、bootparams、netmasks 和 publickey。 表 30.8 “NSS“数据库”的配置选项”中列出了 NSS 数据库的配置选项。
表 30.7. 通过 /etc/nsswitch.conf 可用的数据库
|
|
| 以太网地址。 |
|
|
|
|
|
网络中用于控制访问权限的主机和用户列表,请参见 |
|
|
|
|
|
网络协议,由 |
|
|
|
|
|
用户阴影密码,由 |
表 30.8. NSS“数据库”的配置选项
|
直接访问文件,例如 |
| 通过数据库访问 |
| NIS,另请参见 第 35 章 使用 NIS |
|
仅可用作 |
|
仅可用作 |
此文件用于配置 nscd(名称服务缓存守护程序)。 请参见 nscd(8) 和 nscd.conf(5) 手册页。 默认情况下,passwd 和 groups 的系统项由 nscd 进行缓存。 这对于目录服务(例如 NIS 和 LDAP)的性能很重要,因为如果不是这样,每次访问名称或组都需要网络连接。默认情况下,不对 hosts 进行缓存,因为 nscd 中缓存主机的机制将导致本地系统无法信任正向和反向查找检查。 请设置缓存 DNS 服务器,而不是让 nscd 缓存名称。
如果激活 passwd 的缓存,则通常需要 15 秒才能识别新添加的本地用户。 通过使用命令 rcnscdrestart 重启动 nscd 可缩短此等待时间。
向配置文件写配置之前,可对其进行测试。 要设置测试配置,请使用 ip 命令。 要测试连接,请使用 ping 命令。 也可使用较早的配置工具 ifconfig 和 route。
命令 ip、ifconfig 和 route 会直接更改网络配置,而不会在配置文件中描述更改。 如果未在正确的配置文件中输入配置,重引导时将丢失已更改的网络配置。
ip 是用来显示和配置路由选择、网络设备、策略路由选择以及隧道的工具。 它被设计为替换较早的工具 ifconfig 和 route。
ip 是非常复杂的工具。它的常用语法为 ip。 可使用以下对象:optionsobjectcommand
此对象表示网络设备。
此对象表示设备的 IP 地址。
此对象表示 ARP 或 NDISC 缓存项。
此对象表示路由选择表项。
此对象表示路由选择策略数据库中的规则。
此对象表示多路广播地址。
此对象表示多路广播路由缓存项。
此对象表示 IP 上的隧道。
如果未提供命令,则将使用默认命令,通常为 list。
使用命令 ip link set device_namecommand 更改设备状态。 例如,要取消激活设备 eth0,请输入 ip link seteth0 down。 要重激活它,可使用 ip link seteth0 up。
激活设备后,可对设备进行配置。 要设置 IP 地址,可使用 ip addr add。 例如,要将接口 eth0 的地址设置为带标准广播(选项 ip_address + dev device_namebrd)的 192.168.12.154/30,则输入 ip addradd 192.168.12.154/30 brd + dev eth0。
要拥有活动连接,还必须配置默认网关。 要设置系统的网关,请输入 ip route getgateway_ip_address。 要将一个 IP 地址转换为另一个 IP 地址,请使用 nat: ip route add nat ip_address via other_ip_address。
要显示所有设备,可使用 ip link ls。 要只显示正在运行的接口,可使用 ip link ls up。 要打印设备的接口统计信息,可输入 ip -s link lsdevice_name。 要查看设备的地址,请输入 ip addr。 在 ip addr 的输出中,还可找到有关设备 MAC 地址的信息。 要显示所有路由,可使用 ip route show。
有关使用 ip 的更多信息,请输入 iphelp 或查看 ip(8) 手册页。 help 选项还可用于所有 ip 对象。例如,如果希望阅读 ipaddr 的帮助,请输入 ipaddr help。 可在 /usr/share/doc/packages/iproute2/ip-cref.pdf 中找到 ip 手册。
ping 命令是用于测试 TCP/IP 连接是否有效的标准工具。 它使用 ICMP 协议来将小数据包和 ECHO_REQUEST 数据报文发送到目标主机,并请求即时答复。 如果发送有效,ping 将据此显示一条消息,指明网络链接基本有效。
ping 不仅能测试两台计算机之间的连接:它还能提供关于连接质量的基本信息。在例 30.10 “命令 ping 的输出”中,可查看 ping 输出示例。 倒数第二行包含有关已发送的包数、丢失的包和 ping 运行的总时间量的信息。
您可以使用主机名或 IP 地址(例如 pingexample.com 或 ping130.57.5.75)作为目标。 程序会一直发送包,直到您按 Ctrl+C。
如果只需要检查连接功能,则可使用 -c 选项来限制包数。 例如,要将 ping 限制为三个包,请输入 ping-c 3 192.168.0。
例 30.10. 命令 ping 的输出
ping -c 3 example.com PING example.com (130.57.5.75) 56(84) bytes of data. 64 bytes from example.com (130.57.5.75): icmp_seq=1 ttl=49 time=188 ms 64 bytes from example.com (130.57.5.75): icmp_seq=2 ttl=49 time=184 ms 64 bytes from example.com (130.57.5.75): icmp_seq=3 ttl=49 time=183 ms --- example.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2007ms rtt min/avg/max/mdev = 183.417/185.447/188.259/2.052 ms
两个包之间的默认时间间隔为一秒。 ping 提供了选项 -i 来更改时间间隔。 例如,要将 ping 时间间隔延长为十秒,则输入 ping-i 10 192.168.0。
在带有多个网络设备的系统中,有时通过特定接口地址发送 ping 将会非常有用。 要执行此操作,可将 -I 选项结合选定设备名称一起使用,例如 ping-I wlan1 192.168.0。
有关使用 ping 的更多选项和信息,请输入 ping-h 或查看 ping (8) 手册页。
ifconfig 是传统的网络配置工具。 与 ip 相比,您只能将 ifconfig 用于接口配置。 如果希望配置路由选择,可使用 route。
![]() | ifconfig 和 ip |
|---|---|
程序 ifconfig 已过时。 请使用 ip。 | |
毫无疑问,ifconfig 可显示当前活动接口的状态。 在例 30.11 “命令 ifconfig 的输出”中可看见 ifconfig 具有非常整齐和详细的输出。 输出的第一行中还包含关于设备 MAC 地址的信息和 HWaddr 的值。
例 30.11. 命令 ifconfig 的输出
eth0 Link encap:Ethernet HWaddr 00:08:74:98:ED:51
inet6 addr: fe80::208:74ff:fe98:ed51/64 Scope:Link
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:634735 errors:0 dropped:0 overruns:4 frame:0
TX packets:154779 errors:0 dropped:0 overruns:0 carrier:1
collisions:0 txqueuelen:1000
RX bytes:162531992 (155.0 Mb) TX bytes:49575995 (47.2 Mb)
Interrupt:11 Base address:0xec80
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:8559 errors:0 dropped:0 overruns:0 frame:0
TX packets:8559 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:533234 (520.7 Kb) TX bytes:533234 (520.7 Kb)
wlan1 Link encap:Ethernet HWaddr 00:0E:2E:52:3B:1D
inet addr:192.168.2.4 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr: fe80::20e:2eff:fe52:3b1d/64 Scope:Link
UP BROADCAST NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1
RX packets:50828 errors:0 dropped:0 overruns:0 frame:0
TX packets:43770 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:45978185 (43.8 Mb) TX bytes:7526693 (7.1 Mb)有关使用 ifconfig 的更多选项和信息,请输入 ifconfig-h 或参见 ifconfig (8) 手册页。
route 是用于操作 IP 路由选择表的程序。 可使用它来查看路由选择配置和添加或删除路由。
![]() | route 和 ip |
|---|---|
程序 route 已过时。 请使用 ip。 | |
如果需要有关路由选择配置的快速而又易懂的信息来确定路由选择问题,则 route 将非常有用。 要查看当前路由配置,请输入 route-n 作为 root。
例 30.12. 命令 -n 的输出
route -n Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 10.20.0.0 * 255.255.248.0 U 0 0 0 eth0 link-local * 255.255.0.0 U 0 0 0 eth0 loopback * 255.0.0.0 U 0 0 0 lo default styx.exam.com 0.0.0.0 UG 0 0 0 eth0
有关使用 route 的更多选项和信息,请输入 route-h 或参见 route (8) 手册页。
除了上面介绍的配置文件之外,还有多个脚本在引导计算机时装载网络程序。 只要系统切换到某个多用户运行级别,就将启动这些脚本。 中介绍了其中的一些脚本。表 30.9 “网络程序的一些启动脚本”
表 30.9. 网络程序的一些启动脚本
此脚本处理网络接口的配置。 硬件必须已被 /etc/init.d/coldplug(通过 hotplug)初始化。 如果未启动 network 服务,当通过热插拔插入网络接口时,不实施任何网络接口。 | |
启动 xinetd。xinetd 可用于在系统上提供服务器服务。 例如,它可以在初始化 FTP 连接时启动 vsftpd。 | |
启动 RPC 服务器所需的端口映射器,例如 NFS 服务器。 | |
启动 NFS 服务器。 | |
控制 postfix 进程。 | |
启动 NIS 服务器。 | |
启动 NIS 客户机。 |