跳至内容

网络配置

简介

如今,如果没有网络连接,计算机的用途将大打折扣。无论您是为了更新服务器上的软件包,还是仅仅从笔记本电脑浏览外部网站,都需要网络访问。本指南旨在为 Rocky Linux 用户提供有关设置网络连接的基本知识。

自 Rocky Linux 10 起,网络配置方面发生了许多变化。其中一项主要变化是弃用(Rocky Linux 9 中已弃用)Network-Scripts,转而使用 Network Manager 和 key files。从 10 版本开始,NetworkManager 强制使用 keyfiles 而非之前的 ifcfg 文件。本指南将引导您了解 Network Manager 以及 Rocky Linux 10 中的最新变化。

先决条件

  • 熟悉命令行操作
  • 拥有系统上的提升或管理权限(例如 root、sudo 等)
  • 可选:熟悉网络概念

使用 NetworkManager 服务

在用户层面,网络堆栈的管理由 NetworkManager 负责。此工具以服务形式运行。您可以使用以下命令检查其状态:

systemctl status NetworkManager

配置文件

如开头所述,默认情况下配置文件现在是 key files。您可以通过运行以下命令查看 NetworkManager 如何优先处理这些文件:

NetworkManager --print-config

这将产生如下或类似输出:

[main]
# plugins=keyfile
# rc-manager=auto
# auth-polkit=true
# iwd-config-path=
dhcp=dhclient
configure-and-quit=no

[logging]
# backend=journal
# audit=false

[device]
# wifi.backend=wpa_supplicant

# no-auto-default file "/var/lib/NetworkManager/no-auto-default.state"

请注意配置文件顶部的 keyfile 引用。每当您运行任何 NetworkManager 工具来配置接口(例如:nmclinmtui)时,它都会自动构建或更新 key files。

配置存储位置

在 Rocky Linux 10 中,key files 的新默认存储位置是 /etc/NetworkManager/system-connections

用于配置网络接口的主要(但不是唯一)实用程序是 nmtui 命令。您也可以使用 nmcli 命令完成此操作,但它不太直观。您可以使用 nmcli 显示当前配置的接口:

nmcli device show enp0s3
GENERAL.DEVICE:                         enp0s3
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         08:00:27:BA:CE:88
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     enp0s3
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         192.168.1.151/24
IP4.GATEWAY:                            192.168.1.1
IP4.ROUTE[1]:                           dst = 192.168.1.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]:                           dst = 0.0.0.0/0, nh = 192.168.1.1, mt = 100
IP4.DNS[1]:                             8.8.8.8
IP4.DNS[2]:                             8.8.4.4
IP4.DNS[3]:                             192.168.1.1
IP6.ADDRESS[1]:                         fe80::a00:27ff:feba:ce88/64
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = fe80::/64, nh = ::, mt = 1024

技巧

系统分配 IP 配置信息有几种方式或机制。最常见的两种方法是——静态 IP 配置方案和动态 IP 配置方案。

静态 IP 配置方案在服务器类系统或网络中非常流行。

动态 IP 方法在家庭和办公室网络或商业环境中的工作站和台式机类系统中很受欢迎。动态方案通常需要本地可用的某些东西,这些东西可以为请求工作站和台式机提供正确的 IP 配置信息。这个某些东西称为动态主机配置协议 (DHCP)。在家庭网络,甚至在大多数商业网络中,此服务由专门配置的 DHCP 服务器提供。这可以是一个独立的服务器,也可以是路由器配置的一部分。

IP 地址

在前一节中,为接口 enp0s3 显示的配置来自 .ini 文件 /etc/NetworkManager/system-connections/enp0s3.nmconnection。这表明 IP4.ADDRESS[1] 是静态配置的,而不是通过 DHCP 动态配置的。如果您想将此接口切换回动态分配的地址,最简单的方法是使用 nmtui 命令。

  1. 首先,在命令行运行 nmtui 命令,它应该会显示以下内容:

    nmtui

  2. 它已经显示了您需要的选项“Edit a connection”(编辑连接),所以按 Tab 键直到看到“OK”高亮显示,然后按 Enter

  3. 这将显示一个屏幕,其中包含机器上的以太网连接,并允许您选择一个。在这种情况下,只有一个,所以它已经高亮显示。您需要按 Tab 键直到看到“Edit”(编辑)高亮显示,然后按 Enter

    nmtui_edit

  4. 完成后,您将进入显示当前配置的屏幕。您需要做的是从“Manual”(手动)切换到“Automatic”(自动),所以按 Tab 键几次,直到看到“Manual”高亮显示,然后按 Enter

    nmtui_manual

  5. 向上箭头直到看到“Automatic”高亮显示,然后按 Enter

    nmtui_automatic

  6. 一旦您将接口切换到“Automatic”,您需要删除静态分配的 IP。按 Tab 键直到看到 IP 地址旁边的“Remove”(删除)高亮显示,然后按 Enter

    nmtui_remove

  7. 最后,按 Tab 键几次,直到到达 nmtui 屏幕底部显示“OK”高亮显示,然后按 Enter

