写在前面:
遇到centos网络配置的问题,请先参考https://blog.csdn.net/zhuzj12345/article/details/80747862《CentOS 7下无法上网的终极解决方案》
如果试过后仍未解决,可以参考下面的做法。
问题:centos7无法重启网卡,虚拟网卡无法使用
最近帮朋友调试虚拟机遇到个问题,出现了以下问题:
#重启网卡
[root@localhost network-scripts]# service network start
Starting network (via systemctl): Job for network.service failed. See 'systemctl status network.service' and 'journalctl -xn' for details.[FAILED]
#查看网卡状态
[root@localhost network-scripts]# systemctl status network.service
network.service - LSB: Bring up/down networking Loaded: loaded (/etc/rc.d/init.d/network) Active: failed (Result: exit-code) since Sat 2015-03-07 02:53:12 EST; 6s ago Process: 8596 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=1/FAILURE)
Aug 24 10:03:28 localhost.localdomain network[8596]: RTNETLINK
answers: File ...Aug 24 10:03:28 localhost.localdomain network[8596]: RTNETLINK
answers: File ...Aug 24 10:03:28 localhost.localdomain network[8596]: RTNETLINK
answers: File ...Aug 24 10:03:28 localhost.localdomain network[8596]: RTNETLINK
answers: File ...Aug 24 10:03:28 localhost.localdomain network[8596]: RTNETLINK
answers: File ...Aug 24 10:03:28 localhost.localdomain network[8596]: RTNETLINK
answers: File ...Aug 24 10:03:28 localhost.localdomain systemd-sysctl[8913]: Overwriting earli...
Aug 24 10:03:28 localhost.localdomain systemd[1]: network.service: control pr...
Aug 24 10:03:28 localhost.localdomain systemd[1]: Failed to start LSB: Bring ...
Aug 24 10:03:28 localhost.localdomain systemd[1]: Unit network.service entere...
Hint: Some lines were ellipsized, use -l to show in full.
#查看日志
cat /var/log/messages |grep network
Aug 24 10:05:10 dg-p systemd: Starting LSB: Bring up/down networking...
Aug 24 10:05:10 dg-p network: Bringing up loopback interface: Could not load file '/etc/sysconfig/network-scripts/ifcfg-lo'
Aug 24 10:05:10 dg-p network: Could not load file '/etc/sysconfig/network-scripts/ifcfg-lo'
Aug 24 10:05:10 dg-p network: Could not load file '/etc/sysconfig/network-scripts/ifcfg-lo'
Aug 24 10:05:10 dg-p network: Could not load file '/etc/sysconfig/network-scripts/ifcfg-lo'
Aug 24 10:05:10 dg-p network: [ OK ]
Aug 24 10:05:11 dg-p network: Bringing up interface eno16777736: Error: Connection activation failed: No suitable device found for this connection.
Aug 24 10:05:11 dg-p network: [FAILED]
Aug 24 10:05:11 dg-p network: RTNETLINK answers: File exists
Aug 24 10:05:11 dg-p network: RTNETLINK answers: File exists
Aug 24 10:05:11 dg-p network: RTNETLINK answers: File exists
Aug 24 10:05:11 dg-p network: RTNETLINK answers: File exists
Aug 24 10:05:11 dg-p network: RTNETLINK answers: File exists
Aug 24 10:05:11 dg-p network: RTNETLINK answers: File exists
Aug 24 10:05:11 dg-p network: RTNETLINK answers: File exists
Aug 24 10:05:11 dg-p network: RTNETLINK answers: File exists
Aug 24 10:05:11 dg-p network: RTNETLINK answers: File exists
Aug 24 10:05:11 dg-p systemd: network.service: control process exited, code=exited status=1
Aug 24 10:05:11 dg-p systemd: Failed to start LSB: Bring up/down networking.
Aug 24 10:05:11 dg-p systemd: Unit network.service entered failed state.
Aug 24 10:05:11 dg-p systemd: network.service failed.
于是开始排查,通过vi /etc/sysconfig/network-scripts/ifcfg-eno16777736查看网卡配置:
#查看网卡配置
[root@localhost network-scripts]# vi /etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
DEVICE=eno16777736
ONBOOT=yes
IPADDR=192.168.138.158
NETMASK=255.255.255.0
GATEWAY=192.168.138.1
DNS1=8.8.8.8
DNS2=8.8.4.4
没有问题!
然后用vi /etc/sysconfig/grub命令查看系统启动项配置
#查看系统启动项配置
[root@localhost network-scripts]# vi /etc/sysconfig/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto net.ifnames=0 biosdevname=0 rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
问题来了!内核参数手动设置”GRUB_CMDLINE_LINUX“变量添加“net.ifnames=0 biosdevname=0”,使得默认的eno16777736不可用
centos7.X版本默认的网卡名称为eno16777736
内核参数组合使用的时候,其结果如下:
默认内核参数(biosdevname=0,net.ifnames=1): 网卡名 “enp5s2”
biosdevname=1,net.ifnames=0:网卡名 “em1”
biosdevname=0,net.ifnames=0:网卡名 “eth0” (最传统的方式,eth0 eth1 )
解决方案一,保留默认的网卡名称eno16777736:
(1)删除/etc/sysconfig/grub内核参数手动设置”GRUB_CMDLINE_LINUX“中的“net.ifnames=0 biosdevname=0”
#查看系统启动项配置
[root@localhost network-scripts]# vi /etc/sysconfig/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
:wq!保存
(2)清空/etc/udev/rules.d/70-persistent-net.rules里面的内容
(3)重启机器:
[root@localhost network-scripts]# reboot
解决方案二,把网卡名称改成eth0:
(1)修改网卡名和配置文件
mv /etc/sysconfig/network-scripts/ifcfg-eno16777736 /etc/sysconfig/network-scripts/ifcfg-eth0
[root@localhost network-scripts]# mv /etc/sysconfig/network-scripts/ifcfg-eno16777736 /etc/sysconfig/network-scripts/ifcfg-eth0
(2)修改配置文件里面name和device
vi /etc/sysconfig/network-scripts/ifcfg-eth0
#查看网卡配置
[root@localhost network-scripts]# vi /etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.138.158
NETMASK=255.255.255.0
GATEWAY=192.168.138.1
DNS1=8.8.8.8
DNS2=8.8.4.4
(3)配置/etc/sysconfig/grub,保留net.ifnames=0 biosdevname=0
vi /etc/sysconfig/grub
#查看系统启动项配置
[root@localhost network-scripts]# vi /etc/sysconfig/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto net.ifnames=0 biosdevname=0 rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
(4)手动生成70-persistent-net.rules以及其他方法
查看接口的MAC地址
# 查看接口的MAC地址
[root@localhost network-scripts]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 00:50:56:22:9b:24 brd ff:ff:ff:ff:ff:ff
(5)重启机器:
[root@localhost network-scripts]# reboot
网卡命名规则和linux启动项说明可参考:
参考https://blog.csdn.net/hzj_001/article/details/81587824《linux网卡命名规则》
系统启动项https://blog.csdn.net/sfslife/article/details/50935867《系统启动项(/etc/default/grub文件详解)》