跳转至

网络配置指南

网络管理有两种常见的网络管理器,一种是传统的 network-scripts,另一种是满足新时代网络需求的 NetworkManager。两种网络管理均可以对网络进行永久配置。 也可以使用其他网络配置工具 ip 或 ifconfig 进行临时配置网络,其配置的网络连接信息在系统重启后会丢失。

1 使用 NetworkManager 配置网络

NetworkManager 是默认的网络管理器,支持多种网络配置方式,以下介绍常用的命令行工具 nmcli ,文本界面配置工具 nmtui ,和 ifcfg 文件配置网络。

1.1 使用 nmcli 配置网络

1.1.1 查看网络设备

使用以下命令查看网络设备信息:

# nmcli device status
DEVICE  TYPE      STATE      CONNECTION
ens18   ethernet  connected  ens18-connection
lo      loopback  unmanaged  --
该命令将显示当前的网络设备的名称、类型、状态、以及对应的网络连接。 状态为 unmanaged 的网络设备不受 NetworkManager 管理,使用 NetworkManager 配置此设备不会生效。

1.1.2 查看网络连接

使用以下命令查看所有的网络连接:

# nmcli connection show
NAME              UUID                                  TYPE      DEVICE
ens18-connection  3e7f4298-26e4-43db-9200-1e49309bc5a9  ethernet  ens18
该命令将显示当前的网络连接列表,包括连接名称、类型、设备信息。 可以有多个网络连接对应同一个网络设备,但只有激活的连接会显示设备信息。

使用以下命令查看某个网络连接的详细信息:

# nmcli connection show ens18-connection
connection.id:                          ens18-connection
connection.uuid:                        08e824aa-be05-4964-bae0-928aaac618be
connection.stable-id:                   --
connection.type:                        802-3-ethernet
connection.interface-name:              ens18
connection.autoconnect:                 yes
......
802-3-ethernet.port:                    --
802-3-ethernet.speed:                   0
......
ipv4.method:                            manual
ipv4.dns:                               192.168.1.1
ipv4.dns-search:                        --
ipv4.dns-options:                       --
ipv4.dns-priority:                      0
ipv4.addresses:                         192.168.1.2/24
ipv4.gateway:                           192.168.1.1
ipv4.routes:                            --
......
ipv6.method:                            auto
ipv6.dns:                               --
......

1.1.3 创建动态 IP 地址的网络连接

使用以下命令创建一个新的动态网络连接:

nmcli connection add con-name ens18-connection ifname ens18 type ethernet ipv4.method auto
该命令将创建一个名为 ens18-connection 的新连接,使用 ens18 设备和以太网类型,自动获取 IP 信息。

1.1.4 创建静态 IP 地址的网络连接

使用以下命令创建一个新的静态网络连接:

nmcli connection add con-name ens18-connection ifname ens18 type ethernet ipv4.method manual ipv4.addr 192.168.1.2/24 ipv4.gateway 192.168.1.1 ipv4.dns 192.168.1.1
该命令将创建一个名为 ens18-connection 的新连接,使用 ens18 设备和以太网类型。它还将配置 IPv4 地址为 192.168.1.2,子网掩码为 /24,网关为 192.168.1.1,DNS 服务器地址为 192.168.1.1。

1.1.5 编辑网络连接

使用以下命令打开交互式编辑器来编辑网络连接:

nmcli connection edit ens18-connection
该命令将打开一个交互式编辑器,让用户编辑连接的详细信息,例如 IP 地址、网关、DNS 、路由等,如:
nmcli> set ipv4.addr 192.168.1.2/24
nmcli> set ipv4.gateway 192.168.1.1
nmcli> set ipv4.dns 192.168.1.1
nmcli> set ipv4.routes 192.168.2.0/24 10.0.0.1
nmcli> save
nmcli> quit
编辑完成后需要通过 nmcli 命令应用配置更改。将修改 ens18 设备的 IPv4 地址为 192.168.1.2,子网掩码为 /24,网关为 192.168.1.1,DNS 服务器地址为 192.168.1.1,ens18 上 192.168.2.0/24 子网的流量定向到网关 10.0.0.1。

