Linux 提供集成进各类网络结构中所需的联网工具和功能。可以通过 YaST 配置使用网络卡进行的网络访问。也可以手动进行配置。在本章中,仅描述基础机制和相关网络配置文件。
Linux 和其他 Unix 操作系统均使用 TCP/IP 协议。该协议不是单个网络协议,而是提供多种服务的一系列网络协议。TCP/IP 系列协议中的若干协议中所列的协议专用于在两台计算机之间通过 TCP/IP 交换数据。由 TCP/IP 连接而成的网络构成了全球网络,也称作“因特网”。
RFC 指注释请求 (Request for Comments)。RFC 由一些文档组成,用来描述各种因特网协议和操作系统及其应用程序的实施过程。RFC 文档用来描述如何设置因特网协议。有关 RFC 的更多信息,请参见 http://www.ietf.org/rfc.html。
传送控制协议:面向连接的安全协议。要传输的数据首先由应用程序作为数据流发送,然后由操作系统转换为相应的格式。数据到达目标主机上的相应应用程序时采用最初发送时的原始数据流格式。TCP 确定在传输过程中是否有任何数据丢失或发生混乱。只要涉及到数据序列就会实施 TCP。
用户数据报协议:无连接、不安全的协议。要传送的数据以应用程序生成的数据包的形式发送。不能保证数据以正确的顺序到达接收方,也可能丢失数据。UDP 适用于面向记录的应用程序。它的等待时间比 TCP 稍短。
因特网控制消息协议:这实际上不是一个面向最终用户的协议,而是一个特殊的控制协议,用来发出错误报告,还可以控制参与 TCP/IP 数据传送的计算机的行为。此外,它还提供一种特殊的回应方式,可以通过 ping 程序查看该方式。
因特网组管理协议:此协议控制实施 IP 多路广播时的计算机行为。
如图 16.1 “TCP/IP 的简化层次模型” 中所示,数据交换在不同的层中进行。实际的网络层是通过 IP(因特网协议)的不安全数据传送。IP 的上面是 TCP(传送控制协议),它能够确保一定程度的数据传送安全性。IP 层由底层硬件相关协议(例如以太网)提供支持。
该图为每一层都提供了一到两个示例。层次按照抽象程度排序。最底层非常接近硬件。最上层则几乎就是硬件的完全抽象化。每一层都有自己的特殊功能。每一层的特殊功能多隐含在其描述中。数据链路层和物理层表示所用的物理网络(如以太网)。
几乎所有硬件协议都在面向数据包的基础上发挥作用。要传送的数据收集在包中(一次无法发送所有数据)。TCP/IP 包最大约为 64 KB。包通常要小得多,因为可能受到网络硬件的限制。以太网上的数据包最大约为 1500 个字节。通过以太网发送数据时,TCP/IP 包的大小不能超过这个限额。如果传送更多数据,操作系统需要发送更多的数据包。
为使层实现其指定功能,必须在数据包中保存与每层相关的附加信息。这些信息保存在数据包的报头中。每一层都在每个新包的开头附加一小块称为协议报头的数据。图 16.2 “TCP/IP 以太网包”中演示了一个通过以太网电缆传送的 TCP/IP 数据包示例。校验和位于包的末尾而不是开头,这样更便于网络硬件处理。
当应用程序通过网络发送数据时,数据会穿越每个层次,但所有传递都在 Linux 内核中实施(只有物理层除外)。每一层都负责准备好数据,以便传递到下一层。最底层最后负责发送数据。接收数据时则逆向执行整个过程。正像剥洋葱皮那样,在每一层中都要从传输数据中删除协议报头。最后,传输层负责使数据可供目标上的应用程序使用。通过这种方式,每一层只与其上一层或下一层通讯。对于应用程序来说,无论数据是通过 100 Mbit/s(兆位/秒)的 FDDI 网络传送还是通过 56 Kbit/s(千位/秒)的调制解调器线路传送,都毫不相关。同样,只要数据包的格式正确,传送哪种数据对数据线也无关紧要。
各节的论述仅限于 IPv4 网络。有关 IPv6 协议(IPv4 的后续协议)的信息,请参见第 16.2 节 “IPv6 — 下一代的因特网”。
因特网上的每台计算机都有一个唯一的 32 位地址。这些 32 位(或 4 字节)地址通常按例 16.1 “编写 IP 地址”的第二行所示的格式书写。
IP Address (binary): 11000000 10101000 00000000 00010100 IP Address (decimal): 192. 168. 0. 20
在十进制格式中,四字节以十进制数书写,其间以句点分隔。IP 地址被指派给主机或网络接口。它在全球只能使用一次。这条规则也有例外,但这些例外与下文无关。
IP 地址中的点表示分级系统。直到 20 世纪 90 年代,IP 地址仍然有严格的分类。但是,此系统经证实太过死板,已经废止。现已改为使用无类别路由 - (CIDR,无类别域间路由)。
网络掩码用于定义子网的地址范围。如果两台主机位于同一子网中,它们可直接相互访问。如果它们位于不同子网中,则需要用于处理此子网的所有通讯的网关地址才能相互访问。要检查两个 IP 地址是否位于同一个子网中,只需分别将两个地址与网络掩码进行“AND”操作。如果结果相同,则两个 IP 地址在同一个本地网络中。如果结果不同,则仅能通过网关连接远程 IP 地址和远程接口。
要了解网络掩码如何工作,可查看例 16.2 “将 IP 地址链接到网络掩码”。网络掩码有 32 位,它确定 IP 地址有多少属于网络。对于所有为 1 的位,将它们在 IP 地址中的相应位标记为属于网络。对于所有值为 0 的位,标记其属于子网内。这意味着值为 1 的位越多,子网就越小。因为网络掩码总是由多个连续的 1 位组成,所以也可通过计算网络掩码中的位数来确定。在例 16.2 “将 IP 地址链接到网络掩码”中,第一个 24 位的网络也可写作 192.168.0.0/24。
IP address (192.168.0.20): 11000000 10101000 00000000 00010100 Netmask (255.255.255.0): 11111111 11111111 11111111 00000000 --------------------------------------------------------------- Result of the link: 11000000 10101000 00000000 00000000 In the decimal system: 192. 168. 0. 0 IP address (213.95.15.200): 11010101 10111111 00001111 11001000 Netmask (255.255.255.0): 11111111 11111111 11111111 00000000 --------------------------------------------------------------- Result of the link: 11010101 10111111 00001111 00000000 In the decimal system: 213. 95. 15. 0
再举个例子:通过同一以太网电缆相连的所有计算机通常都位于同一子网中,可直接访问。即使用交换机或网桥物理分隔该子网,这些主机仍然可以直接访问。
仅在网关是为目标网络配的时,才能访问本地子网外部的 IP 地址。通常情况下,只有一个网关处理所有外部流量。然而,也可能为不同的子网配置多个网关。
如果配置了网关,所有的外部 IP 包将发送到相应的网关。此网关随后会尝试以相同的方式转发该包(从主机到主机)直到到达目标主机或超过该包的 TTL(存活时间)。
这是网络掩码和该网络中的任意地址,如例 16.2 “将 IP 地址链接到网络掩码” 中的 Result(结果)所示。不能将此地址指派给任何主机。
这可以解释为:“访问此子网中的所有主机。”。要生成此地址,需要将网络掩码反转为二进制格式,并使用逻辑 OR 链接到基本网络地址。因此,以上示例会生成 192.168.0.255。该地址无法指派给任何主机。
地址 127.0.0.1 指派给每台主机的“回路设备”。可以使用此地址以及通过 IPv4 定义的完整 127.0.0.0/8 回写网络中的所有地址为您自己的计算机设置一个连接。对于 IPv6,仅存在一个回写地址 (::1)。
由于 IP 地址必须在全球范围内唯一,您不能随机选择地址。共有三个地址域可用于建立基于 IP 的专用网络。这些地址无法与因特网上的其他地址建立任何连接,因为它们不能通过因特网传送。这些地址域在 RFC 1597 中指定,并且列在表 16.1 “专用 IP 地址域” 中。
|
网络/网络掩码 |
域 |
|---|---|
|
|
|
|
|
|
|
|
|
由于 WWW(万维网)的出现,过去十五年中越来越多的计算机开始通过 TCP/IP 通讯,这使因特网有了突飞猛进的发展。自从 1990 年在 CERN (http://public.web.cern.ch) 任职的 Tim Berners-Lee 开创了 WWW,因特网主机的数量已从几千台猛增至上亿台。
如上所述,IPv4 地址只有 32 位。而且还有不少 IP 地址丢失,它们因网络组织结构的原因而无法使用。子网中可用的地址数量是位数的平方减 2。举例来说,某个子网可以有 2 个、6 个或 14 个可用地址。如果要将 128 台主机连接到因特网,您的子网要提供 256 个 IP 地址,其中只有 254 个可用,因为有两个 IP 地址需要供该子网本身的结构使用:广播和基础网络地址。
在当前的 IPv4 协议下,DHCP 或 NAT(网络地址转换)是用来避免出现地址短缺的典型机制。这些方法与用来分隔专用地址空间和公用地址空间的规定相结合,肯定能够缓解短缺状况; 它们的问题在于不仅配置烦琐,而且也加重了维护的负担。要在 IPv4 网络中设置主机,您需要若干地址项,如主机本身的 IP 地址、子网掩码、网关地址,可能还要提供名称服务器地址。所有这些项都是必需的,而且无法从其他任何地方得到这些项。
利用 IPv6,地址的短缺和复杂的配置都将成为过去。以下各节进一步描述了 IPv6 带来的改进和优点,以及如何从旧协议过渡到新协议。
新协议中最为重要同时也最为显著的改进在于对可用地址空间的极大扩容。IPv6 地址由 128 位值而不是传统的 32 位值组成,它提供的 IP 地址数目多达 10 的 15 次方的若干倍。
不过,IPv6 与以前的不同不仅限于长度,其内部结构也发生了变化,这种结构可以包含更多的有关系统和系统所属网络的具体信息。有关详细信息,请参见 第 16.2.2 节 “地址类型和结构”。
下面列出了新协议的其他优点:
IPv6 使网络可以支持“即插即用”,这意味着无需任何手动配置即可将新安装的系统集成到(本地)网络中。新主机可以使用其自动配置机制,依赖名为邻居发现 (ND) 的协议从邻近的路由器提供的信息中得到自己的地址。这种方法不要求管理员参与,并且无需维护用于分配地址的中央服务器,这是 IPv4 无法媲美的(IPv4 中需要使用 DHCP 服务器来自动分配地址)。
不过,如果路由器已连接到交换机,则路由器应发送带标志的定期通告,告知网络中的主机彼此应如何交互。有关更多信息,请参见 RFC 2462 和 radvd.conf(5) 手册页以及 RFC 3315。
利用 IPv6,为一个网络接口同时指派多个地址成为可能。这使得用户能方便地访问多个网络,有时可媲美手机公司提供的国际漫游服务:您携带手机出境时,进入相应区域后手机会自动登录国外服务,因此无论您身在何处,其他人都可以用同一个号码联系到您,而且您也可以像在国内一样拨打电话。
在 IPv4 中,网络安全是一项附加功能。IPv6 则将 IPsec 作为其核心功能之一,允许系统通过安全隧道通讯,避免被因特网上的外来者窃听。
实际上,要想将整个因特网一下子从 IPv4 转换为 IPv6 是不可能的。因此,这两个协议不仅要能在因特网上共存,还应能够共存于一个系统中,这一点至关重要。要实现这一点,一方面两种地址应兼容(IPv4 地址可以轻松转换为 IPv6 地址),另一方面还要使用多个隧道。请参见第 16.2.3 节 “IPv4 与 IPv6 并存”。此外,系统可以依赖双栈 IP 技术同时支持两种协议,这意味着系统中有两种完全分开的网络堆栈,从而避免这两种版本的协议相互影响。
在 IPv4 中,有些服务(如 SMB)需要向本地网络中的所有主机广播其数据包。IPv6 则采用一种更为精确的方式,通过多路广播支持服务器对主机寻址,即对作为组中一部分的若干主机寻址(这不同于通过广播对所有主机寻址,也不同于通过单路广播对每台主机逐个寻址)。将哪些主机作为一组来寻址可能要取决于具体的应用程序。可使用一些预定义的组来寻址,例如对所有名称服务器寻址(所有名称服务器多路广播组),或对所有路由器寻址(所有路由器多路广播组)。
如上所述,目前的 IP 协议在两个重要方面有缺陷:IP 地址日益短缺,配置网络、维护路由选择表的任务变得越来越复杂和艰难。IPv6 通过将地址空间扩展到 128 位解决了第一个问题。通过引入分级地址结构,结合先进的网络地址分配技术和多宿主功能(将多个地址指派给同一个设备,从而支持对多个网络的访问),第二个问题也迎刃而解。
使用 IPv6 时,了解三种类型的地址十分有用:
这类地址只与一个网络接口关联。采用这类地址的包只传递到一个目标。因此,使用单路广播地址可以将包传送到本地网络或因特网上的单个主机。
这类地址与一组网络接口相关。采用这类地址的包将传递到属于该组的所有目标。多路广播地址主要供特定网络服务使用,用于以有序的方式与特定的主机组通讯。
这类地址与一组接口相关。采用这类地址的包将根据基础路由协议的原则,传递给该组中与发送方最为接近的成员。任意广播地址便于主机在特定网络区域内找到提供特定服务的服务器。同一类型的所有服务器都具有相同的任意广播地址。在请求服务时,主机会收到路由协议决定的最接近它的服务器的回复。如果出于某种原因此服务器无法回复,协议会自动选择距离稍远一些的服务器,依此类推。
IPv6 地址分为八组,每组四位数字,代表十六位,采用十六进制表示法。它们之间用冒号 (:) 分隔。可以删除某组中的前置零字节,但不能删除组中或组末的零。另一个约定是:连续的零字节若超过四个,则可以省略为双冒号形式。不过,每个地址只允许有一个这样的 ::。中演示了这种简写表示法,其中的三行全部表示同一地址。例 16.3 “示例 IPv6 地址”
fe80 : 0000 : 0000 : 0000 : 0000 : 10 : 1000 : 1a4 fe80 : 0 : 0 : 0 : 0 : 10 : 1000 : 1a4 fe80 : : 10 : 1000 : 1a4
IPv6 地址的每个部分都有明确的功能。前面的字节构成前缀,用于指定地址类型。中间部分是地址的网络部分,但可以不用。地址的结尾构成主机部分。在 IPv6 中,网络掩码是通过在地址末尾的斜杠后指明前缀的长度来定义的。例 16.4 “指定前缀长度的 IPv6 地址” 中的地址包含上述信息,即:前 64 位构成地址的网络部分,后 64 位构成地址的主机部分。换言之,64 表示网络掩码由左起的 64 个 1 位值构成。与 IPv4 一样,IP 地址使用 AND 结合网络掩码值,以确定主机位于同一子网中还是其他网络中。
fe80::10:1000:1a4/64
IPv6 可以识别几种预定义的前缀类型。各种 IPv6 前缀中列出了其中的一部分。
00
IPv4 地址和 IPv6 上的 IPv4 兼容地址。这些用于与 IPv4 保持兼容。要使用这些地址,仍然需要依赖路由器将 IPv6 包转换为 IPv4 包。有若干特殊地址(如用于回路设备的地址)也采用此前缀。
2 或 3 作为第一个数字
可聚合全局单路广播地址。类似 IPv4 的情况,可以指定某个接口作为特定子网的一部分。目前,有以下地址空间:2001::/16(生产质量地址空间)和 2002::/16(6to4 地址空间)。
fe80::/10
链路本地地址。不应路由带有这种前缀的地址,而只能从同一子网中访问。
fec0::/10
站点本地地址。可以路由这种地址,但只局限在它们所属的组织的网络之内。实际上,这些是相当于当前的专用网络地址空间(如 10.x.x.x)的 IPv6 地址。
ff
这些是多路广播地址。
单路广播地址由三个基本部分组成:
第一部分(也包含上述前缀之一)用于通过公共因特网路由数据包。其中包含提供因特网访问的公司或机构的相关信息。
第二部分包含要将包传递到的子网的路由信息。
第三部分标识要将包传递到的接口。其中允许使用 MAC。由于 MAC 是硬件厂商编程到设备中的全球唯一的固定标识符,配置过程得到了极大简化。事实上,前 64 个地址位共同构成 EUI-64 令牌,后 48 位从 MAC 中提取,其余的 24 位包含有关令牌类型的特殊信息。这样还可以将 EUI-64 令牌指派给没有 MAC 的接口,如基于 PPP 的接口。
在这个基础结构之上,IPv6 还区分五种不同的单路广播地址:
:: (未指定) 在首次初始化接口时(即无法通过其它方法确定地址时),这类地址可用作主机的源地址。
::1(回路) 回路设备的地址。
IPv6 地址由 IPv4 地址和 96 个零位组成的前缀构成。这类兼容地址用于隧道通讯进程(请参见第 16.2.3 节 “IPv4 与 IPv6 并存”),以便 IPv4 和 IPv6 主机与在纯 IPv4 环境中操作的其他主机通讯。
这类地址以 IPv6 表示法指定纯 IPv4 地址。
有两类地址可供本地使用:
这类地址只能在本地子网中使用。不能具有此类源地址或目标地址的包路由到因特网或其他子网。这些地址包含特殊的前缀 (fe80::/10) 和网卡的接口 ID,中间部分为零字节。这类地址在自动配置过程中使用,用于与同一子网中的其他主机通讯。
可以将采用这类地址的包路由到其他子网,但不能路由到更广阔的因特网 — 不能跨越组织自身的网络。这类地址用于内部网,相当于 IPv4 定义的专用地址空间。其中包含特殊的前缀 (fec0::/10)、接口 ID,及指定子网 ID 的 16 位字段。其余部分也会填入零字节。
作为 IPv6 引进的全新功能,每个网络接口通常可以获得多个 IP 地址,这个功能的优点即在于:可以通过同一接口访问多个网络。其中一个网络可以用 MAC 和已知前缀进行全自动配置,这样当启用 IPv6 (使用链路本地地址)后,即可访问本地网络中的所有主机。由于其中使用了 MAC,所用的任何 IP 地址都是全球唯一的。地址中只有指定站点拓朴结构和公共拓朴结构的部分才是可变部分,这取决于主机当前运行所在的实际网络。
要使主机在不同网络间切换,主机至少需要两个地址。其中之一 - 本地地址,不仅包含接口 ID 而且包含该主机通常所属的本地网络的标识符(以及相应的前缀)。本地地址是静态地址,因此一般不变。所有要发送到移动主机的包仍可以传递到该主机,不管它是在本地网络还是其他任何网络中操作。这一点得益于 IPv6 引进的全新功能,如无状态自动配置和邻居发现。除本地地址之外,移动主机还获得一个或多个额外的地址,这些地址属于该主机漫游到的外地网络。这些地址称为转交地址。本地网络有一种功能,可以在主机漫游到外地时转发要发送给该主机的所有包。在 IPv6 环境中,这项任务由本地代理来完成,该代理可以接收要发送到本地地址的所有包,并通过隧道进行转发。另一方面,发送到转交地址的那些包可直接转发到移动主机,而不必进行任何特殊的迂回处理。
将与因特网相连的所有主机从 IPv4 迁移到 IPv6 是一个逐步的过程。这两种协议将在未来一定时间内并存。通过双栈技术来实施这两种协议,可以在同一系统上同时支持这两种协议。但这仍然没有解决支持 IPv6 的主机如何与 IPv4 主机通讯,以及应如何通过当前网络(主要基于 IPv4)传输 IPv6 包的问题。最好的解决方案就是提供隧道处理功能和兼容地址(请参见 第 16.2.2 节 “地址类型和结构”)。
IPv6 主机多少孤立于(全球)IPv4 网络,它可通过隧道通讯:IPv6 包封装为 IPv4 包,以便在 IPv4 网络中移动。这种在两个 IPv4 主机间的连接被称为隧道。要实现这种功能,包必须包含 IPv6 目标地址(或相应的前缀),以及隧道接收端远程主机的 IPv4 地址。根据主机管理员间的协议,可以手动配置基本的隧道。这也称作静态隧道。
但是,静态隧道的配置和维护往往过于烦琐,不能适应日常通讯需要。因此,IPv6 提供了三种不同的动态隧道方法:
IPv6 包被自动封装为 IPv4 包,并通过支持多路广播的 IPv4 网络发送。这种方法诱导 IPv6 将整个网络(因特网)视为一个巨大的局域网 (LAN)。这样即可自动确定 IPv4 隧道的接收端。不过,这种方法的可扩展性不够好,而且不易推行,因为 IP 多路广播在因特网上尚未普及。因此,它提供的解决方案仅适用于支持多路广播的小型公司网络或机构网络。RFC 2529 中对这种方法作出了规定。
利用这种方法,可以从 IPv6 地址自动生成 IPv4 地址,从而支持孤立的 IPv6 主机通过 IPv4 网络进行通讯。不过,用这种方法在孤立的 IPv6 主机和因特网之间通讯时存在一些问题。RFC 3056 中对这种方法进行了描述。
这种方法依赖特殊的服务器为 IPv6 主机提供专用隧道。RFC 3053 中对此进行了描述。
要配置 IPv6,通常无需在各个工作站上执行任何更改。默认情况下启用 IPv6。要在已安装系统上禁用或启用 IPv6,请使用 YaST 模块。在选项卡上,根据需要选中或取消选中 选项。如果要在下次重引导前暂时启用它,请以 root 身份输入 modprobe -i ipv6。装载 IPv6 模块后无法将其卸载。
由于 IPv6 使用自动配置,将给网卡指派链路-本地网络中的地址。一般不在工作站上管理路由选择表。工作站可以使用路由器广告协议查询网络路由器,了解应实施的前缀和网关。使用 radvd 程序可以设置 IPv6 路由器。此程序会通知工作站对 IPv6 地址使用哪个前缀和哪个路由器。或者,可以使用 zebra/quagga 自动配置两个地址和路由选择。
有关如何使用 /etc/sysconfig/network 文件设置各种隧道的信息,请参见 ifcfg-tunnel 的手册页 (man ifcfg-tunnel)。
上文的概述中并未全面论述 IPv6 这一主题。有关这种新协议的深入讨论,请参见以下联机文档和书目:
学习 IPv6 知识的起点。
启动您自己的 IPv6 网络所需的所有信息。
已启用 IPv6 的产品列表。
在此可找到 Linux IPv6-HOWTO 以及许多与该主题有关的链接。
有关 IPv6 的基础 RFC。
Silvia Hagen 所著的 IPv6 Essentials(ISBN 0-596-00125-8) 中描述了该主题的所有重要方面。
DNS 有助于将 IP 地址指派给一个或多个名称,并将名称指派给 IP 地址。在 Linux 中,这种转换通常由一种特殊的称为 bind 的软件来完成。负责这种转换的计算机称为名称服务器。这些名称构成了具有层次结构的系统,各个名称组成部分之间用句点分隔。不过,这个名称层次与上述 IP 地址层次无关。
考虑以 hostname.domain 格式书写的完整名称,如 jupiter.example.com。完整名称,即完全限定的域名 (FQDN),由主机名和域名 (example.com) 组成。后者还包含顶级域或 TLD (com)。
TLD 的指派由于历史原因已经变得十分混乱。传统的指派方法是美国所用的三字母域名,而世界其他地方采用的标准是双字母 ISO 国家/地区代码。此外,2000 年还引进了较长的 TLD,表示特定的活动领域(例如 .info、.name 和 .museum)。
在因特网发展的早期阶段( 1990 年之前),文件 /etc/hosts 被用来储存因特网上表示的所有计算机的名称。后来事实证明随着接入因特网的计算机与日俱增,这种方法很快就行不通了。为此人们开发了一个分散式数据库,以十分分散的方式储存主机名。这个数据库类似名称服务器,它并不储存与因特网上的所有主机相关的数据,但可以向其他名称服务器发送请求。
位于层次顶级的是 root 名称服务器。这些 root 名称服务器管理顶级域,并由网络信息中心 (NIC) 运行。每个 root 名称服务器都了解负责特定顶级域的名称服务器。有关顶级域 NIC 的信息,请参见 http://www.internic.net。
DNS 不仅可以解析主机名,还能够为整个域识别出负责接收电子邮件的主机,即邮件交换器 (MX)。
为解析 IP 地址,您的计算机必须了解至少一个名称服务器及其 IP 地址。使用 YaST 可轻松指定此类名称服务器。
whois 协议与 DNS 密切相关。使用此程序可以快速找出负责给定域的服务器。
.local 顶级域由解析程序视为 link-local 域。DNS 请求作为多路广播 DNS 请求(而不是常规 DNS 请求)发送。如果已在名称服务器配置中使用 .local 域,必须在 /etc/host.conf 中关闭此选项。有关更多信息,请参见 host.conf 手册页。
如果要在安装期间关闭 MDNS,请使用 nomdns=1 作为引导参数。
有关多路广播 DNS 的详细信息,请参见 http://www.multicastdns.org。
Linux 上有多个支持的联网类型。其中多数使用不同的设备名,配置文件分布在文件系统上的多个位置。关于手动网络配置方面的详细概述,请参见第 16.6 节 “手动配置网络连接”。
在 NetworkManager 默认处于活动状态的 SUSE Linux Enterprise Desktop 上,所有网卡都会加以配置。如果 NetworkManager 不处于活动状态,那么系统只会自动配置使用链路连通的第一个接口(已连接网络电缆)。可随时在已安装系统中配置额外的硬件。以下章节将介绍 SUSE Linux Enterprise Desktop 支持的所有网络连接类型的网络配置。
要在 YaST 中配置以太网卡或 Wi-Fi/蓝牙卡,请选择 › 。启动模块后,YaST 将显示对话框,其中包括四个选项卡:、、 和。
通过选项卡可设置常规联网选项,例如网路设置方法、IPv6 和常规 DHCP 选项。有关详细信息,请参见第 16.4.1.1 节 “配置全局联网选项”。
选项卡包含关于已安装网络接口和配置的信息。会列出已正确检测到的所有网卡及其名称。您可在此对话框中手动配置新卡、删除或更改其配置。如果要手动配置未自动检测到的卡,请参见第 16.4.1.3 节 “配置未检测到的网卡”。如果要更改已配置卡的配置,请参见第 16.4.1.2 节 “更改网卡的配置”。
通过 选项卡可设置计算机的主机名和要使用的服务器名称。有关详细信息,请参见第 16.4.1.4 节 “配置主机名和 DNS”。
选项卡用于配置路由选择。有关更多信息,请参见第 16.4.1.5 节 “配置路由选择”。
通过 YaST 模块的选项卡,可设置重要的全局联网选项,如使用 NetworkManager、IPv6 和 DHCP 客户端选项。这些设置适用于所有网络接口。
在中,选择管理网络连接的方法。如果希望 NetworkManager 桌面小程序管理所有接口的连接,请选择 。NetworkManager 非常适用于在多个有线和无线网络之间切换。如果您运行的不是桌面环境,或者您的计算机是 Xen 服务器、虚拟系统或者会在网络中提供 DHCP 或 DNS 等网络服务,请使用 方法。如果使用 NetworkManager,则应使用 nm-applet 配置网络选项,并且模块的、和选项卡会被禁用。有关 NetworkManager 的更多信息,请参见第 28 章 “使用 NetworkManager”。
在 中,选择是否使用 IPv6 协议。可将 IPv6 与 IPv4 一起使用。默认情况下,会启用 IPv6。但是在不使用 IPv6 协议的网络中,如果禁用 IPv6 协议,响应时间会更快。要禁用 IPv6,请停用。如果 IPv6 已停用,内核将不再自动装载 IPv6 模块。重启动后会应用此设置。
在 中,配置 DHCP 客户端的选项。在单个网络上,每个 DHCP 客户端的 必须不同。如果保留为空,会默认为网络接口的硬件地址。但是,如果正在运行若干使用相同网络接口(即相同硬件地址)的虚拟机,则在此处指定唯一的自由格式标识符。
指定当 DHCP 客户端将消息发送到 DHCP 服务器时,主机名选项字段使用的字符串。某些 DHCP 服务器会根据此主机名(动态 DNS)来更新名称服务器区域(正向和反向记录)。此外,有些 DHCP 服务器要求选项字段包含来自客户端的 DHCP 消息中的特定字符串。如果保留 AUTO,将发送当前的主机名(即 /etc/HOSTNAME 中定义的主机名)。将选项字段保留空白则不会发送任何主机名。
如果您不希望根据 DHCP 中的信息更改默认路由,请停用。
要更改网卡的配置,请在 YaST › 中已检测到的网卡列表中选择一个网卡,然后单击。将显示对话框,可在其中使用、和选项卡调整网卡配置。
您可在对话框的选项卡中设置网卡的 IP 地址或 IP 地址的确定方法。同时支持 IPv4 和 IPv6 地址。网卡可设置为(对于绑定设备很有用)、(IPv4 或 IPv6)或通过 和/或 指派的 。
如果使用,则选择是使用(用于 DHCPv4)、(用于 DHCPv6)还是 。
如果可能,安装期间的首个带链接的可用网卡将会通过 DHCP 自动配置为使用自动 IP 地址。在 NetworkManager 默认处于活动状态的 SUSE Linux Enterprise Desktop 上,所有网卡都会加以配置。
如果使用的是 DSL 线路,但 ISP(因特网服务提供商)没有指派静态 IP,此时还应使用 DHCP。如果决定使用 DHCP,请打开 YaST 网卡配置模块的对话框,在选项卡的 中配置细节。如果您使用虚拟主机设置,其中不同的主机都通过同一接口通信,则需要用 来区分。
DHCP 比较适合客户端配置,但不太适合服务器配置。要设置静态 IP 地址,请如下继续操作:
在 YaST 网卡配置模块的选项卡中,于已检测到的网卡列表中选择一个网卡,然后单击。
在选项卡中,选择。
输入 。IPv4 和 IPv6 地址均可使用。在中输入子网掩码。如果使用 IPv6 地址,则对于前缀长度使用 /64 格式的。
或者,您可以为此地址输入一个完全限定的,该主机名将写入到 /etc/hosts 配置文件。
单击。
要激活配置,请单击。
如果使用静态地址,则不会自动配置名称服务器和默认网关。要配置名称服务器,请按照第 16.4.1.4 节 “配置主机名和 DNS” 中所述进行。要配置网关,请按照第 16.4.1.5 节 “配置路由选择” 中所述进行。
一个网络设备可以有多个 IP 地址。
这些所谓的别名或标签只能分别用于 IPv4。对于 IPv6 则忽略它们。使用 iproute2 网络接口可以有一个或多个地址。
要使用 YaST 设置网卡的其他地址,请执行以下步骤:
在 YaST 对话框的选项卡中,于已检测到的网卡列表中选择一个网卡,然后单击。
在 › 选项卡中,单击。
输入 、和。不要在别名中包含接口名称。
要激活该配置,请确认设置。
可更改网卡在使用时的设备名称。还可确定 udev 是通过网卡的硬件 (MAC) 地址还是通过总线 ID 来标识网卡。后者更适合大型服务器,因为便于热插拔网卡。要使用 YaST 设置这些选项,请执行以下步骤:
在 YaST 对话框的选项卡中,于已检测到的网卡列表中选择一个网卡,然后单击。
转到选项卡。当前设备名称显示在 中。单击。
选择 udev 应通过网卡的 还是 来识别网卡。网卡的当前 MAC 地址和总线 ID 显示在对话框中。
要更改设备名称,请选中选项并编辑名称。
要激活该配置,请确认设置。
有些网络卡可能有多个内核驱动程序可供使用。如果网卡已配置,YaST 允许从可用的合适驱动程序列表中选择一个要使用的内核驱动程序。还可为内核驱动程序指定选项。要使用 YaST 设置这些选项,请执行以下步骤:
在 YaST 网络设置模块的选项卡中,于已检测到的网卡列表中选择一个网卡,然后单击。
转到选项卡。
在中选择要使用的内核驱动程序。在中以 = =值格式为所选驱动程序输入任何选项。如果使用多个选项,应用空格分隔这些选项。
要激活该配置,请确认设置。
如果使用结合 wicked 的方法,便可以将设备配置为在引导期间、连接电缆时或检测到网卡时启动、以手动方式启动或永不启动设备。要更改设备启动,请如下继续操作:
在 YaST 的 › 中,于已检测到的网卡列表中选择一个网卡,然后单击。
在选项卡中,从选择所希望的项。
选择可在系统引导时启动设备。使用将对任何现有物理连接监视接口。使用,可在接口可用时对其进行设置。这与选项很相似,唯一区别是如果引导时接口不存在,将不会发生错误。选择可通过 ifup 手动控制接口。选择将不启动设备。 与相似,区别是使用 systemctl stop wicked.service 命令不会关闭接口;如果 wicked 处于活动状态,则 network 服务还会处理 wicked 服务。如果您使用 NFS 或 iSCSI 根文件系统,则选择此选项。
要激活该配置,请确认设置。
在通过网络以 NFS 共享形式装入根分区的(无磁盘)系统中,配置可供访问 NFS 共享的网络设备时需保持谨慎。
关闭或重引导系统时,默认的处理顺序是关闭网络连接,然后卸载根分区。对于 NFS 根分区,这种顺序会产生问题,因为在尚未激活与 NFS 共享的网络连接的情况下,根分区无法完全卸载。为防止系统停用相关的网络设备,请按第 16.4.1.2.5 节 “激活网络设备”中所述打开网络设备配置选项卡,然后在窗格中选择。
您可为接口设置最大传输单位 (MTU)。MTU 是指允许的最大包大小(以字节为单位)。更高的 MTU 可带来更高的带宽效率。但是较大的包有时可能会堵塞较慢的接口,从而增加后续包的延迟。
在 YaST 的 › 中,于已检测到的网卡列表中选择一个网卡,然后单击。
在选项卡中,从 列表中选择所需项。
要激活该配置,请确认设置。
系统支持对以下技术提供支持的多功能设备:LAN、iSCSI 和 FCoE。YaST FCoE 客户端 (yast2 fcoe-client) 会在额外的列中显示私用标志,以允许用户选择用于 FCoE 的设备。YaST 网络模块 (yast2 lan) 会针对网络配置排除“仅储存设备”。
在 YaST 的 › 中选择 InfiniBand 设备,然后单击。
在选项卡中,选择一种 (IPoIB) 模式:(默认)或。
要激活该配置,请确认设置。
有关 InfiniBand 的更多信息,请参见 /usr/src/linux/Documentation/infiniband/ipoib.txt。
无须输入详细的防火墙设置(如Section 15.4.1, “Configuring the Firewall with YaST”中所述),您就能在设备设置过程中确定设备的基本防火墙设置。按如下所示继续:
打开 YaST 的 › 模块。在选项卡中,从已检测到的网卡列表中选择一个网卡,然后单击。
进入对话框的选项卡。
确定要将接口指派到的。下列选项可用:
此选项只有在禁用防火墙和防火墙未在运行时才可用。仅当计算机属于受外部防火墙保护的大型网络时才使用此选项。
此选项只有在启用防火墙后才可用。防火墙正在运行且接口自动指派给防火墙区域。包含关键字 any 的区域或外部区域将用于此类接口。
防火墙正在运行,但不会强制执行任何规则来保护此接口。当计算机属于受外部防火墙保护的大型网络时才使用此选项。当计算机具有多个网络接口时,此选项还可用于连接到内部网络的接口。
隔离区域是位于内部网络和(恶意)因特网之前的附加防线。可从内部网络和因特网访问指派到此区域的主机,但指派到此区域的主机无法访问内部网络。
防火墙在此接口上运行,并且全面保护其抵御其他假定有害的网络流量。这是默认选项。
要激活该配置,请确认设置。
如果未正确检测到某个网卡,该卡将不会包含在已检测到的网卡列表中。如果确定系统包含网卡的驱动程序,则可以手动对其进行配置。还可以配置特殊网络设备类型,例如网桥、绑定、TUN 或 TAP。要配置未检测到的网卡(或特殊设备),请如下操作:
在 YaST 的 › › 对话框中,单击。
在对话框中,从可用选项中设置接口的和。如果网卡为 PCMCIA 或 USB 设备,则激活相应的复选框,并选择退出此对话框。否则,您可根据需要定义要用于网卡的内核及其。
在 中,您可以为接口设置 ifup 使用的 ethtool 选项。可用选项请参见 ethtool 手册页。如果选项字符串以 - 开始(例如 -K 接口名称 rx on),字符串中的第二项将替换为当前接口名。否则的话(例如 autoneg off speed 10)是 ifup 后跟 -s 接口名。
单击。
在、和选项卡中,配置所有所需的选项,如接口的 IP 地址、设备激活或防火墙区域。有关配置选项的更多信息,请参见第 16.4.1.2 节 “更改网卡的配置”。
如果选择作为接口的设备类型,则在下一个对话框中配置无线连接。
要激活新的网络配置,请确认设置。
如果您在安装期间未更改网络配置,并且已有以太网卡可用,则系统会自动为您的计算机生成主机名并激活 DHCP。这同样适用于主机连接到网络环境所需的名称服务信息。如果网络地址设置使用了 DHCP,则会向域名服务器列表自动填充相应数据。如果希望使用静态设置,则手动设置这些值。
要更改计算机名称并调整名称服务器搜索列表,则如下继续操作:
转到 YaST 的模块中的 › 选项卡。
输入,如果需要,也输入。如果此计算机是邮件服务器,则该域特别重要。请注意,主机名是全局性的,将应用到所有已设置的网络接口。
如果使用 DHCP 获取 IP 地址,则计算机的主机名将由 DHCP 自动设置。如果连接到不同网络,您应禁用此行为,因为其他网络可能会指派不同的主机名,而在运行时更改主机名可能会导致混淆图形桌面。要禁止使用 DHCP 获取 IP 地址,请停用。
会将您的主机名与 /etc/hosts 中的 127.0.0.2(回写)IP 地址关联。如果您想让主机名即使在没有活动的网络情况下也可随时解析,则可使用该选项。
在中,请选择修改 DNS 配置(名称服务器、搜索列表以及 /etc/resolv.conf 文件的内容)的方式。
如果选择了选项,则配置由 netconfig 脚本处理,该脚本合并了静态定义的数据(通过 YaST 或在配置文件中)与动态获取的数据(来自 DHCP 客户端或 NetworkManager)。此默认策略可满足通常情况。
如果选择了选项,则不允许 netconfig 修改 /etc/resolv.conf 文件。但是,此文件可手动编辑。
如果已选择选项,则应指定用于定义合并策略的字符串。该字符串包含了接口名称的逗号分隔列表,可考虑作为设置的有效源。除完整接口名外,也可使用基本通配符来匹配多个接口。例如,eth* ppp? 首先以所有 eth 为目标,然后是 ppp0 到 ppp9 的所有接口。有两个特殊策略值表示如何应用 /etc/sysconfig/network/config 文件中定义的静态设置:
STATIC
静态设置需要与动态设置合并到一起。
STATIC_FALLBACK
仅当动态配置不可用时,才使用静态设置。
有关更多信息,请参见 netconfig(8) 的手册页 (man 8 netconfig)。
输入并填写列表。名称服务器必须由 IP 地址指定(如 192.168.1.116),而非由主机名指定。选项卡中指定的名称是用于解析主机名(未指定域)的域名。如果使用多个,则使用逗号或空格分隔域。
要激活该配置,请确认设置。
也可以使用 YaST 从命令行编辑主机名。YaST 所做更改会立即生效(手动编辑 /etc/HOSTNAME 文件时则不是这样)。要更改主机名,请使用以下命令:
yast dns edit hostname=hostname
要更改名称服务器,请使用以下命令:
yast dns edit nameserver1=192.168.1.116 yast dns edit nameserver2=192.168.1.117 yast dns edit nameserver3=192.168.1.118
要使计算机能够与其他计算机和其他网络进行通信,必须提供路由选择信息以使网络流量使用正确的路径。如果使用 DHCP,则将自动提供此信息。如果使用静态设置,则必须手动添加此数据。
在 YaST 中,转到 › 。
输入(如果需要是 IPv4 和 IPv6)的 IP 地址。默认网关与每个可能的目标匹配,但是如果存在与所需地址匹配的路由表项,则会使用此项,而不是通过默认网关使用默认路由。
可在中输入多个项。输入网络 IP 地址、 IP 地址和。选择将流量路由到定义的网络要经过的(减号代表任何设备)。要忽略这些值中的任何值,请使用减号 -。要在表中输入默认网关,请在字段中使用默认。
如果使用更多的默认路由,则可以指定用于确定具有更高优先级的路由的度量选项。要指定度量选项,则在中输入 -metricnumber。默认情况下使用具有最高度量的路由。如果网络设备已断开连接,则删除其路由并使用下一个路由。但是,当前内核在静态路由选择中不使用度量,仅路由选择守护程序(如 multipathd)才在静态路由中使用度量。
如果系统是路由器,请根据需要在中启用 和 。
要激活该配置,请确认设置。
NetworkManager 是用于便携式计算机和其他可移动计算机的理想解决方案。有了 NetworkManager,您便无需担心配置网络接口并且无需移动时在网络之间切换。
wicked #
但是 NetworkManager 解决方案并非适用于所有情况,因此您仍可在 wicked 控制方法(用于管理网络连接)和 NetworkManager 之间进行选择。如果您希望使用 NetworkManager 管理网络连接,则在 YaST 网络设置模块中启用 NetworkManager(如第 28.2 节 “启用或禁用 NetworkManager”中所述),然后使用 NetworkManager 配置网络连接。有关用例的列表以及如何配置和使用 NetworkManager 的详细说明,请参见第 28 章 “使用 NetworkManager”。
wicked 和 NetworkManager 的一些区别:
root 特权
如果使用 NetworkManager 进行网络设置,则可以随时使用一个小程序在您的桌面环境内轻松地切换、停止或启动网络连接。NetworkManager 也可以改变和配置无线网卡连接,无需 root 特权。因此,NetworkManager 是一种用于移动工作站的理想解决方案。
wicked 也提供一些像用户管理的设备那样切换、停止或启动连接的途径(有的需要用户干预,有的则不需要)。但是,此方法始终需要 root 特权才能更改或配置网络设备。这对于移动计算是个常见问题,因为移动计算不可能预配置所有的连接功能。
wicked 和 NetworkManager 都可以处理与无线网络(WEP、WPA-PSK 和 WPA-Enterprise 访问)和使用 DHCP 及静态配置的有线网络之间的网络连接。它们还支持拨号连接和 VPN 连接。使用 NetworkManager 还可以连接移动宽带 (3G) 调制解调器或设置 DSL 连接,而传统配置则不能进行这种连接。
NetworkManager 尝试使用可用的最好连接使您的计算机随时保持连接状态。如果网络电缆意外断开,它将尝试重连接。它可以从您的无线连接列表中找到具有最佳信号强度的网络并自动用其进行连接。如果想使用 wicked 获得相同的功能,需要执行更多配置工作。
用 NetworkManager 创建的单个网络连接设置储存在配置文件中。用 NetworkManager 或 YaST 配置的系统连接保存在 /etc/networkmanager/system-connections/* 或 /etc/sysconfig/network/ifcfg-* 中。对于 GNOME,所有用户定义的连接都储存在 GConf 中。
如果未配置任何配置文件,NetworkManager 将自动创建一个配置文件,并将其命名为 Auto $INTERFACE-NAME。这样做是试图无需为任意多的(安全)案例进行任何配置就能使用。如果自动创建的配置文件不适合您的需要,请用 GNOME 提供的网络连接配置对话框按需要修改它们。有关详细信息,请参见第 28.3 节 “配置网络连接”。
在中央管理的计算机上,某些 NetworkManager 功能可以用 PolKit 控制或禁用,例如,是否允许某用户修改管理员定义的连接,或者是否允许某用户定义自己的网络配置。要查看或更改相关的 NetworkManager 策略,请启动 PolKit 的图形工具。在左侧的树中 条目下找到它们。有关 PolKit 的介绍及其使用方法细节,请参见Chapter 9, Authorization with PolKit。
应该将手动配置网络软件作为最后的选择。建议使用 YaST。但是,对网络配置背景信息的了解将对您使用 YaST 有所帮助。
wicked 网络配置 #
名为 wicked 的工具和库提供了一个用于配置网络的新框架。
传统网络接口管理的难题之一在于,不同的网络管理层同时混杂在单个脚本或者最多两个不同的脚本中,而这些层之间的交互方式并不真正有序,这就造成难以察觉的负面影响,并带来一些无谓的约束和惯例,或其他如此种种的不利。针对各种不同的情况部署多个特殊入侵层增大了维护负担。所用的地址配置协议是通过 dhcpcd 等守护程序实现的,而这些守护程序与基础架构中其他组件的交互很不通畅。为了持续识别接口,引入了新潮的接口命名模式,而这需要繁重的 udev 支持。
wicked 的理念是通过多种方式剖析问题。它没有采用任何全新的技术,而是尝试将不同项目中的观点集中起来,以建立一个更好的整体解决方案。
实现此目的的方法之一是使用客户端/服务器模型。wicked 可借此为地址配置等任务定义能够很好地集成到整个框架中的标准化工具。例如,在进行地址配置时,管理员可以请求通过 DHCP 或 IPv4 zeroconf 配置接口,地址配置服务的工作无非就是从其服务器获取租用,然后将租用传递给 wicked 服务器进程,再由后者安装请求的地址和路由。
剖析问题的另一种方法是强制实施分层机制。对于任何类型的网络接口,都可以定义一个 dbus 服务,用于配置网络接口的设备层 — VLAN、桥接、绑定或超虚拟化设备。地址配置等常用功能可通过在这些设备特定的服务顶部分层的联合服务来实现,而无需由您专门实现。
wicked 框架使用各种 dbus 服务来实现这两个方面的功能,这些服务将会根据其类型挂接到网络接口。本文提供了 wicked 中的当前对象层次的简要概述。
每个网络接口以 /org/opensuse/Network/Interfaces 的子对象表示。该子对象的名称由其 ifindex 指定。例如,ifindex 通常为 1 的回写接口是 /org/opensuse/Network/Interfaces/1,注册的第一个以太网接口是 /org/opensuse/Network/Interfaces/2。
每个网络接口都有一个关联的“类”,该类用于选择该接口支持的 dbus 接口。默认情况下,每个网络接口的类为 netif,wickedd 将自动挂接与此类兼容的所有接口。在当前实施中,这些兼容的接口包括:
一般网络接口功能,例如,打开或关闭链路、指派 MTU 等
适用于 DHCP、IPv4 zeroconf 等的地址配置服务
除此之外,网络接口可能还需要或者提供特殊的配置机制。例如,对于某个以太网设备,您应该能够控制链路速度、校验和卸载等。为了实现此目的,以太网设备都有一个名为 netif-ethernet 的自己的类,该类属于 netif 的子类。因此,指派给以太网接口的 dbus 接口包括上面列出的所有服务以及 org.opensuse.Network.Ethernet,后者只适用于属于 netif-ethernet 类的对象。
同样,桥接、VLAN、绑定或 infiniband 等接口类型也存在适用类。
您要如何与某个需要首先创建的接口交互呢?例如,VLAN,它实际上是位于以太网顶层的虚拟网络接口。对于这些接口,wicked 会定义出厂接口,例如 org.opensuse.Network.VLAN.Factory。这种出厂接口只提供单一功能,就是让您创建所请求类型的接口。这些出厂接口将挂接到 /org/opensuse/Network/Interfaces 列表节点。
wicked 体系结构和功能 #
如图 16.4 “wicked 体系结构”中所述,wicked 服务由几个部分组成。
wicked 体系结构 #
wicked 目前支持以下功能:
使用配置文件后端来分析 SUSE 样式的 /etc/sysconfig/network 文件。
使用内部配置后端以 XML 格式表示网络接口配置。
打开和关闭“常规”网络接口,例如以太网或 InfiniBand,VLAN、网桥、绑定、tun、tap、虚设设备、macvlan、macvtap、hsi、qeth、iucv 和无线(当前限制为一个 wpa-psk/eap 网络)设备。
内置 DHCPv4 客户端和内置 DHCPv6 客户端。
第 16.6.1.3 节 “Nanny”守护程序(默认情况下已启用)有助于在设备可用时自动激活配置的接口(接口热插拔),并在检测到链路(载波)后设置 IP 配置。
wicked 过去是以与 systemd 集成的 DBus 服务组形式来实现的。因此,一般的 systemctl 命令将会适用于 wicked。
wicked #
SUSE Linux Enterprise 上默认会运行 wicked。如果您想检查当前启用了哪个组件以及该组件是否正在运行,请调用:
systemctl status network
如果已启用 wicked,您将看到类似于下面的行:
wicked.service - wicked managed network interfaces
Loaded: loaded (/usr/lib/systemd/system/wicked.service; enabled)
...
如果运行的是其他组件(例如 NetworkManager)并且您想切换到 wicked,请先停止正在运行的组件,然后启用 wicked:
systemctl is-active network && \ systemctl stop network systemctl enable --force wicked
如此会启用 wicked 服务、创建从 network.service 到 wicked.service 的别名链路,并在下次引导时启动网络。
启动服务器进程:
systemctl start wickedd
这将会启动 wickedd(主服务器)和关联的请求方:
/usr/lib/wicked/bin/wickedd-auto4 --systemd --foreground /usr/lib/wicked/bin/wickedd-dhcp4 --systemd --foreground /usr/lib/wicked/bin/wickedd-dhcp6 --systemd --foreground /usr/sbin/wickedd --systemd --foreground /usr/sbin/wickedd-nanny --systemd --foreground
然后激活网络:
systemctl start wicked
或者使用 network.service 别名:
systemctl start network
这些命令使用 /etc/wicked/client.xml 中定义的默认配置源或系统配置源。
要启用调试,请在 /etc/sysconfig/network/config 中设置 WICKED_DEBUG,例如:
WICKED_DEBUG="all"
或者,要省略一些信息:
WICKED_DEBUG="all,-dbus,-objectmodel,-xpath,-xml"
使用客户端实用程序显示所有接口的接口信息,或者显示以 ifname 指定的接口的接口信息:
wicked show all wicked show ifname
XML 格式的输出:
wicked show-xml all wicked show-xml ifname
打开一个接口:
wicked ifup eth0 wicked ifup wlan0 ...
由于未指定配置源,wicked 客户端将检查 /etc/wicked/client.xml 中为它定义的默认配置源:
firmware:iSCSI 引导固件表 (iBFT)
compat:ifcfg 文件 — 为兼容性而实施
将会应用 wicked 从指定接口的这些源中获取的任何设置。预期的重要性顺序为 firmware、compat - 将来此顺序可能会发生变化。
有关更多信息,请参见 wicked 手册页。
Nanny 是一个事件与策略驱动的守护程序,负责热插拔设备等异步或被动性方案。因此,Nanny 守护程序可帮助启动或者重启动延迟的设备或临时消失的设备。Nanny 将监视设备和链路变化,并集成当前策略集定义的新设备。即使 ifup 已经因指定的超时约束而退出,Nanny 也会继续设置。
默认情况下,Nanny 守护程序在系统上处于活动状态。您可在 /etc/wicked/common.xml 配置文件中启用它:
<config> ... <use-nanny>true</use-nanny> </config>
如果使用此设置,ifup 和 ifreload 会将包含有效配置的策略应用到 Nanny 守护程序;然后,Nanny 将配置 wickedd,从而确保支持热插拔。它将在后台等待事件或更改(例如,打开新的设备或载体)。
对于绑定和网桥,有效的做法是在一个文件 (ifcfg-bondX) 中定义整个设备拓扑,并一次性将它激活。然后,当您指定(网桥或绑定的)顶级接口名称时,wicked 可以激活整个配置:
wicked ifup br0
此命令会按适当的顺序自动设置网桥及其依赖项,而无需分别列出依赖项(端口等)。
要在一个命令中激活多个接口:
wicked ifup bond0 br0 br1 br2
要激活所有接口:
wicked ifup all
如果您需要通过 Wicked 使用隧道,可以使用专门针对此用途的 TUNNEL_DEVICE。它可让您指定一个可选的设备名称,以将隧道绑定至该设备。隧道式包将只能通过此设备路由。
有关详细信息,请参见 man 5 ifcfg-tunnel。
使用 wicked 时,要重配置某个接口,并不需要真正将它关闭(除非内核要求关闭)。例如,要将另一个 IP 地址或路由添加到静态配置的网络接口,请将该 IP 地址添加到接口定义,然后再次执行“ifup”操作。服务器会尽量做到只更新那些已更改的设置。这适用于链路级选项,例如设备 MTU 或 MAC 地址;也适用于网络级设置,例如地址、路由,甚至地址配置模式(例如,从静态配置转为 DHCP 时)。
当然,对于合并了多个实体设备(例如桥接或绑定设备)的虚拟接口,事情会变得有些棘手。对于绑定设备,当设备运行时,您无法更改某些参数,否则会导致出错。
但是,您仍可以添加或去除绑定设备或桥接的子设备,或者选择绑定设备的主接口。
wicked 设计为使用外壳脚本扩展。这些扩展可在 config.xml 文件中定义。
目前支持多个种类的扩展:
链路配置:这些脚本负责根据客户端提供的配置来设置设备的链路层,以及负责将链路层再次拆解。
地址配置:这些脚本负责管理设备的地址配置。通常,地址配置和 DHCP 由 wicked 自身管理,但是,可借助扩展来实现。
防火墙扩展:这些脚本可以应用防火墙规则。
通常,扩展中包含一个启动命令和一个停止命令、一个可选的“pid 文件”,以及传递给脚本的一组环境变量。
为了演示此扩展的工作原理,请查看 etc/server.xml 中定义的防火墙扩展:
<dbus-service interface="org.opensuse.Network.Firewall"> <action name="firewallUp" command="/etc/wicked/extensions/firewall up"/> <action name="firewallDown" command="/etc/wicked/extensions/firewall down"/> <!-- default environment for all calls to this extension script --> <putenv name="WICKED_OBJECT_PATH" value="$object-path"/> <putenv name="WICKED_INTERFACE_NAME" value="$property:name"/> <putenv name="WICKED_INTERFACE_INDEX" value="$property:index"/> </dbus-service>
该扩展附加到
<dbus-service>
标记,并定义针对此接口的操作应执行的命令。此外,声明可以定义并初始化传递给操作的环境变量。
您也可以使用脚本来扩展配置文件的处理。例如,extensions/resolver 脚本根据 server.xml 中配置的行为来最终处理租用中的 DNS 更新:
<system-updater name="resolver"> <action name="backup" command="/etc/wicked/extensions/resolver backup"/> <action name="restore" command="/etc/wicked/extensions/resolver restore"/> <action name="install" command="/etc/wicked/extensions/resolver install"/> <action name="remove" command="/etc/wicked/extensions/resolver remove"/> </system-updater>
当 wickedd 中收到更新时,系统更新程序例程将分析租用,并调用解析程序脚本中的适当命令(backup、install等)。此后便可以使用 /sbin/netconfig 或者通过手动写入 /etc/resolv.conf(作为回退)来配置 DNS 设置。
本节对网络配置文件进行了概述并解释了它们的作用和所使用的格式。
/etc/wicked/common.xml #
/etc/wicked/common.xml 文件包含所有应用程序应使用的通用定义。该文件源自/包含在此目录中的其他配置文件中。例如,尽管您可以使用此文件允许在所有 wicked 组件间进行调试,但建议您使用文件 /etc/wicked/local.xml 来实现此目的。应用维护更新后,您所做的更改可能会丢失,因为 /etc/wicked/common.xml 可能会被覆盖。/etc/wicked/common.xml 文件包含默认安装中的 /etc/wicked/local.xml,因此您通常不需要修改 /etc/wicked/common.xml。
如果要通过将 <use-nanny> 设置为 false 来禁用 nanny,请重启动 wickedd.service,然后运行以下命令以应用所有配置和策略:
wicked ifup all
如果 wickedd、wicked 或 nanny 程序自身的配置文件不存在,则会尝试读取 /etc/wicked/common.xml。
/etc/wicked/server.xml #
wickedd 服务器进程会在启动时读取文件 /etc/wicked/server.xml。该文件将扩展储存到 /etc/wicked/common.xml 中。除此之外,此文件可配置解析程序的处理方式,以及从 addrconf 请求方(例如 DHCP)接收信息的方式。
建议您将需要对此文件进行的所有更改都添加到单独的文件 /etc/wicked/server-local.xml(/etc/wicked/server.xml )。使用单独的文件可避免在维护更新期间覆盖您的更改。
/etc/wicked/client.xml #
/etc/wicked/client.xml 供 wicked 命令使用。该文件指定发现 ibft 管理的设备时所使用脚本的位置,还可配置网络接口配置的位置。
建议您将需要对此文件进行的所有更改都添加到单独的文件 /etc/wicked/client-local.xml(/etc/wicked/server.xml 会包含该文件的内容)。使用单独的文件可避免在维护更新期间覆盖您的更改。
/etc/wicked/nanny.xml #
/etc/wicked/nanny.xml 配置链接层的类型。建议您将特定配置添加到单独的文件 /etc/wicked/nanny-local.xml 中,以免在维护更新期间丢失更改。
/etc/sysconfig/network/ifcfg-* #这些文件包含网络接口的传统配置。在 SUSE Linux Enterprise 11 中,这是除 iBFT 固件以外唯一支持的格式。
wicked 和 ifcfg-* 文件
如果您指定 compat: 前缀,wicked 将读取这些文件。根据 /etc/wicked/client.xml 中 SUSE Linux Enterprise Server 12 的默认配置,wicked 将会尝试先读取这些文件,然后再读取 /etc/wicked/ifconfig 中的 XML 配置文件。
通常,提供 --ifconfig 开关仅用于测试。如果指定该开关,则不会应用 /etc/wicked/ifconfig 中定义的默认配置源。
ifcfg-* 文件包含启动模式和 IP 地址等信息。可能的参数在 ifup 的手册页中有所介绍。此外,如果一个常规设置只能用于一个接口,则文件 dhcp 和 wireless 中的大多数变量可用于 ifcfg-* 文件。但是,/etc/sysconfig/network/config 中的大多数变量是全局变量,不能在 ifcfg-files 中被覆盖。例如,NETCONFIG_* 变量是全局变量。
要配置 macvlan 和 macvtab 接口,请参见 ifcfg-macvlan 和 ifcfg-macvtap 手册页。例如,对于 macvlan 接口,请提供使用以下设置的 ifcfg-macvlan0:
STARTMODE='auto' MACVLAN_DEVICE='eth0' #MACVLAN_MODE='vepa' #LLADDR=02:03:04:05:06:aa
有关 ifcfg.template 的信息,请参见第 16.6.2.6 节 “/etc/sysconfig/network/config、/etc/sysconfig/network/dhcp 和 /etc/sysconfig/network/wireless”。
/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_* 变量是全局变量。
即使是在未正确配置 IPv6 路由器广播 (RA) 的网络中,SUSE Linux Enterprise 11 上的 DHCPv6 一向也能正常工作。从 SUSE Linux Enterprise 12 开始,DHCPv6 将适当地要求网络中至少有一个路由器发出 RA 用于指示此网络由 DHCPv6 管理。
对于无法在其中正确配置路由器的网络,用户可以通过在 ifcfg 文件中指定 DHCLIENT6_MODE='managed',使用 ifcfg 选项来覆盖此行为。您也可以在安装系统中使用引导参数来启用这种解决方法:
ifcfg=eth0=dhcp6,DHCLIENT6_MODE=managed
/etc/sysconfig/network/routes 和 /etc/sysconfig/network/ifroute-* #
TCP/IP 包的静态路由是 /etc/sysconfig/network/routes 和 /etc/sysconfig/network/ifroute-* 文件确定的。可以在 /etc/sysconfig/network/routes 中指定各种系统任务所需的所有静态路由:主机的路由、主机通过网关的路由以及网络的路由。对于需要个别路由的每个接口,定义另一个配置文件:/etc/sysconfig/network/ifroute-*。将通配符 (*) 替换为接口名称。路由选择配置文件中的项如下所示:
# Destination Gateway Netmask Interface Options
路由目标位于首列。此列可以包含网络或主机的 IP 地址,或者在有可访问名称服务器时,包含完全限定的网络或主机名。应该以 CIDR 表示法(地址加上关联的路由前缀长度)输入网络名称,例如 10.10.0.0/16(对于 IPv4 路由)或 fc00::/7(对于 IPv6 路由)。关键字 default 表示该路由是与网关位于相同地址系列中的默认网关。对于没有网关的设备,请使用显式 0.0.0.0/0 或 ::/0 目标。
第二列包含默认网关或通过其可访问主机或网络的网关。
第三列已弃用;它用于包含目标的 IPv4 网络掩码。对于 IPv6 路由、默认路由,或者如果在第一列中使用了前缀长度(CIDR 表示法),请在此处输入破折号 (-)。
第四列包含接口名称。如果使用破折号 (-) 将它保留空白,可能会导致 /etc/sysconfig/network/routes 出现意外的行为。有关更多信息,请参见 routes 手册页。
第五列(可选)可用于指定特殊选项。有关详细信息,请参见 routes 手册页。
# --- IPv4 routes in CIDR prefix notation: # Destination [Gateway] - Interface 127.0.0.0/8 - - lo 204.127.235.0/24 - - eth0 default 204.127.235.41 - eth0 207.68.156.51/32 207.68.145.45 - eth1 192.168.0.0/16 207.68.156.51 - eth1 # --- IPv4 routes in deprecated netmask notation" # Destination [Dummy/Gateway] Netmask Interface # 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 # --- IPv6 routes are always using CIDR notation: # Destination [Gateway] - Interface 2001:DB8:100::/64 - - eth0 2001:DB8:100::/32 fe80::216:3eff:fe6d:c042 - eth0
/etc/resolv.conf #
主机所属的域在 /etc/resolv.conf 中指定(关键字 search)。使用 search 选项最多可以指定六个域,总共 256 个字符。当解析不是完全限定的名称时,将尝试通过附加单独的 search 项生成一个完全限定的名称。使用 nameserver 选项最多可以指定 3 个名称服务器,每行指定一个。注释以井号或分号(# 或 ;)开头。有关示例,请参见例 16.6 “/etc/resolv.conf”。
但是,/etc/resolv.conf 不应手动编辑。而是由 netconfig 脚本生成。要定义静态 DNS 配置而不使用 YaST,请手动编辑 /etc/sysconfig/network/config 文件中的相应变量:
NETCONFIG_DNS_STATIC_SEARCHLIST
用于主机名查找的 DNS 域名列表
NETCONFIG_DNS_STATIC_SERVERS
用于主机名查找的名称服务器 IP 地址列表
NETCONFIG_DNS_FORWARDER
需要配置的 DNS 转发器名称,例如 bind 或 resolver
NETCONFIG_DNS_RESOLVER_OPTIONS
将写入到 /etc/resolv.conf 的任意选项,例如:
debug attempts:1 timeout:10
有关更多信息,请参见 resolv.conf 手册页。
NETCONFIG_DNS_RESOLVER_SORTLIST
最多包含 10 项的列表,例如:
130.155.160.0/255.255.240.0 130.155.0.0
有关更多信息,请参见 resolv.conf 手册页。
要使用 netconfig 禁用 DNS 配置,请设置 NETCONFIG_DNS_POLICY=''。有关 netconfig 的更多信息,请参见 netconfig(8) 手册页 (man 8 netconfig)。
/etc/resolv.conf ## Our domain search example.com # # We use dns.example.com (192.168.1.116) as nameserver nameserver 192.168.1.116
/sbin/netconfig #
netconfig 是一个用于管理附加网络配置设置的模块化工具。它合并了静态定义的设置和自动配置机制根据预定义策略以 DHCP 或 PPP 形式提供的设置。通过调用负责修改配置文件和重启动服务或相似操作的 netconfig 模块将所需更改应用于系统。
netconfig 识别三种主要操作。netconfig modify 和 netconfig remove 命令由诸如 DHCP 或 PPP 的守护程序用于在 netconfig 中提供设置或从中删除设置。仅 netconfig update 命令可用于用户:
modify
netconfig modify 命令修改特定于当前接口和服务的动态设置并更新网络配置。Netconfig 从标准输入或使用 --lease-file filename 选项指定的文件中读取设置,并将其储存在内部,直到系统重引导(或者执行下一个修改或删除操作)。已存在的相同接口和服务组合设置将会重写。该接口由 -i interface_name 参数指定。该服务由 -s service_name 参数指定。
remove
netconfig remove 命令为指定接口和服务组合删除由修改操作提供的动态设置并更新网络配置。该接口由 -i interface_name 参数指定。该服务由 -s service_name 参数指定。
update
netconfig update 命令使用当前设置更新网络配置。当策略或静态配置更改时,这非常有用。如果要仅更新指定服务(dns、nis 或 ntp),请使用 -m module_type 参数。
netconfig 策略和静态配置设置可手动定义或者使用 YaST 在 /etc/sysconfig/network/config 文件中定义。自动配置工具(例如 DHCP 或 PPP)提供的动态配置设置由这些工具通过 netconfig modify 和 netconfig remove 操作直接递送。启用 NetworkManager 时,netconfig(在策略模式 auto 中)仅使用 NetworkManager 设置,忽略使用传统 ifup 方法配置的任何其他接口的设置。如果 NetworkManager 未提供任何设置,将使用静态设置作为后备设置。不支持混合使用 NetworkManager 和 wicked 方法。
有关 netconfig 的更多信息,请参见 man 8 netconfig。
/etc/hosts #
在此文件中,如例 16.7 “/etc/hosts”中所示,将为主机名指派 IP 地址。如果未实施名称服务器,则将与其建立 IP 连接的所有主机必须列在此处。在此文件中为每个主机输入一行数据,包含 IP 地址、完全限定的主机名和主机名。IP 地址必须在每行的开头,各项用空格和制表符隔开。注释总是以 # 符号开头。
/etc/hosts #127.0.0.1 localhost 192.168.2.100 jupiter.example.com jupiter 192.168.2.101 venus.example.com venus
/etc/networks #
在这里,网络名称被转换为网络地址。格式类似于 hosts 文件的格式,只是网络名称在地址的前面。请参见例 16.8 “/etc/networks”。
/etc/networks #loopback 127.0.0.0 localnet 192.168.0.0
/etc/host.conf #
此文件控制名称解析,即通过解析程序库转换主机名和网络名称。此文件只用于链接到 libc4 或 libc5 的程序。对于当前的 glibc 程序,请参见 /etc/nsswitch.conf 中的设置。每个参数都必须始终在单独的一行中输入。注释以 # 符号开头。表 16.2 “/etc/host.conf 的参数” 显示了可用的参数。例 16.9 “/etc/host.conf” 中显示了 /etc/host.conf 的示例。
|
order hosts、bind |
指定访问服务以进行名称解析的顺序。可用参数有(使用空格或逗号隔开): |
|
hosts:搜索 | |
|
bind:访问名称服务器 | |
|
nis:使用 NIS | |
|
multi on/off |
定义 |
|
nospoof on spoofalert on/off |
这些参数影响名称服务器 spoofing,但对网络配置没有任何影响。 |
|
trim domainname |
在主机名解析后,指定的域名将与主机名分开(前提是主机名包含域名)。此选项仅当本地域名在 |
/etc/host.conf ## We have named running order hosts bind # Allow multiple address multi on
/etc/nsswitch.conf #
GNU C Library 2.0 的引入与 名称服务转换 (NNS) 的引入是同时进行的。有关详细信息,请参见 nsswitch.conf(5) 手册页和《GNU C 库参考手册》。
查询的顺序是在文件 /etc/nsswitch.conf 中定义的。例 16.10 “/etc/nsswitch.conf” 中显示了 nsswitch.conf 的示例。注释以 # 符号开头。在本例中,hosts 数据库下的项意味着通过 DNS 将请求发送到 /etc/hosts (files)。
/etc/nsswitch.conf #passwd: compat group: compat hosts: files dns networks: files dns services: db files protocols: db files rpc: files ethers: files netmasks: files netgroup: files nis publickey: files bootparams: files automount: files nis aliases: files nis shadow: compat
表 16.3 “通过 /etc/nsswitch.conf 可用的数据库” 中列出了 NSS 上可用的“数据库”。表 16.4 “NSS“数据库”的配置选项” 中列出了 NSS 数据库的配置选项。
|
|
|
|
|
以太网地址。 |
|
|
网络及其子网掩码的列表。只有在使用子网划分时才需要。 |
|
|
|
|
|
|
|
|
网络中用于控制访问权限的有效主机和用户列表,请参见 |
|
|
|
|
|
NFS 和 NIS+ 使用的 Secure_RPC 的公钥和密钥。 |
|
|
|
|
|
网络协议,由 |
|
|
|
|
|
|
|
|
用户阴影口令,由 |
|
|
直接访问文件,例如 |
|
|
通过数据库访问 |
|
|
NIS,另请参见 Chapter 3, Using NIS |
|
|
仅可用作 |
|
|
仅可用作 |
/etc/nscd.conf #
此文件用于配置 nscd(名称服务缓存守护程序)。请参见 nscd(8) 和 nscd.conf(5) 手册页。默认情况下,passwd 和 groups 的系统项由 nscd 进行缓存。这对于目录服务(例如 NIS 和 LDAP)的性能很重要,因为如果不是这样,每次访问名称或组都需要网络连接。默认情况下,不对 hosts 进行缓存,因为 nscd 中缓存主机的机制将导致本地系统无法信任正向和反向查找检查。请设置缓存 DNS 服务器,而不是让 nscd 缓存名称。
如果激活 passwd 的缓存,则通常需要 15 秒才能识别新添加的本地用户。使用以下命令重启动 nscd,缩短这段等待时间:
systemctl restart nscd
/etc/HOSTNAME #
/etc/HOSTNAME 包含完全限定的主机名 (FQHN)。完全限定的主机名是附有域名的主机名。此文件只能包含一行(在此行中设置主机名)。计算机引导时会读取此文件。
向配置文件写配置之前,可对其进行测试。要设置测试配置,请使用 ip 命令。要测试连接,请使用 ping 命令。
命令 ip 会直接更改网络配置,而不会将其保存到配置文件中。如果未在正确的配置文件中输入配置,重引导时将丢失已更改的网络配置。
ifconfig 和 route 已过时
ifconfig 和 route 工具已过时。请改为使用 ip。例如,ifconfig 会将接口名限制为 9 个字符。
ip 配置网络接口 #
ip 是用来显示和配置网络设备、路由选择、策略路由选择以及隧道的工具。
ip 是非常复杂的工具。它的常用语法为 ipoptionsobjectcommand。可使用以下对象:
此对象表示网络设备。
此对象表示设备的 IP 地址。
此对象表示 ARP 或 NDISC 超速缓存项。
此对象表示路由选择表项。
此对象表示路由选择策略数据库中的规则。
此对象表示多路广播地址。
此对象表示多路广播路由缓存项。
此对象表示 IP 上的隧道。
如果未提供命令,则将使用默认命令(通常为 list)。
使用命令 ip link set device_name 更改设备状态。例如,要停用设备 eth0,请输入 ip link set eth0 down。要重激活它,可使用 ip link set eth0 up。
激活设备后,可对设备进行配置。要设置 IP 地址,可使用 ip addr addip_address + dev device_name。例如,要将接口 eth0 的地址设置为带标准广播(选项 brd)的 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 的更多信息,请输入 ip help 或参见 ip(8) 手册页。help 选项还可用于所有 ip 子命令。例如,如果需要有关 ip addr 的帮助,请输入 ip addr help。可在 /usr/share/doc/packages/iproute2/ip-cref.pdf 中找到 ip 手册。
ping 命令是用于测试 TCP/IP 连接是否有效的标准工具。它使用 ICMP 协议来将小数据包和 ECHO_REQUEST 数据报文发送到目标主机,并请求即时答复。如果成功,ping 将显示表示这一结果的消息。这表示网络链路正在运作。
ping 不仅能测试两台计算机之间的连接功能:它还能提供关于连接质量的一些基本信息。在例 16.11 “命令 ping 的输出” 中,可查看 ping 输出示例。倒数第二行包含有关已传输的包数、丢失的包和 ping 的总运行时间的信息。
因此,您可以使用主机名或 IP 地址(例如 ping example.com 或 ping 192.168.3.100)。程序会一直发送包,直到您按 Ctrl–C。
如果只需要检查连接功能,则可使用 -c 选项来限制包数。例如,要将 ping 限制为三个包,请输入 ping -c 3 example.com。
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) 手册页。
对于 IPv6 地址,请使用 ping6 命令。请注意,要 ping 本地链路地址,必须用 -I 指定接口。如果通过 eth1 可获取地址,则以下命令有效:
ping6 -I eth1 fe80::117:21ff:feda:a425
除了上面介绍的配置文件之外,还存在一些负责在引导计算机时装载网络服务的 systemd 单元文件和多个脚本。系统切换到 multi-user.target 目标后,即会启动这些文件和脚本。网络程序的一些单元文件和启动脚本中介绍了其中的部分单元文件和脚本。有关 systemd 的更多信息,请参见第 14 章 “systemd 守护程序”;有关 systemd 目标的更多信息,请参见 systemd.special 的手册页 (man systemd.special)。
network.target
network.target 是网络的 systemd 目标,但其具体含义取决于系统管理员提供的设置。
有关详细信息,请参见http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/。
multi-user.target
xinetd
启动 xinetd。xinetd 可用于使服务器服务在系统上可用。例如,它可以在初始化 FTP 连接时启动 vsftpd。
rpcbind
启动用于将 RPC 程序号转换为通用地址的 rpcbind 实用程序。它是 RPC 服务所必需的,如 NFS 服务器。
ypserv
启动 NIS 服务器。
ypbind
启动 NIS 客户端。
/etc/init.d/nfsserver
启动 NFS 服务器。
/etc/init.d/postfix
控制 postfix 进程。
对于某些系统,需要实施高于典型以太网设备的标准数据安全性或可用性要求的网络连接。在这些情况下,可以将多个以太网设备聚合到单个绑定设备。
绑定设备的配置通过绑定模块选项来完成。其行为主要受绑定设备模式的影响。默认情况下是 mode=active-backup,即如果活动从属设备发生故障,则其他从属设备将变成活动从属设备。
绑定设备只对于有多个真实网卡可用的计算机有效。这意味着在大多数配置中,您仅应在 Dom0 中使用绑定配置。换言之,只有当您将多个网卡指派给一个 VM Guest 系统时,在 VM Guest 中设置绑定才有效。
要配置绑定设备,请使用以下过程:
运行 › › 。
使用并将更改为。单击继续。
选择如何为绑定设备指派 IP 地址。有三种方法可供选择:
无 IP 地址
动态地址(使用 DHCP 或 Zeroconf)
静态指派的 IP 地址
请使用最适合您环境的方法。
在选项卡中,通过激活相关复选框选择应加入到绑定中的以太网设备。
编辑。以下模式可用于配置:
balance-rr
active-backup
balance-xor
broadcast
802.3ad
802.3ad 是标准化的 LACP“IEEE 802.3ad 动态链路聚合”模式。
balance-tlb
balance-alb
确保将参数 miimon=100 添加到。如果没有此参数,则不会定期检查数据完整性。
单击,然后单击退出 YaST 以创建设备。
有关所有模式以及更多选项的详细说明,可在安装 kernel-source 程序包后参见 /usr/src linux/Documentation/networking/bonding.txt 中的 。
在特定网络环境(如高可用性)下,有几种情况需要替换绑定从属接口。原因可能在于网络设备持续故障。解决方案是设置绑定从属的热插拔。
按常规配置绑定(按照 man 5 ifcfg-bonding),例如:
ifcfg-bond0
STARTMODE='auto' # or 'onboot'
BOOTPROTO='static'
IPADDR='192.168.0.1/24'
BONDING_MASTER='yes'
BONDING_SLAVE_0='eth0'
BONDING_SLAVE_1='eth1'
BONDING_MODULE_OPTS='mode=active-backup miimon=100'
使用 STARTMODE=hotplug 和 BOOTPROTO=none 指定从属:
ifcfg-eth0
STARTMODE='hotplug'
BOOTPROTO='none'
ifcfg-eth1
STARTMODE='hotplug'
BOOTPROTO='none'
BOOTPROTO=none 使用 ethtool 选项(如果提供),但不会在 ifup eth0 上设置链路,因为从属接口由绑定主接口控制。
STARTMODE=hotplug 会使从属接口在可用时自动加入绑定。
需要更改 /etc/udev/rules.d/70-persistent-net.rules 中的 udev 规则,使之按照总线 ID(udev KERNELS 关键字等于使用 hwinfo --netcard 后显示的“SysFS BusID”)而不是 MAC 地址与设备匹配。这样变更后便可替换有问题的硬件(插在相同插槽中的网卡具有不同的 MAC),并可避免在绑定更改其所有从属的 MAC 地址时产生混淆。
例如:
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",
KERNELS=="0000:00:19.0", ATTR{dev_id}=="0x0", ATTR{type}=="1",
KERNEL=="eth*", NAME="eth0"
在引导时,systemd network.service 不会等待热插拔从属,但会等待绑定准备就绪,而这需要至少有一个从属可用。当从系统中去除一个从属接口时(从 NIC 驱动程序拆开联结、执行 NIC 驱动程序的 rmmod 命令或 PCI 热插拔去除为 true),内核会自动从绑定中将其去除。当向系统添加新网卡时(替换插槽中的硬件),udev 会使用基于总线的网卡设备名称规则将其重命名为从属接口的名称,并为其调用 ifup 命令。ifup 命令会自动调用以将新网卡加入绑定。
“链路聚合”属于通用术语,指组合(或聚合)网络连接以提供逻辑层。有时,您还会看到“通道聚合”、“以太网绑定”、“端口汇聚”等术语,这些同义词都是指同一个概念。
这个概念通常被称为“绑定”,最初是集成到 Linux 内核中的(请参见第 16.7 节 “设置绑定设备”了解最初的实现方式)。网络协作一词用来指代这个概念的新实现方式。
绑定和网络协作之间的主要差别在于,协作提供一组小型内核模块,由它们负责提供用于 teamd 实例的接口。其他一切都在用户空间中处理。这一点与最初的绑定实现方式不同,后者是将自己的所有功能都专门包含在内核中。
绑定和网络协作这两种实现方式可以并行使用。可将网络协作作为现有绑定实现方式的备选。它不会取代绑定。
网络协作可用于不同使用情况。稍后将会介绍其中两种最重要的使用情况,它们涉及:
不同网络设备之间的负载平衡。
从一个网络设备到另一个网络设备的故障转移(当其中一个设备出现故障时)。
目前没有用于支持创建协作设备的 YaST 模块。您需要手动配置网络协作。以下是适用于所有网络协作配置的一般过程:
确保已安装所有必需的包。安装包 libteam-tools 、 libteamdctl0 、 libteamdctl0 和 python-libteam 。
在 /etc/sysconfig/network/ 下创建一个配置文件,通常为 ifcfg-team0。如果您需要多个网络协作设备,请为它们指定依次递增的编号。
该配置文件包含若干变量,手册页中对这些变量做了说明(请参见 man ifcfg 和 man ifcfg-team)。
去除将用于协作设备的接口的配置文件(通常为 ifcfg-eth0 和 ifcfg-eth1)。
建议您先备份这两个文件,然后再将其去除。Wicked 将会使用协作的必要参数重新创建配置文件。
(可选)检查 Wicked 的配置文件中是否已包含所有内容:
wicked show-config
启动网络协作设备 team0:
wicked all ifup team0
如果您需要其他调试信息,请在 all 子命令后面使用 --debug all 选项。
检查网络协作设备的状态。通过执行以下命令可以完成该操作:
从 Wicked 获取 teamd 实例的状态:
wicked ifstatus --verbose team0
获取整个实例的状态:
teamdctl team0 state
获取 teamd 实例的 systemd 状态:
systemctl status teamd@team0
以上各命令将根据您的需要分别显示稍有不同的视图。
如果您之后需要对 ifcfg-team0 文件中的内容进行更改,请使用以下命令重新装载其配置:
wicked ifreload team0
请勿使用 systemctl 来启动或停止协作设备!而是使用如上所示的 wicked 命令。
负载平衡用于提高带宽。使用下面的配置文件可创建具有负载平衡功能的网络协作设备。继续过程 16.1, “一般过程”以设置设备。使用 teamdctl 检查输出。
STARTMODE=auto 1 BOOTPROTO=static 2 IPADDRESS="192.168.1.1/24" 2 IPADDR6="fd00:deca:fbad:50::1/64" 2 TEAM_RUNNER="loadbalance" 3 TEAM_LB_TX_HASH="ipv4,ipv6,eth,vlan" TEAM_LB_TX_BALANCER_NAME="basic" TEAM_LB_TX_BALANCER_INTERVAL="100" TEAM_PORT_DEVICE_0="eth0" 4 TEAM_PORT_DEVICE_1="eth1" 4 TEAM_LW_NAME="ethtool" 5 TEAM_LW_ETHTOOL_DELAY_UP="10" 6 TEAM_LW_ETHTOOL_DELAY_DOWN="10" 6
控制协作设备的启动。
如果您需要自己来控制设备(并阻止其自动启动),请将 | |
设置静态 IP 地址(此处对于 IPv4 指定
如果网络协作设备应该使用动态 IP 地址,请设置 | |
将 | |
指定应聚合以创建网络协作设备的一个或多个设备。 | |
定义链路监视器,以监视从属设备的状态。只有当设备已启动并可访问时,默认值
如果您需要确保连接的可信度更高,请使用 | |
定义链路启动(或关闭)与运行程序收到通知之间的延迟(以毫秒为单位)。 |
故障转移用于确保关键网络协作设备的高可用性,方法是纳入并行的备用网络设备。备用网络设备时刻都在运行,并在主设备出现故障时接替主设备。
使用以下配置文件可创建具有故障转移功能的网络协作设备。继续过程 16.1, “一般过程”以设置设备。使用 teamdctl 检查输出。
STARTMODE=auto 1 BOOTPROTO=static 2 IPADDR="192.168.1.2/24" 2 IPADDR6="fd00:deca:fbad:50::2/64" 2 TEAM_RUNNER=activebackup 3 TEAM_PORT_DEVICE_0="eth0" 4 TEAM_PORT_DEVICE_1="eth1" 4 TEAM_LW_NAME=ethtool 5 TEAM_LW_ETHTOOL_DELAY_UP="10" 6 TEAM_LW_ETHTOOL_DELAY_DOWN="10" 6
控制协作设备的启动。
如果您需要自己来控制设备(并阻止其自动启动),请将 | |
设置静态 IP 地址(此处对于 IPv4 指定
如果网络协作设备应该使用动态 IP 地址,请设置 | |
将 | |
指定应聚合以创建网络协作设备的一个或多个设备。 | |
定义链路监视器,以监视从属设备的状态。只有当设备已启动并可访问时,默认值
如果您需要确保连接的可信度更高,请使用 | |
定义链路启动(或关闭)与运行程序收到通知之间的延迟(以毫秒为单位)。 |