云服务器网:购买云服务器和VPS必上的网站!

CentOS9如何改静态IP、附加多个IP?附排错方案

很多做建站、海外VPS运维、服务器托管的朋友,最近升级到 CentOS Stream 9 之后,第一件事就被网…

很多做建站、海外VPS运维、服务器托管的朋友,最近升级到 CentOS Stream 9 之后,第一件事就被网络配置卡住了。之前我们用惯了 CentOS7,习惯去 `/etc/sysconfig/network-scripts/` 下面找 ifcfg 网卡文件,改 IP、加别名 IP,一套流程熟门熟路。但是到了 centos9,这套老方法直接行不通了,不少人改完配置重启服务器,IP 直接丢失,SSH 连不上,服务器直接失联,手忙脚乱抢救半天。

我自己在给客户调试海外云主机、多站点独立 IP 建站的时候,踩过好几次这个坑。最开始我还是惯性思维,直接新建 ifcfg-ens33:0 这种网卡别名文件,结果配置写完,重启 NetworkManager 之后完全不加载,甚至原有 IP 都直接异常。后来仔细翻了红帽官方文档才明白:CentOS9、RHEL9、Rocky Linux9 这一代系统,默认废弃了 network-scripts,全面使用 NetworkManager 来管理网络,配置文件格式变成 keyfile,存放路径也换到了 `/etc/NetworkManager/system-connections/`,旧的网卡别名方案已经不再推荐优先使用。

很多小伙伴的需求其实很明确,分两类:一类是把默认 DHCP 自动获取 IP,改成固定静态 IP,保证服务器重启之后 IP 不变,适合建站、数据库、面板服务;另一类是在同一张网卡上增加多个附加 IP,也就是常说的单网卡多 IP,一个服务器放多个独立站点,每个网站绑定单独 IP,做外贸建站、SSL 证书、多业务隔离都非常常用。

今天这篇文章,我就用最贴近实操的方式,把 CentOS9 修改 IP、新增附加 IP 的几种方案讲清楚,优先推荐稳定、官方支持的 nmcli 命令方式,也会讲 nmtui 字符界面、手动修改 keyfile 配置文件的办法,同时把临时 IP 配置、重启失效问题、常见排错点一并说明,大家跟着一步步操作,基本不会翻车。

温馨提醒:生产服务器操作前,强烈建议先在控制台后台开启 VNC / 远程控制台,不要只在 SSH 里面操作。一旦 IP 配置写错,SSH 直接断开,没有控制台的话,只能找服务商救援,非常耽误时间。云服务器还要提前确认:后台已经给服务器分配好了附加 IP,后台层面绑定完成,再到系统里面配置,不然在系统里填了 IP 也不通。

一、先搞懂:CentOS9 查看网卡信息,这一步不能省

不管是改 IP 还是加 IP,第一件事,先确认自己服务器的网卡名称、现有连接名称。CentOS9 的网卡命名不再是统一 eth0,大多是 ens33、enp0s3、eth1 这类,不同云厂商、虚拟机平台命名不一样,不能直接照搬网上的命令。

第一条最常用命令,查看网卡和 IP 信息:

ip a

执行之后,你会看到网卡列表,比如 ens33,后面跟着 inet 就是当前 IPv4 地址。

第二条,查看 NetworkManager 里面的连接名称,这个非常关键!nmcli 修改的时候,用的是连接名称,不是网卡设备名,很多新手在这里搞混,命令执行成功但是配置不生效。

nmcli connection show

输出结果里,NAME 那一列就是连接名,DEVICE 是网卡设备。举个例子,很多云主机默认连接名就叫 `ens33`,那我们后续命令里面的连接名称就填这个。

顺带可以看一下 NetworkManager 服务状态,确认服务正常运行:

systemctl status NetworkManager

如果显示 dead、没有启动,先执行启动命令:

systemctl start NetworkManager

systemctl enable NetworkManager

CentOS9 默认是启用 NetworkManager,不再使用老的 network 服务,不要再去执行 `systemctl restart network`,这个服务默认不存在,执行直接报错。

二、方案一:nmcli 命令,把 DHCP 改成静态 IP(永久生效,首选)

nmcli 是 NetworkManager 自带的命令行工具,也是红帽官方推荐的配置方式,命令修改配置,自动写入 keyfile 文件,语法清晰,不容易出现文件权限、格式错误,适合绝大多数运维场景。

我们先梳理参数含义,方便大家替换自己的信息:

– 连接名:示例用 ens33,你要替换成自己 `nmcli connection show` 查到的 NAME

– ipv4.method manual:关闭 DHCP,手动静态 IP;如果是 auto 就是 DHCP 自动获取

– ipv4.addresses:IP 地址 / 掩码,比如 192.168.1.100/24

– ipv4.gateway:网关地址

– ipv4.dns:DNS,可以写多个,逗号隔开,比如 223.5.5.5,114.114.114.114

完整修改静态 IP 的命令模板,root 权限执行:

nmcli connection modify ens33 ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns “223.5.5.5,114.114.114.114”