用户也可以使用以下非交互式命令编辑网络连接:

nmcli connection modify ens18-connection ipv4.addr 192.168.1.2/24
nmcli connection modify ens18-connection ipv4.gateway 192.168.1.1
nmcli connection modify ens18-connection ipv4.dns 192.168.1.1
nmcli connection modify ens18-connection +ipv4.routes "192.168.2.0/24 10.0.0.1"
编辑完成后需要通过 nmcli 命令应用配置更改。

用户也可以直接编辑网络配置文件来编辑网络连接(nmcli命令创建的网络配置文件在 /etc/NetworkManager/system-connections 目录下),编辑完成后通过 nmcli 命令应用配置更改。

1.1.6 删除网络连接

使用以下命令删除网络连接:

nmcli connection delete ens18-connection
该命令将删除名为 ens18-connection 的连接。

1.1.7 应用配置更改

如果编辑网络连接配置创建或更改网络连接后,需要先使用以下命令重新载入网络连接。

nmcli connection reload
此命令只会让 NetworkManager 知道用户对配置的任何更改,但它不会将更改应用到已经建立的连接。 可以通过断开和激活网络连接或使用如下命令应用配置更改:
nmcli dev reapply ens18
ens18 是要应用配置更改的网络设备名称。

1.1.8 激活/断开网络连接

使用以下命令将连接激活,连接到网络:

nmcli connection up ens18-connection
该命令将激活名为 ens18-connection 的网络连接配置。

使用以下命令断开连接:

nmcli connection down ens18-connection
该命令将断开名为 ens18-connection 的网络连接。

1.1.9 配置 NetworkManager 管理或忽略设备

对于非受 NetworkManager 管理设备,使用以下命令临时配置设备为 NetworkManager 管理:

nmcli device set ens18 managed yes
ens18 是配置的网络设备名称。

对于 NetworkManager 管理的设备,使用以下将设备临时配置为 NetworkManager 非受管设备:

nmcli device set ens18 managed no
ens18 是配置的网络设备名称。

此命令配置为临时配置,重启 NetworkManager 服务或系统后,配置会丢失。

1.2 使用 nmtui 配置网络

nmtui 提供了一个基于文本的用户界面。它提供了一个简单而直观的基于菜单的界面。 用户可以使用 nmtui 创建和修改网络连接,而不必记住复杂的命令或选项。

nmtui 默认不安装,使用 nmtui 需要先安装 NetworkManager-tui 软件包:

dnf install -y NetworkManager-tui

nmtui 基本操作:

  • 使用光标键导航。
  • 选择按钮并按 Enter 键来按按钮。
  • 使用 Space 选择或取消选择复选框。

1.2.1 创建动态 IP 地址的网络连接

  1. 如果不知道新添加网络连接需要使用的网络设备名称,可以先使用 nmcli 查看网络设备信息,找到可用的设备
  2. 在命令行中执行 nmtui。
  3. 在界面中按 Edit a connection。
  4. 按 Add。
  5. 从网络类型列表中选择并按 Ethernet。
  6. 可选:为要创建的网络连接输入一个自定义名称。
  7. 在 Device 字段中输入网络设备名称。
  8. 按 OK 按钮创建并自动激活新连接。
  9. 按 Cancal 按钮返回到主菜单。
  10. 按 Quit 关闭 nmtui 应用程序。 nmcli创建动态IP连接.png

