在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地址。
- 识别的网络接口:了解您要配置的网络接口名称(例如
enp0s3、eth0)。我们将介绍如何找到它。
静态IP地址的分步配置
以下是使用nmcli配置静态IP地址的方法。
步骤1:识别您的网络接口
首先,您需要知道要配置的网络接口的名称。您可以使用nmcli device或nmcli 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.addresses和ipv4.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.10和192.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.addresses、ipv4.gateway、ipv4.dns和ipv4.method manual;最安全的工作流程是激活配置文件,验证路由和DNS行为,然后仅在服务器在其新地址可达后移除或禁用旧的DHCP配置文件。