描述网络概念
目标
完成本节内容后,你能够描述服务器的网络寻址和路由的基本概念。
TCP/IP网络模型
TCP/IP网络模型是一套简化的、四层的抽象模型,描述了不同协议如何相互作用,以便计算机通过互联网将流量从一台机器发送到另一台机器。它是由RFC 1122《互联网主机要求--通信层》中规定的。这四个层是:
-
应用层
每个应用程序都有通信规范,以便客户端和服务器可以跨平台通信。常见的协议包括SSH(远程登录)、HTTPS(安全网络)、NFS或CIFS(文件共享)和SMTP(电子邮件传输)。
-
传输层
传输协议有TCP和UDP两种。TCP是一种可靠的面向连接的通信,而UDP是一种无连接的数据报协议。应用协议使用TCP或UDP端口。在/etc/services文件中可以找到常用的和注册的端口列表。
当一个数据包在网络上发送时,服务端口和IP地址的组合形成一个套接字。每个数据包都有一个源套接字和一个目的套接字。这些信息可以在监控和过滤时使用。
-
网络层
Internet,即网络层,将数据从源主机传送到目的主机。IPv4和IPv6协议是互联网层的协议。每个主机都有一个IP地址和一个前缀,用于确定网络地址。路由器是用来连接网络的。
-
链路层
链路层,即媒介接入层,提供与物理媒介的连接。最常见的网络类型是有线以太网(802.3)和无线WLAN(802.11)。每个物理设备都有一个硬件地址(MAC),用于识别本地网段上的数据包的目的地。
描述网络接口名称
系统上的每个网络接口都有一个名称,你可以用它来配置和识别。
旧版本的Red Hat Enterprise Linux为每个网络接口使用eth0、eth1和eth2等名称。eth0 是操作系统检测到的第一个网络端口,eth1 是第二个,以此类推。但是,随着设备的添加和删除,设备的检测和命名机制可能会改变哪个接口得到哪个名字。此外,PCIe标准并不保证启动时检测到PCIe设备的顺序,这可能会因为设备或系统启动时的变化而意外地改变设备的命名。
较新版本的Red Hat Enterprise Linux使用了不同的命名系统。网络接口的命名不是基于检测顺序,而是根据固件、PCI总线拓扑结构和网络设备类型等信息来分配网络接口的名称。
网络接口名称以接口类型开头:
- 以太网接口以en开头
- WLAN接口以wl开头
- WWAN接口以www开头
类型后的其余接口名称将根据服务器固件提供的信息或设备在PCI拓扑结构中的位置来确定:
- oN表示这是一个板载设备,服务器的固件为该设备提供了索引号N。所以eno1是板载以太网设备1。很多服务器不会提供这个信息。
- sN表示该设备在PCI热插拔槽N中,所以ens3是PCI热插拔槽3中的以太网卡。
- pMsN表示这是总线M插槽N中的PCI设备,所以wlp4s0是PCI总线4插槽0中的WLAN卡。如果该卡是一个多功能设备(可能是具有多个端口的以太网卡,或者是具有以太网加上一些其他功能的设备),你可能会看到设备名称中加上fN。所以enp0s1f0就是插槽1中总线0上的以太网卡的功能0。也可能有第二个名为enp0s1f1的接口是同一设备的功能1。
持久命名意味着,一旦你知道系统上的网络接口的名称是什么,你也知道它以后不会改变。这样做的代价是,你不能假设一个系统有一个接口就会把这个接口命名为eth0。
IPv4网络
IPv4是当今互联网上使用的主要网络协议。你至少要对IPv4网络有一个基本的了解,才能管理好你的服务器的网络通信。
IPv4地址
IPv4地址是一个32位的数字,通常用十进制表示,是四个8位八位数,值从0到255,用圆点隔开。地址分为两部分:网络部分和主机部分。在同一个子网中的所有主机,在没有路由器的情况下,都可以直接相互通话,网络部分是同一个子网中的主机;网络部分标识着子网。同一子网上的两台主机不能有相同的主机部分;主机部分标识着子网上的某一台主机。
在现代互联网中,IPv4子网的大小是可变的。要知道IPv4地址中哪一部分是网络部分,哪一部分是主机部分,管理员必须知道分配给子网的子网掩码。子网掩码表示IPv4地址有多少位属于子网。主机部分的可用位数越多,子网中的主机就越多。
子网上可能的最低地址(主机部分为二进制中的所有零)有时被称为网络地址。在IPv4中,子网上可能的最高地址(主机部分为二进制中的所有1)用于广播信息,称为广播地址。
网络掩码有两种表示形式。旧的网络掩码语法使用24位表示网络部分,读作255.255.255.0。一种较新的语法,称为CIDR符号,指定网络前缀为/24。这两种形式传达的信息是相同的,即IP地址中的前导位数对网络地址的贡献。
下面的例子说明了IP地址、前缀(netmask)、网络部分和主机部分的关系。
计算192.168.1.107/24的网络地址
主机地址 | 192.168.1.107 | 11000000.10101000.00000001.01101011 |
---|---|---|
网络前缀 | /24 (255.255.255.0) | 11111111.11111111.11111111.00000000 |
网络地址 | 192.168.1.0 | 11000000.10101000.00000001.00000000 |
广播地址 | 192.168.1.255 | 11000000.10101000.00000001.11111111 |
计算10.1.1.1.1.18/8的网络地址
主机地址 | 10.1.1.18 | 00001010.00000001.00000001.00010010 |
---|---|---|
网络前缀 | /8 (255.0.0.0) | 11111111.00000000.00000000.00000000 |
网络地址 | 10.0.0.0 | 00001010.00000000.00000000.00000000 |
广播地址 | 10.255.255.255 | 00001010.11111111.11111111.11111111 |
计算172.16.181.23/19的网络地址
主机地址 | 172.168.181.23 | 10101100.10101000.10110101.00010111 |
---|---|---|
网络前缀 | /19 (255.255.224.0) | 11111111.11111111.11100000.00000000 |
网络地址 | 172.168.160.0 | 10101100.10101000.10100000.00000000 |
广播地址 | 172.168.191.255 | 10101100.10101000.10111111.11111111 |
特殊地址127.0.0.1总是指向本地系统("localhost"),而网络127.0.0.0.0/8属于本地系统,这样它就可以使用网络协议与自己对话。
IPv4路由
无论是使用IPv4还是IPv6,网络流量都需要从主机到主机,从网络到网络,网络流量需要从主机到主机,从网络到网络。每台主机都有一个路由表,它告诉它如何为特定网络路由流量。路由表条目列出了目标网络、发送流量时要使用哪个接口,以及将消息中继到最终目的地所需的任何中间路由器的IP地址。与网络流量的目的地匹配的路由表条目用于路由。如果两个条目匹配,则使用前缀最长的那个条目。
如果网络流量与更具体的路由不匹配,路由表中通常会有一个条目,用于指向整个IPv4互联网的默认路由。0.0.0.0.0.0/0.这个默认路由指向一个可到达的子网(即在主机路由表中拥有更具体的路由的子网)上的路由器。
如果路由器收到的流量不是给它发地址的,它不会像普通主机一样忽略它,而是根据自己的路由表转发流量。这可能会把流量直接发送到目的地主机(如果路由器刚好在目的地的子网上),也可能转发到另一个路由器上。这个转发过程一直持续到流量到达最终目的地。
![Figure 12.2: Example network topology](https://upload-images.jianshu.io/upload_images/3847537-ad539f03d4d7ad68.png?imageMogr2/auto-orient/strip%7C[图片上传中...(image-20200416170658876.png-221638-1587186893267-0)]
imageView2/2/w/1240)
路由表示例
目的地 | 接口 | 路由器 |
---|---|---|
192.0.2.0/24 | wlo1 | |
192.168.5.0/24 | enp3s0 | |
0.0.0.0/0 (默认) | enp3s0 | 192.168.5.254 |
在这个例子中,来自这个主机的IP地址192.0.2.102的流量通过wlo1无线接口直接传输到该目的地,因为它与192.0.2.0/24路由最匹配。IP地址192.168.5.3的流量通过enp3s0以太网接口直接传输到该目的地,因为它与192.168.5.0/24路由最匹配。
IP地址10.2.24.1的流量从enp3s0以太网接口传输到192.168.5.254的路由器,路由器将该流量转发到最终目的地。该流量与0.0.0.0.0.0/0路由最匹配,因为在这个主机的路由表中没有更具体的路由。路由器使用自己的路由表来决定下一个流量转发到哪里。
IPv4地址和路由配置
服务器可以在启动时从DHCP服务器自动配置其IPv4网络设置。本地客户端守护进程查询服务器和网络设置的链接,并获得一个租约,在特定时间内使用这些设置。如果客户机不定期请求续租,可能会丢失其网络配置设置。
作为替代方案,您可以将服务器配置为使用静态网络配置。在这种情况下,网络设置会从本地配置文件中读取。你必须从网络管理员那里获得正确的设置,并根据需要手动更新,以避免与其他服务器冲突。
IPV6网络
IPv6的目的是作为IPv4网络协议的最终替代者。由于越来越多的生产系统使用IPv6寻址,你需要了解它的工作原理。例如,许多ISP已经将IPv6用于内部通信和设备管理网络,以保留稀缺的IPv4地址供客户使用。
在双栈模型中,IPv6也可以与IPv4并行使用。在这种配置下,一个网络接口可以有一个或多个IPv6地址,也可以有IPv4地址。Red Hat Enterprise Linux 默认以双栈模式运行。
IPv6地址
IPv6地址是一个128位数字,通常表示为八个十六进制半字节(半字节)组成的八个冒号分隔的组。 每个半字节代表IPv6地址的四位,因此每一组代表IPv6地址的16位。
2001:0db8:0000:0010:0000:0000:0000:0001
为了使IPv6地址更容易写,冒号分隔的组中的前导零不需要写。但是,每个冒号分隔组中至少要写一个十六进制数字。
2001:db8:0:10:0:0:0:1
由于带长串零的地址是很常见的,所以一个或多个连续的零组只能和一个::块组合在一起。
2001:db8:0:10::1
注意,在这些规则下, 2001:db8::0010:0:0:0:1将是另一种不那么方便的写法,例如地址的示例地址。但它是同一个地址的有效表示,这可能会让刚接触IPv6的管理员感到困惑。写出一致可读地址的一些技巧。
- 在一个组中取消前导零。
- 使用:: 尽可能地缩短。
- 如果一个地址包含两个连续的零组,长度相等,那么最左边的零组最好缩短为::,最右边的零组最好缩短为:0:。
- 虽然是允许的,但不要使用::来缩短一组零。使用:0: 代替,并保存::用于连续的零组。
- 对于十六进制数字a到f,始终使用小写字母。
当在IPv6地址后加入TCP或UDP网络端口时,一定要把IPv6地址用方括号括起来,这样就不会让端口看起来像是地址的一部分。
[2001:db8:0:10::1]:80
IPv6子网
一个正常的IPv6单播地址分为两部分:网络前缀和接口ID。网络前缀标识着子网。同一子网上的两个网络接口不能有相同的接口ID;接口ID标识了子网上的某一特定接口。
与IPv4不同的是,IPv6有一个标准的子网掩码,几乎所有的普通地址都采用了这个标准的子网掩码,即/64。在这种情况下,地址的一半是网络前缀,一半是接口ID。这意味着一个子网可以容纳多少台主机,就可以容纳多少台主机。
通常情况下,网络提供商会分配一个较短的前缀给一个组织,例如/48。这就把网络的其余部分留给该分配的前缀分配子网(总是长度为/64)。对于/48的分配,这就给子网留出了16位(最多65536个子网)。
常见的IPv6地址和网络
IPv6地址或网络 | PURPOSE | DESCRIPTION |
---|---|---|
::1/128 | localhost | IPv6相当于127.0.0.1/8,设置在环回接口上。 |
:: | 未指定的地址 | IPv6相当于0.0.0.0的IPv6。对于一个网络服务,这可能表明它正在监听所有配置的IP地址。 |
::/0 | 默认路由(IPv6 网络) | IPv6相当于0.0.0.0/0,路由表中的默认路由与这个网络相匹配;这个网络的路由器是所有没有更好的路由的流量的发送地。 |
2000::/3 | 全球单播地址 | "Normal"IPv6地址目前由IANA从这个空间分配。这相当于2000::/16到3fff::/16之间的所有网络。 |
fd00::/8 | 唯一的本地地址(RFC 4193) | IPv6没有直接等同于RFC 1918私有地址空间的RFC 1918私有地址空间,尽管这一点很接近。一个站点可以使用这些来在组织内部自我分配一个私有可路由的IP地址空间,但这些网络不能在全球互联网上使用。站点必须随机地从这个空间中选择一个/48,但它可以正常地将分配到/64网络中的子网。 |
fe80::/10 | Link-local addresses | 每个IPv6接口都会自动配置一个link-local单播地址,该地址只在fe80::/64网络上的本地链路上工作。 但是,整个 fe80::/10 范围内的整个 fe80:/10 都是预留给本地链路将来使用的。这将在后面详细讨论。 |
ff00::/8 | 多播 | IPv6相当于224.0.0.0.0.0/4.多播是用来同时向多台主机传输的,在IPv6中,由于没有广播地址,所以特别重要。 |
IPv6中的link-local地址是一个不可转发的地址,仅用于与特定网络链路上的主机对话。系统中的每个网络接口都会自动配置一个链接-本地地址,在fe80:::/64网络中,每一个网络接口都有一个链接-本地地址。为了确保其唯一性,链路本地地址的接口ID由网络接口的以太网硬件地址构造而成。将48位的MAC地址转换为64位的接口ID的通常步骤是将MAC地址的第7位倒置,并在其两个中间字节之间插入ff:fe80:::fe。
网络前缀: fe80:::/64
MAC 地址: 00:11:22:aa:bb:cc
链路本地地址: fe80::211:22ff:feaa:bbcc/64
例如,使用ping6来ping链路本地地址fe80:::211:22ff:22ff:feaa:bbcc,使用连接到ens3网络接口的链路,正确的命令语法如下。
[user@host ~]$ ping6 fe80::211:22ff:feaa:bbcc%ens3
多播允许一个系统向一个特殊的IP地址发送流量,由多个系统接收。它与广播不同,因为只有网络上的特定系统才能接收到流量。它也不同于IPv4中的广播,因为一些组播流量可能会被路由到其他子网,这取决于网络路由器和系统的配置。
与IPv4相比,组播在IPv6中的作用更大,因为IPv6中没有广播地址。IPv6中的一个关键组播地址是ff02::1,即所有节点的链路本地地址。Ping这个地址会向链路上的所有节点发送流量。链路范围组播地址(从ff02::8开始)需要指定一个范围标识符,就像链路本地地址一样。
[user@host ~]$ ping6 ff02::1%ens3
PING ff02::1%ens3(ff02::1) 56 data bytes
64 bytes from fe80::211:22ff:feaa:bbcc: icmp_seq=1 ttl=64 time=0.072 ms
64 bytes from fe80::200:aaff:fe33:2211: icmp_seq=1 ttl=64 time=102 ms (DUP!)
64 bytes from fe80::bcd:efff:fea1:b2c3: icmp_seq=1 ttl=64 time=103 ms (DUP!)
64 bytes from fe80::211:22ff:feaa:bbcc: icmp_seq=2 ttl=64 time=0.079 ms
...output omitted...
IPv6 地址配置
IPv4有两种方式来配置网络接口上的地址。网络地址可以由管理员在接口上手动配置,也可以使用DHCP从网络上动态配置。IPv6也支持手动配置,也支持动态配置两种方式,其中一种是DHCPv6。
和IPv4一样,静态IPv6地址的接口ID可以随意选择,就像IPv4一样。在IPv4中,网络上有两个地址不能使用:子网中的最低地址和子网中的最高地址。在IPv6中,以下接口ID是保留的,不能用于主机上的普通网络地址。
- 链路上所有路由器使用的全零标识符 0000:0000:0000:0000 ("子网路由器 anycast")。(对于2001:db8:::/64网络,这将是2001:db8::)。
- 识别码fdff:ffff:ffff:ff80至fdff:ffff:ffff:ffff;
DHCPv6的工作原理与IPv4的DHCP不同,因为没有广播地址。本质上,主机从其链路本地地址发送一个DHCPv6请求到ff02::1:2端口547/UDP,即all-DHCP-servers链路本地多播组。然后,DHCPv6服务器通常会向客户端链路本地地址的546/UDP端口发送包含相应信息的回复。Red Hat Enterprise Linux 8中的dhcp包提供了对DHCPv6服务器的支持。
除了DHCPv6之外,IPv6还支持第二种动态配置方法,称为无状态地址自动配置(SLAAC)。使用SLAAC,主机正常地调出其接口的linklocal fe80::/64地址。然后,它向allrouters link-local组的链路本地多播组fff02:::2发送一个 "路由器请求"。本地链路上的IPv6路由器会用一个网络前缀和可能的其他信息响应主机的链路本地地址。然后,主机使用该网络前缀和接口ID,该接口ID的构造方式与链路本地地址的构造方式相同。路由器定期发送组播更新("路由器广告")以确认或更新它提供的信息。
Red Hat Enterprise Linux 8 中的 radvd 包允许基于 Red Hat Enterprise Linux 的 IPv6 路由器通过路由器广告提供 SLAAC。
一个典型的Red Hat Enterprise Linux 8机器通常也被配置为通过DHCP获取IPv4地址,通过DHCP获取IPv4地址。这可能导致当网络中添加了一个IPv6路由器时,机器会意外地获得IPv6地址。
有些IPv6部署将SLAAC和DHCPv6结合起来,使用SLAAC只提供网络地址信息,而DHCPv6则提供其他信息,例如要配置哪些DNS服务器和搜索域。
主机名和IP地址
如果总是要用IP地址来联系服务器,那就不方便了。一般来说,人类更愿意用名字来工作,而不是长长的难以记忆的数字字符串。所以Linux有很多机制将主机名称映射到IP地址,统称为名称解析。
一种方法是在每个系统的/etc/hosts文件中为每个名字设置一个静态条目。这需要你手动更新每个服务器的文件副本。
对于大多数主机来说,你可以从一个叫做域名系统(DNS)的网络服务中查询主机名(或从地址中查询主机名)的地址。DNS是一个分布式的服务器网络,提供主机名与IP地址的映射。为了使名称服务发挥作用,主机需要指向一个命名服务器。这个命名服务器不需要在同一个子网中,只需要主机可以到达即可。这通常是通过 DHCP 或在名为 /etc/resolv.conf 的文件中的静态设置来配置。本章后面的章节将讨论如何配置名称解析。
验证网络配置
目标
完成本节后,你能够使用命令行工具测试和检查当前的网络配置。
收集网络接口信息
识别网络接口
ip link命令将列出系统上所有可用的网络接口:
[user@host ~]$ ip link show
1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens3: mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:00:00:0a brd ff:ff:ff:ff:ff:ff
3: ens4: mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:00:00:1e brd ff:ff:ff:ff:ff:ff
在前面的例子中,服务器有三个网络接口:lo,即连接到服务器本身的环回设备,以及两个以太网接口,即ens3和ens4。
为了正确配置每个网络接口,你需要知道哪个接口连接到哪个网络。在许多情况下,你会知道连接到每个网络的接口的MAC地址,这可能是因为物理上打印在网卡或服务器上,也可能是因为它是虚拟机,你知道它是如何配置的。每个接口的link/ether之后都会列出设备的MAC地址。所以你知道MAC地址为52:54:00:00:00:0a的网卡就是网络接口 ens3。
显示IP地址
使用 ip 命令查看设备和地址信息。一个网络接口可以有多个IPv4或IPv6地址。
[user@host ~]$ ip addr show ens3
2: ens3: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:00:00:0b brd ff:ff:ff:ff:ff:ff
inet 192.0.2.2/24 brd 192.0.2.255 scope global ens3
valid_lft forever preferred_lft forever
inet6 2001:db8:0:1:5054:ff:fe00:b/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fe00:b/64 scope link
valid_lft forever preferred_lft forever
一个活动接口是UP。
链路/以太网行指定设备的硬件(MAC)地址。
显示一个IPv4地址,它的网络前缀长度和范围。
inet6行显示的是一个IPv6地址,它的网络前缀长度和范围。这个地址具有全局范围,通常使用的是全局范围。
这一行inet6显示接口有一个IPv6地址的链路范围,只能用于本地以太网链路上的通信。
显示性能统计
ip命令也可以用来显示有关网络性能的统计数据。每个网络接口的计数器可用于识别网络问题的存在。计数器记录了诸如接收(RX)和传输(TX)数据包的数量、数据包错误和丢弃的数据包等统计数据。
[user@host ~]$ ip -s link show ens3
2: ens3: mtu 1500 qdisc pfifo_fast state UP qlen
1000
link/ether 52:54:00:00:00:0a brd ff:ff:ff:ff:ff:ff RX: bytes packets errors dropped overrun mcast
269850 2931 0 0 0 0
TX: bytes packets errors dropped carrier collsns
300556 3250 0 0 0 0
检查主机之间的连接性
ping命令用于测试连接性。该命令将继续运行,直到按下Ctrl+C为止,除非给出选项限制发送的数据包数量。
[user@host ~]$ ping -c3 192.0.2.254
PING 192.0.2.1 (192.0.2.254) 56(84) bytes of data.
64 bytes from 192.0.2.254: icmp_seq=1 ttl=64 time=4.33 ms
64 bytes from 192.0.2.254: icmp_seq=2 ttl=64 time=3.48 ms
64 bytes from 192.0.2.254: icmp_seq=3 ttl=64 time=6.83 ms
--- 192.0.2.254 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 3.485/4.885/6.837/1.424 ms
ping6 命令是 Red Hat Enterprise Linux 中 ping 的 IPv6 版本。它通过IPv6进行通信,并接收IPv6地址,但其他方面的工作方式与ping一样。
[user@host ~]$ ping6 2001:db8:0:1::1
PING 2001:db8:0:1::1(2001:db8:0:1::1) 56 data bytes
64 bytes from 2001:db8:0:1::1: icmp_seq=1 ttl=64 time=18.4 ms
64 bytes from 2001:db8:0:1::1: icmp_seq=2 ttl=64 time=0.178 ms
64 bytes from 2001:db8:0:1::1: icmp_seq=3 ttl=64 time=0.180 ms
^C
--- 2001:db8:0:1::1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.178/6.272/18.458/8.616 ms
[user@host ~]$
当你ping链路本地地址和链路本地全节点组(ff02:::1)时,必须用范围区标识符(如ff02:::1%ens3)明确指定要使用的网络接口。如果忽略了这一点,会显示错误的connect: 无效参数,将显示错误connect: Invalid argument。
Pinging ff02::1可以帮助查找本地网络上的其他IPv6节点。
[user@host ~]$ ping6 ff02::1%ens4
PING ff02::1%ens4(ff02::1) 56 data bytes
64 bytes from fe80::78cf:7fff:fed2:f97b: icmp_seq=1 ttl=64 time=22.7 ms
64 bytes from fe80::f482:dbff:fe25:6a9f: icmp_seq=1 ttl=64 time=30.1 ms (DUP!)
64 bytes from fe80::78cf:7fff:fed2:f97b: icmp_seq=2 ttl=64 time=0.183 ms
64 bytes from fe80::f482:dbff:fe25:6a9f: icmp_seq=2 ttl=64 time=0.231 ms (DUP!)
^C
--- ff02::1%ens4 ping statistics ---
2 packets transmitted, 2 received, +2 duplicates, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 0.183/13.320/30.158/13.374 ms [user@host ~]$ ping6 -c 1 fe80::f482:dbff:fe25:6a9f%ens4
PING fe80::f482:dbff:fe25:6a9f%ens4(fe80::f482:dbff:fe25:6a9f) 56 data bytes
64 bytes from fe80::f482:dbff:fe25:6a9f: icmp_seq=1 ttl=64 time=22.9 ms
--- fe80::f482:dbff:fe25:6a9f%ens4 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 22.903/22.903/22.903/0.000 ms
记住,IPv6链路本地地址可以被其他主机在同一链路上使用,就像普通地址一样。
[user@host ~]$ ssh fe80::f482:dbff:fe25:6a9f%ens4
user@fe80::f482:dbff:fe25:6a9f%ens4's password:
Last login: Thu Jun 5 15:20:10 2014 from host.example.com
[user@server ~]$
路由故障排除
网络路由很复杂,有时流量的表现并不像你所期望的那样。以下是一些有用的诊断工具。
显示路由表
使用带路由选项的 ip 命令来显示路由信息。
[user@host ~]$ ip route
default via 192.0.2.254 dev ens3 proto static metric 1024
192.0.2.0/24 dev ens3 proto kernel scope link src 192.0.2.2
10.0.0.0/8 dev ens4 proto kernel scope link src 10.0.0.11
这显示的是IPv4路由表。所有发送到 10.0.0.0/8 网络的数据包都是通过设备ens4直接发送到目的地。所有发送到e 192.0.2.0/24网络的数据包通过设备 ens3直接发送到目的地。其他所有的数据包都是通过设备ens3发送到位于192.0.2.254的默认路由器。
添加-6选项,以显示IPv6路由表。
[user@host ~]$ ip -6 route
unreachable ::/96 dev lo metric 1024 error -101
unreachable ::ffff:0.0.0.0/96 dev lo metric 1024 error -101
2001:db8:0:1::/64 dev ens3 proto kernel metric 256
unreachable 2002:a00::/24 dev lo metric 1024 error -101
unreachable 2002:7f00::/24 dev lo metric 1024 error -101
unreachable 2002:a9fe::/32 dev lo metric 1024 error -101
unreachable 2002:ac10::/28 dev lo metric 1024 error -101
unreachable 2002:c0a8::/32 dev lo metric 1024 error -101
unreachable 2002:e000::/19 dev lo metric 1024 error -101
unreachable 3ffe:ffff::/32 dev lo metric 1024 error -101
fe80::/64 dev ens3 proto kernel metric 256
default via 2001:db8:0:1::ffff dev ens3 proto static metric 1024
在这个例子中,忽略无法到达的路由,这些路由指向未使用的网络。这样就剩下了三条路由:
- 2001:db8:0:1::/64网络,使用ens3接口(估计该网络上有一个地址)。
- fe80::/64网络中,使用ens3接口,为链路本地地址。在一个有多个接口的系统中,每个接口都有一条通往fe80::/64的路由,每个接口的链接-本地地址都有一条路由。
- 通过路由器2001:db8:0:1::ffff的路由器,通过ens3设备可以到达IPv6互联网上所有的网络(::/0网络),在系统中没有更具体的路由,默认的路由。
Traffic追踪路由路径
要追踪网络流量通过多个路由器到达远程主机的路径,请使用 traceroute 或 tracepath。这可以确定问题是出在某个路由器上,还是出在中间路由器上。这两个命令都默认使用UDP数据包来跟踪路径;但是,许多网络会阻止UDP和ICMP流量。traceroute命令可以选择使用UDP(默认)、ICMP(-I)或TCP(-T)数据包追踪路径。但是,通常情况下,traceroute命令并不是默认安装的。
[user@host ~]$ tracepath access.redhat.com
...output omitted...
4: 71-32-28-145.rcmt.qwest.net 48.853ms asymm 5
5: dcp-brdr-04.inet.qwest.net 100.732ms asymm 7
6: 206.111.0.153.ptr.us.xo.net 96.245ms asymm 7
7: 207.88.14.162.ptr.us.xo.net 85.270ms asymm 8
8: ae1d0.cir1.atlanta6-ga.us.xo.net 64.160ms asymm 7
9: 216.156.108.98.ptr.us.xo.net 108.652ms
10: bu-ether13.atlngamq46w-bcr00.tbone.rr.com 107.286ms asymm 12
...output omitted...
tracepath输出中的每一行都代表了数据包在源和最终目的地之间经过的路由器或跳数。附加的信息,包括往返时间(RTT)和最大传输单位(MTU)大小的任何变化。不对称指示表示流量到达该路由器后,使用不同的(不对称)路由从该路由器返回。所示的路由器是用于出站流量,而不是返回流量。
tracepath6和traceroute -6命令相当于IPv6的tracepath和traceroute。
[user@host ~]$ tracepath6 2001:db8:0:2::451
1?: [LOCALHOST] 0.091ms pmtu 1500
1: 2001:db8:0:1::ba 0.214ms
2: 2001:db8:0:1::1 0.512ms
3: 2001:db8:0:2::451 0.559ms reached
Resume: pmtu 1500 hops 3 back 3
故障排除端口和服务
TCP服务使用套接字作为通信的终端,由IP地址、协议和端口号组成。服务通常在标准端口上监听,而客户端使用随机的可用端口。在 /etc/services 文件中列出了标准端口的著名名称。
ss命令是用来显示socket统计的。ss命令是用来取代旧的工具netstat,它是net-tools软件包中的一部分,对于一些系统管理员来说,可能比较熟悉,但并不是一直都安装了它。
[user@host ~]$ ss -ta
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:sunrpc *:*
LISTEN 0 128 *:ssh *:*
LISTEN 0 100 127.0.0.1:smtp *:*
LISTEN 0 128 *:36889 *:*
ESTAB 0 0 172.25.250.10:ssh 172.25.254.254:59392 LISTEN 0 128 :::sunrpc :::*
LISTEN 0 128 :::ssh :::*
LISTEN 0 100 ::1:smtp :::*
LISTEN 0 128 :::34946 :::*
用于 SSH 的端口是在所有 IPv4 地址上监听。在引用IPv4地址或端口时,"*"表示 "所有"。
SMTP使用的端口是在127.0.0.0.1 IPv4环回接口上监听。
已建立的SSH连接是在172.25.250.10接口上,来自一个地址为172.25.254.254的系统。
用于SSH的端口是在所有IPv6地址上监听。使用":: "语法来表示所有的IPv6接口。
用于SMTP的端口是在::1 IPv6环回接口上监听的端口
ss和netstat的选项
选项 | 描述 |
---|---|
-n | 接口和端口显示数字而不是名称。 |
-t | 显示TCP套接字。 |
-u | 显示UDP套接字。 |
-l | 只显示监听状态的套接字。 |
-a | 显示所有((listening and established)套接字。 |
-p | 显示进程正在用的套接字。 |
-A inet | 显示inet地址族的活动连接(但不是监听套接字)。 也就是说,忽略本地UNIX域套接字。 对于 ss,同时显示 IPv4 和 IPv6 连接。对于 netstat,只显示 IPv4 连接。(netstat -A inet6显示IPv6连接,而netstat -46同时显示IPv4和IPv6。) |
从命令行配置网络
目标
完成本节内容后,您应该能够使用 nmcli 命令管理网络设置和设备。
描述网络管理员的概念
NetworkManager 是一个监控和管理网络设置的守护进程。除了守护进程之外,还有一个 GNOME 通知区 applet 提供网络状态信息。命令行和图形化工具可以与NetworkManager对话,并将配置文件保存在/etc/sysconfig/network-scripts目录下。
- 一个设备就是一个网络接口。
- 连接是一个可以为设备配置的设置的集合。
- 任何一个设备一次只能激活一个连接。多个连接可以被不同设备使用,或允许更改同一设备的配置。如果需要临时更改网络设置,可以更改设备的哪个连接是活动的,而不是更改连接的配置。例如,笔记本电脑上的无线网络接口的设备可能在工作场所的无线网络和家庭的无线网络使用不同的连接。
- nmcli工具用于从命令行创建和编辑连接文件。
查看网络信息
nmcli dev状态命令显示所有网络设备的状态。
[user@host ~]$ nmcli dev status
DEVICE TYPE STATE CONNECTION
eno1 ethernet connected eno1
ens3 ethernet connected static-ens3
eno2 ethernet disconnected --
lo loopback unmanaged --
nmcli con show命令显示所有连接的列表。要只列出活动的连接,请添加 --active 选项。
[user@host ~]$ nmcli con show
NAME UUID TYPE DEVICE
eno2 ff9f7d69-db83-4fed-9f32-939f8b5f81cd 802-3-ethernet --
static-ens3 72ca57a2-f780-40da-b146-99f71c431e2b 802-3-ethernet ens3
eno1 87b53c56-1f5d-4a29-a869-8a7bdaf56dfa 802-3-ethernet eno1
[user@host ~]$ nmcli con show --active
NAME UUID TYPE DEVICE
static-ens3 72ca57a2-f780-40da-b146-99f71c431e2b 802-3-ethernet ens3
eno1 87b53c56-1f5d-4a29-a869-8a7bdaf56dfa 802-3-ethernet eno1
增加网络连接
nmcli con add命令用于添加新的网络连接。下面的nmcli con add命令的示例是假设被添加的网络连接的名称还没有被使用。
下面的命令为接口eno2添加了一个名为eno2的新连接,它使用DHCP获取IPv4网络信息,并在启动时自动连接。它还通过监听本地链路上的路由器广告来获取IPv6网络设置。配置文件的名称基于con-name选项的值,即eno2,并保存到/etc/ sysconfig/network-scripts/ifcfg-eno2文件中。
[root@host ~]# nmcli con add con-name eno2 type ethernet ifname eno2
接下来的例子为eno2设备创建了一个静态IPv4地址的eno2连接,使用IPv4地址和网络前缀192.168.0.5/24和默认网关192.168.0.254,但在启动时仍然会自动连接,并将其配置保存到同一个文件中。由于屏幕大小的限制,请用shell \转义结束第一行,然后在下一行完成命令。
[root@host ~]# nmcli con add con-name eno2 type ethernet ifname eno2 \
> ip4 192.168.0.5/24 gw4 192.168.0.254
最后这个例子为eno2设备创建了一个具有静态IPv6和IPv4地址的eno2连接,使用IPv6地址和网络前缀2001:db8:0:1::c000:207/64和默认的IPv6网关2001:db8:0:1::1,以及IPv4地址和网络前缀 192.0.2.7/24和默认的IPv4网关192.0.2.1,但在启动时仍然会自动连接,并将其配置保存到/etc/sysconfig/network-scripts/ifcfg-eno2中。由于屏幕大小的限制,请用shell \转义结束第一行,然后在下一行完成命令。
[root@host ~]# nmcli con add con-name eno2 type ethernet ifname eno2 \
> ip6 2001:db8:0:1::c000:207/64 gw6 2001:db8:0:1::1 ip4 192.0.2.7/24 gw4 192.0.2.1
控制网络连接
nmcli con up name 命令会激活它绑定的网络接口上的连接名。注意,该命令使用的是连接的名称,而不是网络接口的名称。记住,nmcli con show 命令显示的是所有可用连接的名称。
[root@host ~]# nmcli con up static-ens3
nmcli dev disconnect device 命令可以断开网络接口设备的连接,并将其带下。该命令可以缩写为nmcli dev dis device。
[root@host ~]# nmcli dev dis ens3
修改网络连接设置
NetworkManager的连接有两种设置。有静态的连接属性,由管理员配置并存储在/etc/sysconfig/ network-scripts/ifcfg-的配置文件中。也有可能是活动连接数据,连接从DHCP服务器上获取的,但这些数据并不持久存储。
要列出一个连接的当前设置,请运行 nmcli con show name 命令,其中 name 是连接的名称。小写的设置是管理员可以更改的静态属性。所有大写的设置是临时使用的活动设置。
[root@host ~]# nmcli con show static-ens3
connection.id: static-ens3
connection.uuid: 87b53c56-1f5d-4a29-a869-8a7bdaf56dfa connection.interface-name: --
connection.type: 802-3-ethernet
connection.autoconnect: yes
connection.timestamp: 1401803453
connection.read-only: no
connection.permissions:
connection.zone: --
connection.master: --
connection.slave-type: --
connection.secondaries:
connection.gateway-ping-timeout: 0
802-3-ethernet.port: --
802-3-ethernet.speed: 0
802-3-ethernet.duplex: --
802-3-ethernet.auto-negotiate: yes
802-3-ethernet.mac-address: CA:9D:E9:2A:CE:F0
802-3-ethernet.cloned-mac-address: --
802-3-ethernet.mac-address-blacklist:
802-3-ethernet.mtu: auto
802-3-ethernet.s390-subchannels:
802-3-ethernet.s390-nettype: --
802-3-ethernet.s390-options:
ipv4.method: manual
ipv4.dns: 192.168.0.254 i
pv4.dns-search: example.com
ipv4.addresses: { ip = 192.168.0.2/24, gw =
192.168.0.254 }
ipv4.routes:
ipv4.ignore-auto-routes: no
ipv4.ignore-auto-dns: no
ipv4.dhcp-client-id: --
ipv4.dhcp-send-hostname: yes
ipv4.dhcp-hostname: --
ipv4.never-default: no
ipv4.may-fail: yes
ipv6.method: manual
ipv6.dns: 2001:4860:4860::8888
ipv6.dns-search: example.com
ipv6.addresses: { ip = 2001:db8:0:1::7/64, gw = 2001:db8:0:1::1 }
ipv6.routes:
ipv6.ignore-auto-routes: no
ipv6.ignore-auto-dns: no
ipv6.never-default: no
ipv6.may-fail: yes
ipv6.ip6-privacy: -1 (unknown)
ipv6.dhcp-hostname: --
...output omitted...
nmcli con mod name命令用于更改连接的设置。这些更改也会保存在/etc/sysconfig/network-scripts/ifcfg-name文件中。可用的设置在 nm-settings(5) man page 中有文档。
设置IPv4地址为192.0.2.2/24,默认网关为192.0.2.254,连接static-ens3:
[root@host ~]# nmcli con mod static-ens3 ipv4.addresses "192.0.2.2/24 192.0.2.254"
将IPv6地址设置为2001:db8:0:1::a00:1/64,默认网关设置为2001:db8:0:1::1,连接static-ens3。
[root@host ~]# nmcli con mod static-ens3 ipv6.address "2001:db8:0:1::a00:1/64
2001:db8:0:1::1"
如果一个从DHCPv4服务器获取IPv4信息的连接只从静态配置文件中获取IPv4信息,那么IPv4.method的设置也应该从auto改为manual。
同样,如果一个通过SLAAC或DHCPv6服务器获取IPv6信息的连接只从静态配置文件中获取信息,那么设置ipv6.method也应该从auto或dhcp改为 manual.。
否则,当连接被激活时,可能会挂起或不能成功完成连接,或者除了静态地址外,还可能从DHCP获得IPv4地址,或者从DHCPv6或SLAAC获得IPv6地址。
一些设置可能有多个值。通过在设置名称的开头添加+或-符号,可以将一个特定的值添加到列表中或从列表中删除。
删除网络连接
nmcli con del name命令从系统中删除命名的连接名称,将其与设备断开连接,并删除文件/etc/sysconfig/network-scripts/ifcfg-name。
[root@host ~]# nmcli con del static-ens3
谁可以修改网络设置?
root用户可以使用nmcli进行任何必要的网络配置更改。
但是,在本地控制台登录的普通用户也可以对系统进行许多网络配置的更改。他们必须在系统的键盘上登录到基于文本的虚拟控制台或图形化桌面环境中,才能获得这种控制。这背后的逻辑是,如果有人在计算机的控制台中实际存在,那么很可能是作为工作站或笔记本电脑使用,他们可能需要随意配置、激活和停用无线或有线网络接口。相比之下,如果系统是数据中心中的服务器,一般情况下,在本地登录到机器本身的用户应该是管理员。
使用ssh登录的普通用户在没有成为root的情况下是没有权限更改网络权限的。
您可以使用 nmcli gen permissions 命令查看您当前的权限。
命令总结
下表列出了本节中讨论的 nmcli 关键命令。
COMMAND | 作用 |
---|---|
nmcli dev status | 显示所有网络接口的网络管理员状态。 |
nmcli con show | 列出所有连接。 |
nmcli con show name | 列出连接name的当前设置。 |
nmcli con add con-name name | 添加一个新的连接,名为name。 |
nmcli con mod name | 修改连接name。 |
nmcli con reload | 重新加载配置文件(手动编辑后有用)。 |
nmcli con up name | 激活连接name。 |
nmcli dev dis dev | 停用和断开网络接口dev上的当前连接。 |
nmcli con del name | 删除连接name及其配置文件。 |
编辑网络配置文件
目标
完成本节内容后,你能够通过编辑配置文件来修改网络配置。
描述连接配置文件
默认情况下,使用nmcli con mod name进行的更改会自动保存到/etc/ sysconfig/network-scripts/ifcfg-name。这个文件也可以用文本编辑器手动编辑。编辑后,运行nmcli con reload,以便NetworkManager读取配置更改。
出于向后兼容的原因,保存在该文件中的指令的名称和语法与 nm-settings(5) 的名称不同。下表将一些关键设置名称映射到ifcfg-*指令中。
nm-settings和ifcfg-指令的比较*
NMCLI CON MOD | IFCFG-* FILE | 效果 |
---|---|---|
ipv4.method manual | BOOTPROTO=none | 静态配置的IPv4地址。 |
ipv4.method auto | BOOTPROTO=dhcp | 从DHCPv4服务器查找配置设置。 如果还设置了静态地址,则在我们获得DHCPv4的信息之前,不会启用这些地址。 |
ipv4.addresses "192.0.2.1/24 192.0.2.254" | IPADDR0=192.0.2.1 PREFIX0=24 GATEWAY0=192.0.2.254 | 设置静态IPv4地址、网络前缀和默认网关。如果为连接设置了多个,那么ifcfg-*指令以1、2、3结束,而不是0,以此类推。 |
ipv4.dns 8.8.8.8 | DNS0=8.8.8.8 | 修改/etc/resolv.conf以使用此名称服务器。 |
ipv4.dns-search example.com | DOMAIN=example.com | 修改 /etc/resolv.conf,在搜索指令中使用这个域。 |
ipv4.ignore-auto-dns true | PEERDNS=no | 忽略来自DHCP服务器的DNS服务器信息。 |
ipv6.method manual | IPV6_AUTOCONF=no | 静态配置的IPv6地址。 |
ipv6.method auto | IPV6_AUTOCONF=yes | 使用SLAAC通过路由器通告配置网络设置。 |
ipv6.method dhcp | IPV6_AUTOCONF=no DHCPV6C=yes | 通过使用DHCPv6配置网络设置,但不是SLAAC。 |
ipv6.addresses "2001:db8::a/64 2001:db8::1" | IPV6ADDR=2001:db8::a/64 IPV6_DEFAULTGW=2001:db8 | 设置静态IPv6地址,:: 1网络前缀和默认网关。 如果为该连接设置了多个地址,则IPV6_SECONDARIES将使用双引号引起来的列表,该列表用空格分隔的地址/前缀定义。 |
ipv6.dns ... | DNS0= ... | 修改/etc/resolv.conf以使用此DNS服务器。 与IPv4完全相同。 |
ipv6.dns-search example.com | DOMAIN=example.com | 修改/etc/resolv.conf以在搜索指令中使用此域。 与IPv4完全相同。 |
ipv6.ignore-auto-dns true | IPV6_PEERDNS=no | 忽略来自DHCP服务器的DNS服务器信息。 |
connection.autoconnect yes | ONBOOT=yes | 在启动时自动激活此连接。 |
connection.id ens3 | NAME=ens3 | 此连接的名称。 |
connection.interface- name ens3 | DEVICE=ens3 | 该连接使用此名称绑定到网络接口。 |
802-3-ethernet.macaddress . . . | HWADDR= ... | 使用此MAC地址将连接绑定到网络接口。 |
修改网络配置
也可以通过直接编辑连接配置文件来配置网络。
连接配置文件控制着单个网络设备的软件接口。这些文件通常命名为/etc/sysconfig/network-scripts/ifcfg-name,其中name指的是配置文件控制的设备或连接的名称。以下是用于静态或动态IPv4配置的文件中的标准变量。
ifcfg 文件的 IPv4 配置选项
STATIC | DYNAMIC | EITHER |
---|---|---|
BOOTPROTO=none IPADDR0=172.25.250.10 PREFIX0=24 GATEWAY0=172.25.250.254 DEFROUTE=yes DNS1=172.25.254.254 |
BOOTPROTO=dhcp | DEVICE=ens3 NAME="static-ens3" ONBOOT=yes UUID=f3e8(...)ad3e USERCTL=yes |
在静态设置中,IP地址、前缀和网关的变量在末尾有一个数字。这样可以将多组值分配给接口。DNS变量也有一个数字,用于指定多个服务器时的查找顺序。
修改完配置文件后,运行nmcli con reload使NetworkManager读取配置更改。仍然需要重新启动接口才能使更改生效。
[root@host ~]# nmcli con reload
[root@host ~]# nmcli con down "static-ens3"
[root@host ~]# nmcli con up "static-ens3"
配置主机名和名称解析
目标
完成本节内容后,你能够配置一个服务器的静态主机名及其名称解析,并测试结果。
更改系统主机名
hostname命令显示或临时修改系统的全称主机名。
[root@host ~]# hostname [email protected]
可以在/etc/hostname文件中指定一个静态主机名。hostnamectl命令用来修改这个文件,可以用来查看系统完全合格的主机名的状态。如果这个文件不存在,则在接口分配了IP地址后,通过反向DNS查询来设置主机名。
[root@host ~]# hostnamectl set-hostname [email protected]
[root@host ~]# hostnamectl status
Static hostname: host.example.com
Icon name: computer-vm
Chassis: vm
Machine ID: 73ab164e278e48be9bf80e80714a8cd5
Boot ID: 6b1cbc4177164ef58c0e9ed4adb2904f
Virtualization: kvm
Operating System: Red Hat Enterprise Linux 8.0 beta (Ootpa)
CPE OS Name: cpe:/o:redhat:enterprise_linux:8.0:beta
Kernel: Linux 4.18.0-60.el8.x86_64
Architecture: x86-64
[root@host ~]# cat /etc/hostname
[email protected]
配置名称解析
stub resolver 用于将主机名转换为 IP 地址,或者相反。它根据 /etc/nsswitch.conf 文件的配置来决定查找的位置。默认情况下,/etc/hosts 文件中的内容会先被检查。
[root@host ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.25.254.254 classroom.example.com
172.25.254.254 content.example.com
getent hosts hostname命令可以用来测试使用/ etc/hosts文件解析主机名。
如果在 /etc/hosts 文件中没有找到一个条目,默认情况下,stub resolver 会尝试使用 DNS 服务器来查找主机名。**/etc/resolv.conf **文件控制了此查询的执行方式。
- search:一个要用简短的主机名尝试的域名列表。这个和 domain 不应设置在同一个文件中;如果设置了,则最后一个实例获胜。详情请参阅 resolv.conf(5) 。
- nameserver:要查询的命名服务器的IP地址。最多可以给定三个命名服务器指令,如果其中一个命名服务器宕机,可以提供备份。
[root@host ~]# cat /etc/resolv.conf
# Generated by NetworkManager
domain example.com
search example.com
nameserver 172.25.254.254
NetworkManager使用连接配置文件中的DNS设置更新/etc/resolv.conf文件。使用nmcli来修改连接。
[root@host ~]# nmcli con mod ID ipv4.dns IP
[root@host ~]# nmcli con down ID
[root@host ~]# nmcli con up ID
[root@host ~]# cat /etc/sysconfig/network-scripts/ifcfg-ID
...output omitted...
DNS1=8.8.8.8
...output omitted...
nmcli con mod ID ipv4.dns IP的默认行为是用提供的新的IP列表替换之前的DNS设置。ipv4.dns参数前面的+或-符号会增加或删除一个单独的条目。
[root@host ~]# nmcli con mod ID +ipv4.dns IP
将具有IPv6 IP地址2001:4860:4860:88的DNS服务器添加到连接static-ens3的命名服务器列表中。
[root@host ~]# nmcli con mod static-ens3 +ipv6.dns 2001:4860:4860::8888
测试DNS名称解析
host HOSTNAME命令可以用来测试DNS服务器的连接性。
[root@host ~]# host classroom.example.com
classroom.example.com has address 172.25.254.254
[root@host ~]# host 172.25.254.254
254.254.25.172.in-addr.arpa domain name pointer classroom.example.com.
DHCP会在接口启动时自动重写/etc/resolv.conf文件,除非你在相关接口配置文件中指定PEERDNS=no。使用nmcli命令进行设置。
[root@host ~]# nmcli con mod "static-ens3" ipv4.ignore-auto-dns yes
总结
- TCP/IP网络模型是一个简化的、四层的抽象集合,它描述了不同的协议如何相互作用,以便计算机通过互联网从一台机器向另一台机器发送流量。
- IPv4是当今互联网上使用的主要网络协议。IPv6 的目的是作为 IPv4 网络协议的最终替代者。默认情况下,Red Hat Enterprise Linux 以双栈模式运行,并行使用两种协议。
- NetworkManager是一个监控和管理网络配置的守护进程。
- nmcli命令是用NetworkManager配置网络设置的命令行工具。
- 系统的静态主机名存储在/etc/hostname文件中。hostnamectl命令用于修改或查看系统的主机名和相关设置的状态。
hostname命令用于显示或临时修改系统的主机名。