执行完这条命令,配置已经写入,但是不会立刻生效,需要重载激活连接:

nmcli connection up ens33

重点:这里不要用 down 再 up 反复操作,直接 up 重载即可;如果是远程 SSH 操作,IP 变更之后,当前 SSH 连接会断开,需要用新 IP 重新连接。

执行完成之后,用 `ip a` 核对 IP,`ip route` 核对默认网关,再 ping 外网测试连通性:

ping -c 4 223.5.5.5

能通,代表静态 IP 配置成功,重启服务器之后配置依旧保留,永久生效。

如果哪天想要改回 DHCP 自动获取 IP,命令也很简单:

nmcli connection modify ens33 ipv4.method auto

nmcli connection up ens33

三、方案二:nmcli 给单网卡增加多个附加 IP(多 IP 建站核心操作)

这是很多朋友最需要的功能:一张网卡,保留原有主 IP,额外添加多个独立 IP,用来绑定不同网站、不同服务。在 CentOS9 的 nmcli 里面,增加 IP 用 `+ipv4.addresses`,加号代表追加,不会覆盖掉原来已经存在的 IP,这个符号非常关键,很多人漏掉加号,直接把原有 IP 给覆盖清空了。

示例,在 ens33 连接上追加一个 IP:

nmcli connection modify ens33 +ipv4.addresses “192.168.1.101/24”

追加第二个、第三个 IP,重复上面命令,替换 IP 地址即可:

nmcli connection modify ens33 +ipv4.addresses “192.168.1.102/24”

追加完成之后,同样重载连接生效:

nmcli connection up ens33

再用 `ip a` 查看,你会看到 ens33 网卡下面,同时出现主 IP 和所有附加 IP。

如果后续需要删除其中某一个附加 IP,就把加号换成减号 `-ipv4.addresses`,精准删除指定 IP,不会影响其他 IP:

nmcli connection modify ens33 -ipv4.addresses “192.168.1.102/24”

nmcli connection up ens33

这里单独说一下云服务器的特殊情况:很多海外云服务商给的附加 IP 是 / 32 掩码,没有额外网关,只需要填 IP/32,不需要重复设置网关,一条连接里面只需要一个默认网关,多个 IP 共用同一个网关就可以,不要重复添加多条默认路由,不然会出现路由紊乱,间歇性断网。

举个海外 VPS 附加 IP 真实例子,命令如下:

nmcli connection modify ens33 +ipv4.addresses “5.129.206.100/32”

nmcli connection up ens33

四、方案三:nmtui 字符图形界面,适合不熟悉命令的新手

如果你对命令行参数容易记混,CentOS9 自带 nmtui,是一个交互式字符界面,不用敲复杂长命令,SSH 里面直接输入就能打开,操作直观,出错概率低。

直接输入命令启动:

nmtui

弹出菜单,选择 `Edit a connection`,回车;

选中你的网卡连接名称(比如 ens33),选择 Edit 编辑;

IPv4 配置那里,把 Automatic 改成 Manual;

点 Add,添加 IP 地址、网关、DNS;需要多个 IP 就多次点 Add;

配置完成之后,OK 保存,退回主界面,选择 Activate a connection,先 Deactivate 关闭,再 Activate 重新激活连接,配置生效。

这个方式适合临时调试、新手学习,缺点就是批量添加十几个 IP 的时候,效率不如 nmcli 命令。

五、方案四:手动修改 nmconnection 配置文件(keyfile 格式,进阶)

有一部分运维习惯直接改配置文件,CentOS9 的 NetworkManager 配置文件,放在 `/etc/NetworkManager/system-connections/` 目录,文件后缀是 `.nmconnection`,注意:这个目录下的文件权限要求很严格,必须是 600 权限,属主 root,权限不对,NetworkManager 会直接忽略这个配置文件,不加载。

先进入目录,查看文件:

cd /etc/NetworkManager/system-connections/

ls

找到对应的网卡配置文件,比如 `ens33.nmconnection`,用 vim 编辑:

vim ens33.nmconnection

核心配置段在 [ipv4],示例静态 + 多 IP 写法:

[ipv4]

method=manual

address1=192.168.1.100/24,192.168.1.1

address2=192.168.1.101/24

address3=192.168.1.102/24

dns=223.5.5.5;114.114.114.114;

address1 格式是 IP / 掩码,网关,后面追加的 address2、address3 只需要写 IP 和掩码,不需要重复写网关。

修改保存之后,一定要检查权限,这是高频踩坑点:

chmod 600 ens33.nmconnection

chown root:root ens33.nmconnection

然后重载 NetworkManager 或者激活连接:

nmcli connection up ens33

不推荐新手优先用这个方案,文件格式、权限任意一处出错,网络直接失效,nmcli 命令会自动处理权限,稳妥很多。

六、临时添加 IP:ip addr 命令,重启 / 重载网卡就失效

很多人测试连通性的时候,想要临时加一个 IP,不用永久保存,可以用 ip addr 命令。这个配置属于临时内存配置,一旦网卡重启、服务器重启,IP 直接消失,适合临时测试,绝对不能用来做正式建站业务。

