在RHEL/CentOS上使用NetworkManager配置静态IP地址

使用`nmcli`在RHEL或CentOS上配置持久静态IP,包括网关、DNS、激活和回滚检查。

在RHEL/CentOS上使用NetworkManager配置静态IP地址

网络是服务器上需要正确配置的首要事项之一。在RHEL和CentOS上,NetworkManager可以配置持久的静态IP地址,而无需手动编辑接口文件,这在较新的企业级Linux发行版上更安全。

本指南将介绍使用nmcli命令设置地址、网关和DNS服务器,激活配置文件,并验证更改在重启后仍然有效的步骤。

理解NetworkManager和nmcli

在深入配置步骤之前,让我们先明确我们将使用的核心组件:

什么是NetworkManager?

NetworkManager是一个处理网络设置的守护进程,使管理网络连接更加容易。它可以管理各种连接类型,包括以太网、Wi-Fi、移动宽带和VPN。它会自动检测和配置网络设备,并尝试保持活跃的网络连接,在可用连接之间切换。对于服务器,它确保网络接口正确配置并在重启后保持不变。

什么是nmcli

nmcli是NetworkManager的命令行客户端。它允许您从终端控制NetworkManager和配置网络连接。在无图形界面的服务器环境中特别有用。nmcli命令直观,提供了与NetworkManager全部功能交互的强大方式,从显示网络设备状态到创建和修改复杂的连接配置文件。

前提条件

要遵循本指南,请确保您具备:

  • 根权限:您需要sudo访问权限或作为root用户登录才能进行网络配置更改。
  • 系统信息:您打算使用的静态IP地址、子网掩码(或CIDR表示法)、默认网关和DNS服务器IP地址。
  • 识别的网络接口:了解您要配置的网络接口名称(例如enp0s3eth0)。我们将介绍如何找到它。

静态IP地址的分步配置

以下是使用nmcli配置静态IP地址的方法。

步骤1:识别您的网络接口

首先,您需要知道要配置的网络接口的名称。您可以使用nmcli devicenmcli device status列出所有活动的网络设备及其状态:

nmcli device status

示例输出:

DEVICE     TYPE      STATE                   CONNECTION
enp0s3     ethernet  connected               System enp0s3
lo         loopback  unmanaged               --

在此示例中,enp0s3是我们的以太网接口。记下您的接口名称。

步骤2:创建新的网络连接配置文件

通常,为静态IP配置创建一个新的连接配置文件是一个好做法,而不是直接修改现有的DHCP管理的配置文件,特别是如果您可能想要轻松回滚。连接配置文件存储特定网络连接的所有设置。

要创建新的以太网连接配置文件,请使用nmcli connection add命令。您需要指定连接类型、描述性连接名称(con-name)和接口名称(ifname)。

sudo nmcli connection add type ethernet con-name my-static-eth ifname enp0s3
  • type ethernet:指定以太网连接。
  • con-name my-static-eth:为此新的连接配置文件分配一个名称。选择描述性的名称。
  • ifname enp0s3:将此连接配置文件链接到物理网络接口enp0s3

替代方案:修改现有配置文件

如果您更喜欢修改现有连接(例如,从nmcli device status输出中的System enp0s3),您可以使用nmcli connection modify命令,并指定其现有的con-name

sudo nmcli connection modify "System enp0s3" # 替换为您的连接名称

注意:为简单明了,本指南假设您已创建了一个名为my-static-eth的新连接配置文件。

步骤3:配置IPv4设置(IP、网关、DNS)

现在,让我们为my-static-eth连接配置文件配置静态IP地址、网关和DNS服务器。将IPv4方法设置为manual以禁用DHCP至关重要。

设置IP地址和网关

使用ipv4.addressesipv4.gateway属性。IP地址应使用CIDR表示法(例如192.168.1.100/24)。

sudo nmcli connection modify my-static-eth ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1
  • ipv4.addresses 192.168.1.100/24:将静态IP地址设置为192.168.1.100,子网掩码为24位(255.255.255.0)。
  • ipv4.gateway 192.168.1.1:设置网络的默认网关。

设置DNS服务器

指定一个或多个DNS服务器IP地址。多个地址用逗号分隔。

sudo nmcli connection modify my-static-eth ipv4.dns "1.1.1.1,8.8.8.8"

如果您的组织运行内部DNS,请使用那些解析器IP。例如,私有服务器可能使用192.168.1.10192.168.1.11

禁用IPv4的DHCP

将IPv4方法设置为manual;否则NetworkManager可能仍会为此配置文件尝试DHCP。

sudo nmcli connection modify my-static-eth ipv4.method manual

如果服务器在此连接上不应使用IPv6,请显式禁用它:

sudo nmcli connection modify my-static-eth ipv6.method disabled

仅当您的网络不依赖IPv6时才这样做。

步骤4:激活静态配置文件

启动新的连接。如果您通过SSH工作,请从控制台访问运行此命令,或在更改活动接口之前安排回滚。

sudo nmcli connection up my-static-eth

如果同一接口上仍有旧的DHCP配置文件处于活动状态,请在确认静态配置文件正常工作后将其关闭:

sudo nmcli connection down "System enp0s3"

"System enp0s3"替换为nmcli connection show中实际的旧连接名称。

步骤5:验证地址、路由和DNS

检查活动连接:

nmcli connection show --active

确认IP地址:

ip addr show enp0s3

确认默认路由:

ip route

您应该看到类似以下的路由:

default via 192.168.1.1 dev enp0s3

检查由NetworkManager管理的DNS设置:

nmcli device show enp0s3 | grep DNS

然后测试实际连接:

ping -c 3 192.168.1.1
ping -c 3 1.1.1.1
getent hosts example.com

第一个命令检查网关,第二个检查出站IP连接,第三个检查DNS解析。

更安全的远程更改

如果地址或网关输入错误,静态IP更改可能会断开您的SSH会话。在远程应用配置文件之前,请保持第二个会话打开,并考虑安排回滚:

sudo shutdown -r +5 "网络回滚重启"

如果新的静态IP正常工作,取消重启:

sudo shutdown -c

在不能接受重启的系统上,创建临时的at作业或使用带外控制台访问,以便在路由错误时能够恢复。

要点

使用nmcli连接配置文件进行持久的RHEL和CentOS静态IP配置。最小工作集是ipv4.addressesipv4.gatewayipv4.dnsipv4.method manual;最安全的工作流程是激活配置文件,验证路由和DNS行为,然后仅在服务器在其新地址可达后移除或禁用旧的DHCP配置文件。