1.2.2 创建静态 IP 地址的网络连接

  1. 如果不知道新添加网络连接需要使用的网络设备名称,可以先使用 nmcli 查看网络设备信息,找到可用的设备
  2. 在命令行中执行 nmtui。
  3. 在界面中按 Edit a connection。
  4. 按 Add 。
  5. 从网络类型列表中选择并按 Ethernet。
  6. 可选:为要创建的网络连接输入一个自定义名称。
  7. 在 Device 字段中输入网络设备名称。
  8. 在 IPv4 CONFIGURATION 和 IPv6 CONFIGURATION 中配置 IPv4 和 IPv6 地址:
    1. 按 Automatic ,然后从显示的列表中选择 Manual。
    2. 按要配置的协议旁边的 show 按钮,已显示其他字段
    3. 在 Address 输入 IP 地址和子网掩码。如果没有指定子网掩码,NetworkManager 会为 IPv4 地址设置 /32 子网掩码,为 IPv6 地址设置/64子网掩码。
    4. 在 Gateway 输入默认网关的地址。
    5. 在 DNS Servers 输入 DNS 服务器地址。
    6. 在 Search domains 输入 DNS 搜索域。
  9. 按 OK 按钮创建并自动激活新连接。
  10. 按 Cancal 按钮返回到主菜单。
  11. 按 Quit 关闭 nmtui 应用程序。 nmcli创建静态IP连接.png

1.2.3 编辑网络连接

  1. 在命令行中执行 nmtui。
  2. 在界面中按 Edit a connection
  3. 选择并按需要编辑的网络连接。
  4. 编辑网络连接。
  5. 按 OK 按钮更新并自动激活新连接。
  6. 按 Cancal 按钮返回到主菜单。
  7. 按 Quit 关闭 nmtui 应用程序

1.2.4 激活和断开网络连接

  1. 在命令行中执行 nmtui。
  2. 在界面中按 Activate a connection
  3. 选择并按需要激活或者断开的网络连接,并按右侧的 Activate 激活,或按 Deactivate 断开。
  4. 按 Back 按钮返回到主菜单。
  5. 按 Quit 关闭 nmtui 应用程序。

1.3 使用 ifcfg 文件配置网络

NetworkManager 还兼容支持 network-scripts 的 ifcfg 类型配置文件。 使用 ifcfg 文件配置的网络连接,也可以被 nmcli 和 nmtui 识别并进行配置。

1.3.1 创建动态 IP 地址的网络连接

用户可以在 /etc/sysconfig/network-scripts/ 目录下编辑网络配置文件为某个网络设备配置静态 IP 地址。 如编辑 ifcfg-ens18 文件,并添加以下内容:

DEVICE=ens18
BOOTPROTO=dhcp
PEERDNS=yes
ONBOOT=yes
其中,ens18 是网络设备的名称,dhcp 表示为通过 dhcp 获取动态地址,PEERDNS=yes 表示将使用从 DHCP 服务器获得的 DNS 服务器地址,ONBOOT=yes 表示网络接口将在系统引导期间自动打开。

如果要使用特定 DNS 服务器,而不是从 DHCP 服务器获得的 DNS 服务器地址,请将PEERDNS修改为PEERDNS=no,并添加以下行添加到 ifcfg 文件中:

DNS1=192.168.1.1
DNS2=192.168.2.1
其中,192.168.1.1 是要配置的首选DNS服务器,192.168.2.1是要配置的可选DNS服务器(可不配置)。

文件保存后,使用 nmcli 命令应用网络配置,或重启 NetworkManager 以应用网络配置。

1.3.2 创建静态 IP 地址的网络连接

用户可以在 /etc/sysconfig/network-scripts/ 目录下创建网络配置文件为某个网络设备配置静态 IP 地址。 如编辑 ifcfg-ens18 文件,并添加以下内容:

DEVICE=ens18
BOOTPROTO=static
IPADDR=192.168.1.2
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.1
DNS2=192.168.2.1
ONBOOT=yes
其中,ens18 是网络设备的名称,static 表示为静态 IP,192.168.1.2 是要配置的静态 IP 地址,255.255.255.0 是网络掩码,192.168.1.1 是网关地址,ONBOOT=yes 表示网络接口将在系统引导期间自动打开,192.168.1.1 是要配置的首选DNS服务器,192.168.2.1 是要配置的可选DNS服务器(可不配置)。

