在CentOS系统中修改IP地址是日常运维中常见的操作,尤其是在网络配置、服务器部署或故障排查场景下,CentOS 7及更高版本默认使用NetworkManager管理网络,而CentOS 6及更早版本则使用传统的网络脚本(如ifcfg文件),以下将详细说明不同版本下修改IP地址的命令及操作步骤,涵盖静态IP和动态IP(DHCP)的配置方法,并补充网络服务重启、配置验证等关键操作。

CentOS 7/8/9(使用NetworkManager)
CentOS 7及以上版本推荐使用nmcli(NetworkManager命令行工具)或nmtui(文本界面工具)配置网络,相比传统ifcfg文件更高效且支持实时生效。
查看当前网络连接信息
使用nmcli查看系统中的网络连接(通常为eno16777736、eth0或ens33等,具体名称根据网卡标识而定):
nmcli connection show
输出示例中,NAME列即为连接名称,DEVICE列为对应的网卡设备名。
修改静态IP地址
假设连接名称为ens33,需配置静态IP地址为168.1.100,子网掩码为24(即255.255.0),网关为168.1.1,DNS为8.8.8和114.114.114,执行以下步骤:

(1)修改连接配置
sudo nmcli connection modify ens33 \ ipv4.method manual \ ipv4.addresses 192.168.1.100/24 \ ipv4.gateway 192.168.1.1 \ ipv4.dns "8.8.8.8 114.114.114.114" \ connection.autoconnect yes
参数说明:
ipv4.method manual:指定IPv4配置方法为静态IP(默认为auto,即DHCP)。ipv4.addresses:IP地址及子网掩码(/24表示掩码长度,等同于255.255.0)。ipv4.gateway:默认网关地址。ipv4.dns:DNS服务器地址,多个DNS用空格分隔。connection.autoconnect yes:设置开机自动连接该网络。
(2)重启网络连接使配置生效
sudo nmcli connection down ens33 && sudo nmcli connection up ens33
或使用nmcli connection reload重新加载配置后重启网络服务:
sudo nmcli connection reload && sudo systemctl restart NetworkManager
(3)验证配置
使用ip addr查看IP地址是否生效:
ip addr show ens33
使用ping测试网络连通性:

ping -c 4 192.168.1.1 ping -c 4 www.baidu.com
修改为DHCP动态获取IP
若需切换回DHCP自动获取IP,执行:
sudo nmcli connection modify ens33 ipv4.method auto sudo nmcli connection down ens33 && sudo nmcli connection up ens33
验证方式同上,此时ip addr show中IP地址应为DHCP服务器分配的动态地址。
CentOS 6及更早版本(使用ifcfg文件)
CentOS 6及更早版本通过编辑网卡配置文件(位于/etc/sysconfig/network-scripts/)实现IP修改,配置后需重启网络服务。
定位网卡配置文件
网卡配置文件命名规则为ifcfg-网卡名,例如ifcfg-eth0,使用以下命令查看:
ls /etc/sysconfig/network-scripts/
根据文件名确定目标网卡配置文件(如ifcfg-eth0)。
修改静态IP地址
使用vi或nano编辑文件:
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
修改或添加以下关键参数(以静态IP为例):
DEVICE=eth0 # 网卡设备名 TYPE=Ethernet # 网络类型 BOOTPROTO=static # 配置方法:static(静态)、dhcp(动态) IPADDR=192.168.1.100 # 静态IP地址 NETMASK=255.255.255.0 # 子网掩码 GATEWAY=192.168.1.1 # 默认网关 DNS1=8.8.8.8 # 主DNS DNS2=114.114.114.114 # 备DNS ONBOOT=yes # 开机是否启动网卡
参数说明:
BOOTPROTO:static表示静态IP,dhcp表示动态IP。IPADDR、NETMASK、GATEWAY、DNS需根据实际网络环境填写。ONBOOT:设置为yes确保开机时自动加载网卡配置。
重启网络服务
保存文件后,执行以下命令重启网络服务:
sudo service network restart
或使用/etc/init.d/network restart(兼容旧版本)。
验证配置
ifconfig eth0 # 查看IP地址配置 ping -c 4 192.168.1.1 # 测试网关连通性 ping -c 4 www.baidu.com # 测试外网连通性
修改为DHCP动态获取IP
若需切换为DHCP,只需修改ifcfg文件中的BOOTPROTO参数为dhcp,并删除IPADDR、NETMASK、GATEWAY、DNS等静态配置(保留DEVICE、TYPE、ONBOOT即可),然后重启网络服务:
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0 # 修改 BOOTPROTO=dhcp,删除静态IP相关参数 sudo service network restart
常见网络配置问题及解决
修改IP后无法上网
- 原因:网关或DNS配置错误、网络服务未重启、网卡未激活。
- 解决:
- 检查
/etc/sysconfig/network(CentOS 6)或nmcli connection show(CentOS 7+)中的网关配置是否正确。 - 确认DNS配置(CentOS 6需检查
/etc/resolv.conf,CentOS 7+可通过nmcli查看)。 - 重启网络服务(CentOS 6用
service network restart,CentOS 7+用nmcli connection down/up)。
- 检查
多网卡IP冲突
- 原因:多个网卡配置相同IP段或网关。
- 解决:使用
ip addr查看所有网卡IP,通过nmcli或ifcfg文件修改冲突网卡的IP地址,确保网关唯一且与IP段匹配。
不同版本修改IP命令对比
| 操作场景 | CentOS 7/8/9(nmcli命令) | CentOS 6(ifcfg文件操作) |
|---|---|---|
| 查看网络连接 | nmcli connection show |
ls /etc/sysconfig/network-scripts/ |
| 配置静态IP | nmcli connection modify ens33 ipv4.method manual ipv4.addresses 192.168.1.100/24 ... |
编辑ifcfg-eth0,设置BOOTPROTO=static及相关参数 |
| 切换DHCP | nmcli connection modify ens33 ipv4.method auto |
修改ifcfg-eth0中BOOTPROTO=dhcp |
| 重启网络服务 | nmcli connection down ens33 && nmcli connection up ens33 |
service network restart |
| 验证IP配置 | ip addr show ens33 |
ifconfig eth0 |
相关问答FAQs
Q1:修改CentOS IP地址后,ping网关不通怎么办?
A:首先检查IP地址、子网掩码、网关配置是否正确(例如168.1.100的网关应为168.1.1,而非168.0.1),若配置正确,可尝试关闭防火墙(sudo systemctl stop firewalld)或检查SELinux是否阻止网络访问(getenforce查看状态,setenforce 0临时关闭),若仍不通,可能是网卡驱动问题或物理线路故障,需检查网线连接或更换网卡。
Q2:CentOS 7使用nmcli修改IP后,重启服务器IP配置丢失怎么办?
A:通常是因为未设置connection.autoconnect yes,执行sudo nmcli connection modify <连接名> connection.autoconnect yes确保开机自动加载配置,若仍无效,可能是NetworkManager服务异常,可通过sudo systemctl restart NetworkManager重启服务,或检查/etc/sysconfig/network-scripts/目录下是否存在冗余的ifcfg文件(旧版本配置可能与新配置冲突)。