临时添加 IP 命令:

ip addr add 192.168.1.103/24 dev ens33

临时删除 IP:

ip addr del 192.168.1.103/24 dev ens33

很多老教程里面的 ifconfig、ens33:0 别名方式,本质也是临时配置,CentOS9 默认甚至没有预装 net-tools,ifconfig 命令需要单独 yum 安装,不建议新项目使用,兼容性很差。

七、高频故障排查,90% 的人都会遇到这些问题

1、配置完 IP,内网通,外网 ping 不通

优先检查两点:①默认网关是否正确,不要多条默认网关;②云服务器后台安全组、防火墙有没有放行 IP,很多海外 VPS 附加 IP 需要在服务商后台绑定路由。

查看路由命令:`ip route`,确认 default 开头的网关是服务商提供的网关。

2、nmcli 命令执行成功,ip a 看不到新增 IP

大概率:连接名称写错,不是网卡设备名;或者修改之后没有执行 `nmcli connection up xxx` 重载连接。

记住:nmcli 改完配置,必须 up 激活连接,改动才会加载进网卡。

3、服务器重启之后,IP 配置丢失

两种情况:①用了 ip addr 临时添加,本身就不持久;②手动修改 nmconnection 文件之后,权限不是 600,NetworkManager 拒绝加载文件。

4、SSH 连接直接断开,服务器失联

修改主 IP 的时候,原有 IP 变更,SSH 会话立刻断开。所以生产操作,一定要后台 VNC 待命,不要裸 SSH 修改主 IP。附加 IP 不会影响原有主 IP 的 SSH 连接,相对安全。

5、多个 IP,有的 IP 能访问,有的 IP 无法访问

云主机场景最多,服务商后台没有把附加 IP 分配到这台服务器,系统配置了 IP,上游路由没有,自然不通,先去云服务商后台确认 IP 绑定状态。

八、补充:和 CentOS7 的核心区别,帮你跳出旧思维

我整理一个简短对比,方便长期做运维的朋友转换思路:

1. CentOS7:network 服务为主,配置在 `/etc/sysconfig/network-scripts/ifcfg-xxx`,支持 eth0:0 别名 IP;

2. CentOS9:废弃 network-scripts,NetworkManager 为主,keyfile 配置,优先 nmcli/nmtui,不推荐老式网卡别名;

3. CentOS7 很多人习惯 `service network restart`;CentOS9 改用 `nmcli connection up` 重载连接,或者 `systemctl restart NetworkManager`。

这里多说一句,网上大量老旧教程,直接拿 CentOS7 的 ifcfg 文件放到 CentOS9 里面,很多人照搬踩坑,就是没有意识到版本的底层网络管理组件已经换了。不是说完全不能用,但是官方不再维护这个方案,稳定性没有保障,后续系统升级容易出问题,所以我们生产环境尽量跟随官方推荐的 nmcli 方案。

九、实操总结,给大家一个稳定操作流程

最后给大家一套我日常给客户配置多 IP 建站服务器的标准流程,照着做,稳定性最高:

1. 云服务商后台,把附加 IP 绑定到当前服务器,记录 IP、掩码、网关;

2. VNC 或者 SSH 登录,`nmcli connection show` 拿到连接名称;

3. 主 IP 是 DHCP 转静态:nmcli modify 设置 manual、主 IP、网关、DNS;

4. 追加附加 IP:使用 `+ipv4.addresses` 逐条添加;

5. `nmcli connection up 连接名` 重载激活;

6. ip a 核对 IP、ip route 核对网关、ping 外网测试连通;

7. 测试网站、SSL、面板绑定新增 IP,确认访问正常。

对于做外贸独立站、多站点业务的朋友来说,CentOS9 单网卡多 IP 是一个非常实用的技能。很多时候我们不想多买一台服务器,只需要给不同站点分配独立 IP,方便 SSL 证书、防 IP 牵连、不同业务隔离,掌握 nmcli 这套配置方式,就不用再被老旧教程误导,也不用每次配置 IP 都心惊胆战。

运维这个事情,很多时候不是命令有多难,而是版本迭代带来的细节变化。CentOS7 陪伴了我们很多年,但是新系统的管理逻辑已经更新,尽早适应 NetworkManager 的配置方式,后续 Rocky、AlmaLinux、RHEL9 系列的服务器,配置逻辑都是相通的,一通百通。

如果你后续在宝塔面板、Nginx、Apache 里面绑定新增 IP 建站,或者遇到路由、防火墙、SSL 证书和多 IP 搭配的问题,也可以单独再梳理对应的配置方案。

本文来源:https://www.yuntue.com/post/240626.html | 云服务器网,转载请注明出处!

关于作者: yuntue

云服务器(www.yuntue.com)是一家专门做阿里云服务器代金券、腾讯云服务器优惠券的网站,这里你可以找到阿里云服务器、腾讯云服务器等国内主流云服务器优惠价格,以及海外云服务器、vps主机等优惠信息,我们会为你提供性价比最高的云服务器和域名、数据库、CDN、免费邮箱等企业常用互联网资源。

为您推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注