文件保存后,使用 nmcli 命令应用网络配置,或重启 NetworkManager 以应用网络配置。

1.3.3 配置静态路由

若想要将静态路由配置为在系统重启后永久保留,用户可以在 /etc/sysconfig/network-scripts/ 下创建路由配置文件,文件名格式为 route-xxx,route- 后的字符需要与网络配置文件名 ifcfg- 后的字符保持一致,如网络配置文件名 ifcfg-ens18,路由配置文件名则为 route-ens18。

在路由配置文件中添加如下行:

ADDRESS0=192.168.2.1
NETMASK0=255.255.255.255
GATEWAY0=10.0.0.1
ADDRESS1=192.168.2.0
NETMASK1=255.255.255.0
GATEWAY1=10.0.0.1
将网络设备上192.168.2.1 主机的流量定向到网关 10.0.0.1。 将网络设备上192.168.2.0/24子网的流量定向到网关 10.0.0.1。

  • ADDRESS0=192.168.2.1 是要访问的远程网络或主机的网络地址。
  • NETMASK0=255.255.255.255 是使用 ADDRESS0=192.168.2.1 定义的网络地址的子网掩码。
  • GATEWAY0=10.0.0.1 是网关。

后续静态路由必须按顺序编号,且不得跳过任何值。例如: ADDRESS0 、 ADDRESS1 、 ADDRESS2 等。

1.4 NetworkManager 服务配置

1.4.1 网络设备管理

除 lo 设备和 udev 设备管理器配置 NM_UNMANAGED 为 "1" 或 "true" 的特殊网络设备外,其他网络设备均默认由 NetworkManager 管理。由 NetworkManager 管理的设备使用 NetworkManager 配置网络才会生效。

NM_UNMANAGED 配置信息在 /usr/lib/udev/rules.d/85-nm-unmanaged.rules 文件中。

lo设备通常用于本地通信,不需要网络配置。udev设备管理器默认配置为非受 NetworkManager 管理的特殊设备也各有原因。不建议将默认的 NetworkManager 非受管设备修改为 NeworkManager 管理。如果明确确认需要修改,可以通过 nmcli 命令临时配置。

对于 NetworkManager 管理的设备,可以通过 nmcli 命令临时配置为非受 NetworkManager 管理。若需要永久配置,用户可以使用以下内容创建 /etc/NetworkManager/conf.d/99-unmanaged-devices.conf 文件:

  • 要将特定网络设备配置为非受管,请添加:
    [keyfile]
    unmanaged-devices=interface-name:ens18
    
  • 要将特定 MAC 地址的网络设备配置为非受管,请添加:
    [keyfile]
    unmanaged-devices=mac:xx:xx:xx:xx:xx:xx
    
  • 要将特定类型的所有网络设备配置为为非受管,请添加:
    [keyfile]
    unmanaged-devices=type:ethernet
    

要将多个设备设置为非受管,请使用分号分隔 unmanaged-devices 参数中的条目。 创建完成后使用 systemctl reload NetworkManager 命令重新载入NetworkManager服务。

使用 nmcli 命令查看网络设备信息时发现应默认由 NetworkManager 管理的设备的状态为 unmanaged,则可能是 nmcli 命令临时配置或 NetworkManager 的配置文件永久配置此设备非受 NetworkManager 管理,可以通过以下方法将其修改回 NetworkManager 管理:

  1. 使用 systemctl restart NetworkManager 重启 NetworkManager 服务。 如果重启若设备后自动修改回 NetworkManager 管理,则说明是临时配置导致。 如果重启后仍为 unmanaged 状态,则需要查找并删除 NetworkManager 配置文件中的永久配置。
  2. 在以下目录和文件中查找将设备配置为非受管的永久配置,并将其删除后使用 systemctl reload NetworkManager 重新载入 NetworkManager 服务。
    /etc/NetworkManager/conf.d/
    /usr/lib/NetworkManager/conf.d/
    /etc/NetworkManager/NetworkManager.conf
    

1.4.2 DNS 管理

