CentOS修改ifcfg-eth1配置静态IP,重启后仍未生效求助
这种情况我在CentOS环境里碰过好几次,多半是配置细节或服务逻辑出了问题,挨个排查下面这些点应该能解决:
确认网卡名称与配置文件匹配
先执行ip addr show命令确认实际的网卡名称——有些CentOS版本(尤其是7+)会用enp0s3这类命名而非eth1,如果你的网卡实际叫别的名字,那修改ifcfg-eth1自然不会生效。要确保配置文件的文件名和网卡设备名完全一致,且文件存放在/etc/sysconfig/network-scripts/目录下。检查配置文件关键参数是否正确
打开/etc/sysconfig/network-scripts/ifcfg-eth1,确保以下核心参数没有写错:BOOTPROTO=static:必须设为static而非dhcpONBOOT=yes:确保系统启动时激活该网卡IPADDR、NETMASK、GATEWAY:检查IP地址、子网掩码、网关的格式是否正确,不要有多余空格或拼写错误(比如写成IPADDRR)
给你一个标准的静态IP配置示例参考:
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=no NAME=eth1 UUID=xxxxxx-xxxx-xxxx-xxxx-xxxxxx DEVICE=eth1 ONBOOT=yes IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8 DNS2=8.8.4.4正确重启网络服务
光修改配置文件还不够,需要重载网络配置并重启服务:- CentOS 6及更早版本:
service network restart - CentOS 7及以上:
systemctl restart network
或者更精准地重启单个网卡:nmcli con reload && nmcli con up eth1
- CentOS 6及更早版本:
排查NetworkManager的干扰
如果你的系统运行着NetworkManager服务,它可能会自动覆盖手动配置的网卡参数。可以临时停止并禁用它试试:systemctl stop NetworkManager systemctl disable NetworkManager systemctl restart network之后再用
ip addr show eth1检查配置是否生效。检查网卡状态是否为UP
执行ip link show eth1,如果输出里显示DOWN,说明网卡未激活,手动启用它:ip link set eth1 up,再重启网络服务。SELinux的潜在影响
虽然概率不高,但SELinux可能会阻止系统读取修改后的配置文件。可以临时关闭SELinux测试:setenforce 0,然后重启网络服务。如果生效了,再通过semanage命令添加相应的SELinux规则,或者修改配置文件的上下文。排查配置文件冲突
检查/etc/sysconfig/network-scripts/目录下是否存在其他针对eth1的配置文件(比如ifcfg-eth1.bak或者命名类似的文件),系统可能加载了其他文件导致配置被覆盖,建议只保留正确的ifcfg-eth1文件。
内容的提问来源于stack exchange,提问作者Vahid Naderi




