应该始终将手动配置网络软件作为最后的选择。 建议使用 YaST。 但是,对网络配置背景信息的了解将对您使用 YaST 有所帮助。
当内核检测到某个网卡并创建相应网络接口时,会根据设备发现的顺序或装载内核模块的顺序为设备指派一个名称。只有在控制程度极为简单或极为严格的硬件环境中,才能预测默认内核设备名称。允许在运行时添加或删除硬件的系统或者支持自动配置设备的系统不能期望在各个重引导之间由内核指派稳定的网络设备名称。
但是,所有系统配置工具均依赖持久性接口名称。该问题通过 udev 解决。udev 永久网络生成器 (/lib/udev/rules.d/75-persistent-net-generator.rules) 会生成匹配硬件的规则(默认情况下使用其硬件地址),并为该硬件分配永久唯一接口。网络接口的 udev 数据库储存在文件 /etc/udev/rules.d/70-persistent-net.rules 中。文件中的每一行描述一个网络接口并指定其永久名称。系统管理员可通过编辑 NAME="" 项来更改指派的名称。也可以使用 YaST 修改永久规则。
表 20.5 “手动网络配置脚本”总结了网络配置中涉及的最重要脚本。
表 20.5. 手动网络配置脚本
|
命令 |
功能 |
|---|---|
|
ifup、ifdown、ifstatus |
|
|
rcnetwork |
|
有关 udev 和永久设备名称的更多信息,请参见第 13 章 使用 udev 进行动态内核设备管理。
本节对网络配置文件进行了概述并解释了它们的作用和所使用的格式。
这些文件包含网络接口的配置。它们包含启动方式和 IP 地址等信息。 可能的参数在 ifup 的手册页中有所介绍。 此外,如果应将常规设置只用于一个接口,则文件 dhcp、wireless 和 config 中的大多数变量可用于 ifcfg-* 文件。
有关 ifcfg.template 的信息,请参见第 20.6.1.2 节 “/etc/sysconfig/network/config、/etc/sysconfig/network/dhcp 和 /etc/sysconfig/network/wireless”。
文件 config 包含 ifup、ifdown 和 ifstatus 行为的常规设置。dhcp 包含用于无线 LAN 卡的 DHCP 和 wireless 设置。所有三个配置文件中的变量均已注释掉。/etc/sysconfig/network/config 中的一些变量也可用于 ifcfg-* 文件,在这些文件中它们具有更高优先级。/etc/sysconfig/network/ifcfg.template 文件列出可以按接口指定的变量。但是,/etc/sysconfig/network/config 中的多数变量是全局变量,不能在 ifcfg-files 中覆盖。例如,NETWORKMANAGER 或 NETCONFIG_* 变量是全局变量。
在这里确定 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 开始。注释以 # 符号开头。例 20.5 “/etc/resolv.conf”显示 /etc/resolv.conf 的内容。
但是,/etc/resolv.conf 不应手动编辑。而是由 netconfig 脚本生成。要不使用 YaST 而定义静态 DNS 配置,请手动编辑 /etc/sysconfig/network/config 文件中的相应变量:NETCONFIG_DNS_STATIC_SEARCHLIST(用于主机名查询的 DNS 域名列表)、NETCONFIG_DNS_STATIC_SERVERS(用于主机名查询的名称服务器 IP 地址列表)和 NETCONFIG_DNS_FORWARDER(定义必须要配置的 DNS 转发器的名称)。要使用 netconfig 禁用 DNS 配置,请设置 NETCONFIG_DNS_POLICY=''。有关 netconfig 的更多信息,请参见 man 8 netconfig。
例 20.5. /etc/resolv.conf
# Our domain search example.com # # We use dns.example.com (192.168.1.116) as nameserver nameserver 192.168.1.116
netconfig 是一个用于管理附加网络配置设置的模块化工具。它合并了静态定义的设置和自动配置机制根据预定义策略以 dhcp 或 ppp 形式提供的设置。通过调用负责修改配置文件和重启动服务或相似操作的 netconfig 模块将所需更改应用于系统。
netconfig 识别三种主要操作。netconfig modify 和 netconfig remove 由诸如 dhcp 或 ppp 的守护程序在 netconfig 中提供或删除设置。仅 netconfig update 命令可用于用户:
netconfig modify 命令修改特定于当前接口和服务的动态设置并更新网络配置。Netconfig 从标准输入或使用 --lease-file 选项指定的文件中读取设置,并将其储存在内部,直到系统重引导(或者执行下一个修改或删除操作)。已存在的相同接口和服务组合设置将会重写。该接口由 filename-i 参数指定。该服务由 interface_name-s 参数指定。
service_name
netconfig remove 命令为指定接口和服务组合删除由修改操作提供的动态设置并更新网络配置。该接口由 -i 参数指定。该服务由 interface_name-s 参数指定。
service_name
netconfig update 命令使用当前设置更新网络配置。当策略或静态配置更改时,这非常有用。如果要仅更新指定服务(dns、nis 或 ntp),请使用 -m 参数。
module_type
netconfig 策略和静态配置设置可手动定义或者使用 YaST 在 /etc/sysconfig/network/config 文件中定义。由自动配置工具作为 hdcp 或 ppp 提供的动态配置设置通过 netconfig modify 和 netconfig remove 操作由这些工具直接传递。NetworkManager 也使用 netconfig modify 和 netconfig remove 操作。启用 NetworkManager 时,netconfig(在策略模式 auto 中)仅使用 NetworkManager 设置,忽略任何其他接口使用传统 ifup 方法配置的设置。如果 NetworkManager 不提供任何设置,也将静态设置用作备份。不支持混合使用 NetworkManager 和传统 ifup 方法。
有关 netconfig 的更多信息,请参见 man 8 netconfig。
在此文件中,如 例 20.6 “/etc/hosts” 中所示,将为主机名指派 IP 地址。 如果未实施名称服务器,则将与其建立 IP 连接的所有主机必须列在此处。 在此文件中为每个主机输入一行,包含 IP 地址、完全限定的主机名和主机名。 IP 地址必须在每行的开头,各项用空格和制表符隔开。 注释总是以 # 符号开头。
例 20.6. /etc/hosts
127.0.0.1 localhost 192.168.2.100 jupiter.example.com jupiter 192.168.2.101 venus.example.com venus
此文件控制名称解析,即通过解析程序库转换主机名和网络名称。 此文件只用于链接到 libc4 或 libc5 的程序。 对于当前的 glibc 程序,请参见 /etc/nsswitch.conf 中的设置。 参数必须始终单独在一行上。 注释以 # 符号开头。表 20.6 “/etc/host.conf 的参数” 显示了可用的参数。 例 20.8 “/etc/host.conf”中显示了 /etc/host.conf 的示例。
表 20.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 的示例。例 20.9 “/etc/nsswitch.conf” 注释以 # 符号开头。在本例中,hosts 数据库下的项意味着通过 DNS 将请求发送到 /etc/hosts (files)。
例 20.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
表 20.7 “通过 /etc/nsswitch.conf 可用的数据库”中列出了 NSS 上可用的“数据库”。此外,近期将推出 automount、bootparams、netmasks 和 publickey。表 20.8 “NSS“数据库”的配置选项”中列出了 NSS 数据库的配置选项。
表 20.7. 通过 /etc/nsswitch.conf 可用的数据库
|
|
|
|
|
以太网地址。 |
|
|
对于 |
|
|
|
|
|
网络中用于控制访问权限的主机和用户列表,请参见 |
|
|
|
|
|
|
|
|
网络协议,由 |
|
|
|
|
|
|
|
|
用户阴影密码,由 |
表 20.8. NSS“数据库”的配置选项
|
|
直接访问文件,例如 |
|
|
通过数据库访问 |
|
|
NIS,另请参见 第 3 章 Using 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 是用来显示和配置路由选择、网络设备、策略路由选择以及隧道的工具。
ip 是非常复杂的工具。它的常用语法为 ip。 可使用以下对象:
optionsobjectcommand
此对象表示网络设备。
此对象表示设备的 IP 地址。
此对象表示 ARP 或 NDISC 缓存项。
此对象表示路由选择表项。
此对象表示路由选择策略数据库中的规则。
此对象表示多路广播地址。
此对象表示多路广播路由缓存项。
此对象表示 IP 上的隧道。
如果未提供命令,则将使用默认命令(通常为 list)。
使用命令 ip link set device_namecommand 更改设备状态。 例如,要取消激活设备 eth0,请输入 ip link set eth0 down。要重激活它,可使用 ip link set eth0 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 addgateway_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 不仅能测试两台计算机之间的连接:它还能提供关于连接质量的基本信息。在例 20.10 “命令 ping 的输出”中,可查看 ping 输出示例。 倒数第二行包含有关已发送的包数、丢失的包和 ping 运行的总时间量的信息。
您可以使用主机名或 IP 地址(例如 pingexample.com 或 ping192.168.3.100)作为目标。程序会一直发送包,直到您按 Ctrl+C。
如果只需要检查连接功能,则可使用 -c 选项来限制包数。 例如,要将 ping 限制为三个包,请输入 ping-c 3 example.com。
例 20.10. 命令 ping 的输出
ping -c 3 example.com PING example.com (192.168.3.100) 56(84) bytes of data. 64 bytes from example.com (192.168.3.100): icmp_seq=1 ttl=49 time=188 ms 64 bytes from example.com (192.168.3.100): icmp_seq=2 ttl=49 time=184 ms 64 bytes from example.com (192.168.3.100): 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 example.com。
在带有多个网络设备的系统中,有时通过特定接口地址发送 ping 将会非常有用。 要执行此操作,可将 -I 选项结合选定设备名称一起使用,例如 ping-I wlan1 example.com。
有关使用 ping 的更多选项和信息,请输入 ping-h 或查看 ping (8) 手册页。
ifconfig 是传统的网络配置工具。 与 ip 相比,您只能将 ifconfig 用于接口配置。 如果希望配置路由选择,可使用 route。
![]() | ifconfig 和 ip |
|---|---|
程序 ifconfig 已过时。 请使用 ip。 | |
毫无疑问,ifconfig 可显示当前活动接口的状态。 在例 20.11 “命令 ifconfig 的输出”中可看见 ifconfig 具有非常整齐和详细的输出。 输出的第一行中还包含关于设备 MAC 地址的信息(HWaddr 的值)。
例 20.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。
例 20.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) 手册页。
除了上面介绍的配置文件之外,还有多个脚本在引导计算机时装载网络程序。 只要系统切换到某个多用户运行级别,就将启动这些脚本。 中介绍了其中的一些脚本。表 20.9 “网络程序的一些启动脚本”。
表 20.9. 网络程序的一些启动脚本
|
此脚本处理网络接口的配置。如果 network 服务未启动,则不实施任何网络接口。 | |
|
启动 xinetd。xinetd 可用于使服务器服务在系统上可用。例如,它可以在初始化 FTP 连接时启动 vsftpd。 | |
|
启动用于将 RPC 程序号转换为通用地址的 rpcbind 实用程序。它是 RPC 服务所必需的,如 NFS 服务器。 | |
|
启动 NFS 服务器。 | |
|
控制 postfix 进程。 | |
|
启动 NIS 服务器。 | |
|
启动 NIS 客户机。 |