NetworkManager 服务运行时将根据 /etc/resolv.conf 文件的情况来选择谁来管理 DNS:

  • /etc/resolv.conf 是指向 /run/systemd/resolve/stub-resolv.conf 或 /run/systemd/resolve/resolv.conf 的软链接,由 systemd-resolved 管理 DNS。 当系统安装了 systemd-resolved 且 /etc/resolv.conf 不存在时,会默认生成此指向的软链接。
  • /etc/resolv.conf 时指向 /run/NetworkManager/resolv.conf 的软链接,由NetworkManager 管理 DNS。
  • /etc/resolv.conf 不存在或为普通文件,由NetworkManager 管理 DNS。

DNS 由 systemd-resolved 管理时,DNS 解析路径为用户向 systemd-resolved 提供的本地 DNS 服务发起 DNS 解析请求,systemd-resolved 再根据 NetworkManager 网络连接的 DNS 配置信息将解析请求转发给对应 DNS 服务器进行解析。

DNS 由 NetworkManager 管理时,还可以配置将 DNS 交给 dnsmasq 服务管理或 /etc/resolv.conf 文件管理。

交给 dnsmasq 服务管理

  1. 使用以下命令安装 dnsmasq:
    dnf install dnsmasq
    
  2. 将 /etc/NetworkManager/NetworkManager.conf 文件的 [main] 部分中的 dns 参数设置为 dnsmasq:
    [main]
    dns=dnsmasq
    
  3. 确认 /etc/resolv.conf 是指向 /run/NetworkManager/resolv.conf 的软链接,若不是,请使用如下命令生成软链接:
    ln -sf /var/run/NetworkManager/resolv.conf /etc/resolv.conf
    
  4. 使用 systemctl restart NetworkManager 重启 NetworkManager 服务。

通过以上设置,用户将向 dnsmasq 提供的本地 DNS 服务发起 DNS 解析请求,dnsmasq 根据 NetworkManager 网络连接的 DNS 配置将解析请求转发转发给对应的 DNS 服务器。

交给/etc/resolv.conf 文件管理

  1. 将 /etc/NetworkManager/NetworkManager.conf 文件的 [main] 部分中的 dns 参数设置为 none:
    [main]
    dns=none
    
  2. 确认 /etc/resolv.conf 是否为软链接,若为软链接则将其删除。
  3. 编辑 /etc/resolv.conf 文件配置系统全局 DNS 服务器地址信息。
  4. 使用 systemctl restart NetworkManager 重启 NetworkManager 服务。

通过以上设置,DNS 解析请求将发送到 /etc/resolv.conf 文件配置的 DNS 服务器。与此同时,使用 NetworkManager 配置 DNS 将不生效。

2 使用 network-scripts 配置网络

相比于提供全功能网络管理的 NetworkManager,network-scripts更准确的描述是用于配置网络接口的一套基本工具,而非网络管理器。 network-scripts 不提供图形用户界面,不支持VPN连接,也不支持网络设备的自动检测和配置,难以满足新时代网络需求,且NetworkManager 也兼容支持 network-scripts 的 ifcfg 类型配置文件,不推荐用户使用 network-scripts 来配置网络。

系统默认安装 NetworkManager,不安装 network-scripts,如果确定要使用 network-scripts,用户可以在已安装 NetworkManager 的情况下安装和使用 network-scripts。

2.1 确定运行模式

network-scripts 有以下两种运行模式:

使用 NetworkManager 兼容 network-scripts 模式配置网络:

在已安装 NetworkManager 的情况下安装和使用 network-scripts,系统默认不会生成 network 服务,网络还是由 NetworkManager 服务管理,NetworkManager 服务会兼容支持 network-scripts 的脚本命令。用户可以使用 network-scripts 的脚本命令配置网络。

完全使用 network-scripts 配置网络:

如果确认要完全使用 network-scripts,而非 NetworkManager,可以使用以下命令将网络管理服务切换为 network-scripts 的 network 服务。禁用 NetworkManager 管理服务后,NetworkManager 的网络配置会失效。

