linux系统下已经配置了ifcfg-eth0但不生效

本文介绍了解决Linux系统中IP地址配置失效的问题。通过删除70-persistent-net.rules文件、修改ifcfg-eth0配置文件,并重启系统来解决IP配置丢失的情况。

之前在虚拟机搭建了Linux系统,也设置好了ip(配置了/etc/sysconfig/network-scripts下的ifcfg-eth0),并做了备份,后来用备份时,发现已经设置好的ip地址失效了,后来研究了下,在此记录下处理过程:

1、删除/etc/sysconfig/network-scripts下的70-persistent-net.rules:

[root@localhost network-scripts]# cd /etc/udev/rules.d/
[root@localhost rules.d]# mv 70-persistent-net.rules 70-persistent-net.rules.bak

2、修改/etc/sysconfig/network-scripts下的ifcfg-eth0 :
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# 
[root@localhost network-scripts]# ls
ifcfg-eth0   ifdown-ippp  ifdown-routes  ifup-bnep  ifup-plip    ifup-sit          network-functions
ifcfg-lo     ifdown-ipv6  ifdown-sit     ifup-eth   ifup-plusb   ifup-tunnel       network-functions-ipv6
ifdown       ifdown-isdn  ifdown-tunnel  ifup-ippp  ifup-post    ifup-wireless
ifdown-bnep  ifdown-post  ifup           ifup-ipv6  ifup-ppp     init.ipv6-global
ifdown-eth   ifdown-ppp   ifup-aliases   ifup-isdn  ifup-routes  net.hotplug
[root@localhost network-scripts]# 
[root@localhost network-scripts]# vim ifcfg-eth0 
DEVICE=eth0
#HWADDR=00:0C:29:57:1E:97(注释掉)
TYPE=Ethernet
#UUID=b3b4e88b-6f57-480b-90d5-13506b174a36(注释掉)
ONBOOT=yes(这个要是yes)
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.23.98
NETMASK=255.255.255.0
GATEWAY=192.168.23.1
[root@localhost network-scripts]# 

3、重启
[root@localhost rules.d]# reboot

附:ifcfg-ethx文件详细参数说明
文件位于ifcfg-eth0在/etc/sysconfig/network-scripts下,
其配置如下:
TYPE=Ethernet    #网卡协议类型,在/etc/sysconfig/network-scripts/目录有多种网络配置文件,有Ethernet 、IPsec等类型,网络接口类型为Ethernet。
DEVICE=eth0    #设定物理设备别名(除了动态分配的PPP设备,这里是一个逻辑名)
ONBOOT=yes    #系统启动时是否自动加载该网卡
#yes:系统启动时激活该网络接口
#no:系统启动时不激活该网络接口
BOOTPROTO=static    #获取地址协议[static静态]、[bootp协议]、[dhcp协议]
#none:不使用启动地址协议
#bootp:BOOTP协议
#dhcp:DHCP动态地址协议
#static:静态地址协议
IPADDR=192.168.1.254    #IP地址
NETMASK=255.255.255.0    #IP对应的子网掩码
GATEWAY=192.168.1.1    #IP对应的网关地址
# DNS1=8.8.8.8    #指定DNS1地址
# DNS2=8.8.4.4    #制定DNS2地址
#当PEERDNS为yes时,DNS会被写入/etc/resolv.conf中。
HWADDR=00:11:22:33:44:55    #指定MAC地址,不能和MACADDR一起使用
# MACADDR=AA:BB:CC:DD:EE:FF    #覆盖物理分配的MAC地址,不能和HWADDR一起使用
# BROADCAST=192.168.1.255    #IP对应的广播地址
# NETWORK=192.168.1.0    #对应的网络地址
NM_CONTROLLED: #是否由Network Manager控制该网络接口。修改保存后立即生效,无需重启。被其坑过几次,建议一般设为no。
#yes:由Network Manager控制
#no:不由Network Manager控制
# USERCTL=yes    #非root用户是否允许控制这个设备
#yes:非root用户允许控制该网络接口
#no:非root用户不运行控制该网络接口
# SRCADDR=192.168.1.254    #指定为发出去的数据包的源IP地址
# PEERDNS=yes    #是否指定DNS。如果使用DHCP协议,默认为yes。
#yes:如果DNS设置,修改/etc/resolv.conf中的DNS
#no:不修改/etc/resolv.conf中的DNS
# DHCP_HOSTNAME=hostname    #DHCP接收IP地址前可指定主机名
# MASTER=bond0    #以太网接口被连接到这个接口
# SLAVE=yes    #这个设备是否由指定在MASTER字段中的频道绑定接口控制
IPV6INIT: #是否执行IPv6
#yes:支持IPv6
#no:不支持IPv6
IPV6ADDR: #IPv6地址/前缀长度


最简单的设置可能如下:
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
Linux系统中,尤其是使用CentOS 7及更高版本时,网络接口命名规则发生了变化。传统的`eth0`、`eth1`等命名方式被更可预测的命名方案所取代,例如`ens33`、`enp0s3`等。这种变化是由于systemd引入的可预测网络接口名称(Predictable Network Interface Names)机制所致[^1]。 如果系统中没有出现预期的`ifcfg-ens33`文件,而只存在`lo`(回环接口)配置文件,这通常意味着: 1. 系统检测到的网络接口名称为`eth0`,而不是`ens33`; 2. 网络管理工具(如NetworkManager)未生成对应的`ifcfg-*`配置文件; 3. 系统安装过程中未正确识别或配置网络设备。 ### 网络接口配置文件的命名规则 在`/etc/sysconfig/network-scripts/`目录下,每个网络接口应有对应的配置文件,命名格式为`ifcfg-<interface_name>`。例如: - `ifcfg-eth0`:传统命名方式; - `ifcfg-ens33`:基于可预测命名规则的名称。 ### 解决方法 1. **确认实际网络接口名称** 使用以下命令查看当前系统中可用的网络接口名称: ```bash ip link show ``` 或者: ```bash ls /sys/class/net ``` 输出结果将列出所有可用的网络接口,如`eth0`、`ens33`、`enp0s3`等。 2. **手动创建网络接口配置文件** 如果发现实际接口名称为`eth0`,而没有对应的`ifcfg-eth0`文件,则可以手动创建该文件: ```bash vi /etc/sysconfig/network-scripts/ifcfg-eth0 ``` 示例配置内容如下(静态IP配置): ```bash DEVICE=eth0 BOOTPROTO=static ONBOOT=yes IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8 ``` 3. **恢复传统网络接口命名规则** 如果希望继续使用`eth0`这样的命名方式,可以通过修改内核参数禁用可预测命名规则。编辑GRUB配置文件: ```bash vi /etc/default/grub ``` 在`GRUB_CMDLINE_LINUX`行中添加: ```bash net.ifnames=0 biosdevname=0 ``` 然后重新生成GRUB配置: ```bash grub2-mkconfig -o /boot/grub2/grub.cfg ``` 最后重启系统使更改生效。 4. **检查NetworkManager状态** 确保NetworkManager服务正在运行,并且没有阻止网络接口的自动配置: ```bash systemctl status NetworkManager ``` 如果服务未运行,可启动并启用它: ```bash systemctl start NetworkManager systemctl enable NetworkManager ``` 5. **重启网络服务** 修改配置后,重启网络服务以应用更改: ```bash systemctl restart network ``` 或者使用旧式命令: ```bash service network restart ``` ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值