您也可以使用 nmtui 来停用和重新激活接口,但我们这里使用 nmcli 来完成。这样您就可以将接口的停用和重新激活连接起来,这样接口就不会长时间处于停用状态。

nmcli con down enp0s3 && nmcli con up enp0s3

您可以将其视为在旧版本的操作系统中使用的 ifdown enp0s3 && ifup enp0s3 命令的等效命令。

要验证更改是否成功,请使用 ip addr 命令或之前使用的 nmcli device show enp0s3 命令进行检查。

ip addr

如果成功,您现在应该会看到静态 IP 已被删除,并添加了一个动态分配的地址,如下所示:

2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:ba:ce:88 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.137/24 brd 192.168.1.255 scope global dynamic noprefixroute enp0s3
    valid_lft 6342sec preferred_lft 6342sec
inet6 fe80::a00:27ff:feba:ce88/64 scope link noprefixroute 
    valid_lft forever preferred_lft forever

使用 nmcli 更改 IP 地址

使用 nmtui 很好,但如果您只想快速重新配置网络接口而不必在屏幕之间花费大量时间,您可能更希望单独使用 nmcli。查看前面关于静态分配 IP 的示例以及仅使用 nmcli 重新配置接口以使用 DHCP 的步骤。

开始之前,请注意,要将接口重新配置为 DHCP,您需要:

  • 删除 IPv4 网关
  • 删除您静态分配的 IPv4 地址
  • 将 IPv4 方法更改为自动
  • 停用并启动接口

另外请注意,您并未在示例中使用诸如 -ipv4.address 等命令。这些命令不会完全更改接口。要做到这一点,您必须将 ipv4.address 和 ipv4.gateway 设置为空字符串。再次,为了尽可能节省您的命令时间,将它们全部放在一行中:

nmcli con mod enp0s3 ipv4.gateway '' && nmcli con mod enp0s3 ipv4.address '' && nmcli con mod enp0s3 ipv4.method auto && nmcli con down enp0s3 && nmcli con up enp0s3

再次运行 ip addr 命令,应该会显示与使用 nmtui 进行更改时完全相同的结果。您也可以做相反的操作(将 DHCP 地址更改为静态地址)。要做到这一点,您将从更改 ipv4.method 为 manual 开始,设置 ipv4.gateway,然后设置 ipv4.address,反向执行命令。由于在所有这些示例中您都在完全重新配置接口,而不是添加或删除值,因此您不会使用那些关于使用 +ipv4.method+ipv4.gateway+ipv4.address 的示例。如果您使用这些命令而不是前面示例中的命令,您最终将得到一个同时拥有 DHCP 分配地址和静态分配地址的接口。话虽如此,这有时会非常有用。例如,如果您有一个 Web 服务监听在一个 IP 上,而一个 sftp 服务器监听在另一个 IP 上。能够为接口分配多个 IP 地址非常有用。

DNS 解析

您可以使用 nmtuinmcli 设置 DNS 服务器。虽然 nmtui 界面易于导航且更直观,但过程会慢很多。使用 nmcli 执行此操作会快得多。对于 DHCP 分配的地址,通常不需要设置 DNS 服务器,因为它们通常会从 DHCP 服务器转发。尽管如此,您可以为 DHCP 接口静态添加 DNS 服务器。对于静态分配的接口,您将*必须*这样做,因为它需要知道如何进行 DNS 解析,并且不会有自动分配的方法。

由于这一切的最佳示例是静态分配的 IP,让我们回到示例接口(enp0s3)中您最初的静态分配地址。在更改 DNS 值之前,您需要查看当前的值。为了获得正确的名称解析,请删除已设置的 DNS 服务器并添加不同的服务器。当前 ipv4.dns8.8.8.8,8.8.4.4,192.168.1.1。在这种情况下,您不需要将 ipv4.dns 设置为空字符串。您可以使用以下命令替换您的值:

nmcli con mod enp0s3 ipv4.dns '208.67.222.222,208.67.220.220,192.168.1.1'

运行 nmcli con show enp0s3 | grep ipv4.dns 应该会显示您已成功更改了 DNS 服务器。要激活所有更改,请将您的接口停用并重新启动,以便您的更改生效:

nmcli con down enp0s3 && nmcli con up enp0s3

要测试您*确实*拥有名称解析,请尝试 ping 一个已知主机。以 google.com 为例:

ping google.com
PING google.com (172.217.4.46) 56(84) bytes of data.
64 bytes from lga15s46-in-f14.1e100.net (172.217.4.46): icmp_seq=1 ttl=119 time=14.5 ms
64 bytes from lga15s46-in-f14.1e100.net (172.217.4.46): icmp_seq=2 ttl=119 time=14.6 ms
64 bytes from lga15s46-in-f14.1e100.net (172.217.4.46): icmp_seq=3 ttl=119 time=14.4 ms
^C

使用 ip 工具

ip 命令(由 iproute2 包提供)是一个强大的工具,用于获取有关现代 Linux 系统(如 Rocky Linux)的信息并配置其网络。

在此示例中,假设参数如下:

  • 接口名称:enp0s3
  • IP 地址:192.168.1.151
  • 子网掩码:24
  • 网关:192.168.1.1

获取一般信息

要查看所有接口的详细状态,请使用:

ip a

专业提示

  • 使用 -c 标志以获得更易读的彩色输出:ip -c a
  • ip 命令接受缩写,因此 ip aip addrip address 是等效的。

启用或禁用接口

注意

虽然在 Rocky Linux 10 中仍然可以使用此方法来启用和禁用接口,但该命令的反应速度比简单使用 nmcli 命令慢得多。

要启用和禁用 enp0s3 接口,您只需使用:

ip link set enp0s3 down && ip link set enp0s3 up

为接口分配静态地址

当前,您的 enp0s3 接口的 IP 地址是 192.168.1.151。要将其切换到 192.168.1.152,您将使用以下命令删除旧 IP:

ip addr delete 192.168.1.151/24 dev enp0s3 && ip addr add 192.168.1.152/24 dev enp0s3

如果您想为接口分配第二个 IP 地址而不是删除 192.168.1.151 地址,您只需添加第二个地址:

ip addr add 192.168.1.152/24 dev enp0s3

您可以使用以下命令验证添加的 IP 地址:

ip a show dev enp0s3

这将输出:

2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:ba:ce:88 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.151/24 brd 192.168.1.255 scope global noprefixroute enp0s3
    valid_lft forever preferred_lft forever
inet 192.168.1.152/24 scope global secondary enp0s3
    valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:feba:ce88/64 scope link noprefixroute 
    valid_lft forever preferred_lft forever

虽然使用 ip 工具启用和禁用接口比 nmcli 慢得多,但 ip 在设置新 IP 地址或附加 IP 地址时具有明显优势,因为它实时发生,而无需禁用和启用接口。

网关配置

现在接口已经有了地址,您必须设置其默认路由。您可以使用以下命令完成此操作:

ip route add default via 192.168.1.1 dev enp0s3

您可以使用以下命令显示内核路由表:

ip route

或简写为 ip r

这应该会输出类似如下的内容:

default via 192.168.1.1 dev enp0s3 
192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.151 metric 100

检查网络连通性

在本文档的示例中,您已经进行了一些测试。测试的最佳方法是首先 ping 默认网关。这应该始终有效:

ping -c3 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.437 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.879 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.633 ms

接下来,测试您的 LAN 路由是否完全正常工作,方法是 ping 本地网络中的主机:

ping -c3 192.168.1.10
PING 192.168.1.10 (192.168.1.10) 56(84) bytes of data.
64 bytes from 192.168.1.10: icmp_seq=2 ttl=255 time=0.684 ms
64 bytes from 192.168.1.10: icmp_seq=3 ttl=255 time=0.676 ms

测试以确保您可以访问您网络外部的可达主机。在此测试中,示例使用 Google 的开放 DNS 服务器:

ping -c3 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=119 time=19.8 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=119 time=20.2 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=119 time=20.1 ms

最后的测试是确保 DNS 解析正常工作。在此示例中,使用 google.com:

ping -c3 google.com
PING google.com (172.217.4.46) 56(84) bytes of data.
64 bytes from lga15s46-in-f14.1e100.net (172.217.4.46): icmp_seq=1 ttl=119 time=14.5 ms
64 bytes from lga15s46-in-f14.1e100.net (172.217.4.46): icmp_seq=2 ttl=119 time=15.1 ms
64 bytes from lga15s46-in-f14.1e100.net (172.217.4.46): icmp_seq=3 ttl=119 time=14.6 ms

如果您机器上有多个接口,并且想从特定接口进行测试,请在 ping 命令中使用 -I 选项:

ping -I enp0s3 -c3 192.168.1.10

结论

Rocky Linux 10 中的网络堆栈发生了许多变化。其中一项是移除了 Network-Scripts,以及使用 ifcfg 的可能性。相反,Rocky Linux 10 使用 keyfiles。本文档重点介绍了 Network Manager 和底层工具 nmclinmtui 的使用。此外,本文档还介绍了 ip 命令及其在网络配置中的使用示例。

贡献者:Steven Spencer, Hayden Young, Ganna Zhyrnova