systemctl stop NetworkManager
systemctl disable NetworkManager
systemctl enable network
systemctl start network

2.2 配置网络

确定 network-scripts 的运行模式后,使用 ifcfg 类型配置文件配置网络,文件的编辑方法见 NetworkManager 使用 ifcfg 文件配置网络章节。

配置文件保存后,使用以下 network-scripts 命令禁用网络设备后重新启用网络设备,以应用网络配置。

ifdown ens18
ifup ens18

3 使用 ip 命令配置网络

可以使用 ip 命令配置临时网络连接,但其配置的网络连接信息在系统重启后丢失。

3.1 查看网络设备的 IP 地址

使用以下命令查看网络设备的 IP 地址:

ip addr show dev ens18
ens18 是要查看的网络设备名称

3.2 为网络设备分配 IP 地址

使用以下命令查为网络设备分配 IP 地址:

ip addr add 192.168.1.2/24 dev ens18
ens18 是网络设备的名称,192.168.1.2 是要配置的静态 IP 地址,/24是子网掩码。

分配地址的 ip 命令可以重复多次,以分配多个地址。

3.3 删除网络设备上的 IP 地址

ip addr del 192.168.1.2/24 dev ens18
ens18 是网络设备的名称,192.168.1.2 是要删除的静态 IP 地址,/24是子网掩码。

3.4 配置默认网关和静态路由

使用以下命令配置默认网关:

ip route add default via 192.168.1.1 dev ens18
ens18 是网络设备的名称,192.168.1.1 是要配置的默认网关地址。

使用以下命令添加静态路由:

ip route add 192.168.2.1 via 10.0.0.1 dev ens18
ip route add 192.168.2.0/24 via 10.0.0.1 dev ens18
将 ens18 上 192.168.2.1 主机的流量定向到网关 10.0.0.1。 将 ens18 上 192.168.2.0/24 子网的流量定向到网关 10.0.0.1。

使用以下命令删除静态路由:

ip route del 192.168.2.1
ip route del 192.168.2.0/24

3.5 启用/禁用网络设备

使用以下命令启用网络设备:

ip link set ens18 up
ens18 是要启用网络设备的名称

使用以下命令禁用网络设备:

ip link set ens18 down
ens18 是要禁用的网络设备的名称

4 使用 ifconfig 命令配置网络

可以使用 ifconfig 配置临时网络连接,但其配置的网络连接信息在系统重启后丢失。 ip 命令具有更多的功能和选项,建议使用 ip 命令进行配置临时网络连接,不推荐使用 ifconfig。

4.1 查看网络设备的 IP 地址:

使用以下命令查看网络设备的 IP 地址:

ifconfig ens18
ens18 是要查看的网络设备名称

4.2 设置网络设备的 IP 地址

使用以下命令设置网络设备的IP地址:

ipconfig ens18  192.168.1.2 netmask 255.255.255.0
ens18 是网络设备的名称,192.168.1.2 是要配置的静态IP地址,255.255.255.0 是子网掩码。

4.3 配置默认网关或静态路由

使用以下命令配置默认网关:

route add default gw 192.168.1.1 dev ens18
ens18 是网络设备的名称,192.168.1.1 是要配置的默认网关地址。

使用以下命令添加静态路由:

route add -host 192.168.2.1 gw 10.0.0.1 dev ens18
route add -net 192.168.2.0/24 gw 10.0.0.1 dev ens18
将 ens18 上 192.168.2.1 主机的流量定向到网关 10.0.0.1。 将 ens18 上 192.168.2.0/24 子网的流量定向到网关 10.0.0.1。

使用以下命令删除静态路由:

route del 192.168.2.1
route del 192.168.2.0/24

4.4 启用/禁用网络设备

使用以下命令启用网络设备:

ifconfig ens18 up
ens18 是要启用网络设备的名称

使用以下命令禁用网络设备:

ifconfig ens18 down
ens18 是要禁用网络设备的名称