缘起
前几天在linux虚拟机中拷来了一个Qt的项目,在配置QtCreator时,一直报编译器没有配置成功的问题,一开始以为是Qt项目中配置的问题,后来发现原来本机没有装g++,真是令人喷饭。
解决过程
用yum install命令,发现这个系统连不了网,报host xxxx not found的问题,这里是dns没有配置的问题,后来在/etc/sysconfig/network-scripts/ifcfg-enoxxx文件中配置了8.8.8.8和8.8.4.4。去执行systemctl restart network时报了配置文件也有问题。
Job for network.service failed. See "systemctl status network.service" and "journalctl -xe" for details.
当时有一种一万只草泥马奔腾的感觉。
查看下报错:
[root@localhost ~]# systemctl status network.service -l
network.service - LSB: Bring up/down networking
…
Jun 12 04:08:28 localhost.localdomain network[1161]:Bringing up interface enoxxx: ERROR : [/etc/sysconfig/network-scripts/ifup-eth] Device has different MAC address than expected, ignoring.
Jun 12 04:08:28 localhost.localdomain network[1161]: [FAILED]
Jun 12 04:08:28 localhost.localdomain systemd[1]: network.service control process exited, code=exited status=1
大概意思是设备的MAC地址发生错误了,但是自己按照网上的帖子对照下,发现并没有什么问题。
后来执行ifconfig时,发现只有lo和enoxxx两个网卡,但在network-scripts目录下却有多个ifcfg-eno开头的文件,可能是之前网络配置乱了,后来把lo和enoxxx之外的配置文件给删除了。
此时再执行systemctl restart network
,发现不报错了。
ping下百度,看外网是否畅通,发现返回了下面一条结果,然后就不动了。
root@localhost network-scripts]# ping www.baidu.com
PING www.a.shifen.com (180.101.49.12) 56(84) bytes of data.
此时说明dns服务好使了,但ping不通。后来用tcpdump抓包,发现一直发送icmp报文,但对方没有回复。
在ping不通时,先考虑是不是虚拟机,或者宿主机的防火墙开启了,后来发现关闭了防火墙还是有问题。
在这个地方卡了很久,后来同事看了下,问我笔记本连的哪里的网,我说走的公司的上网认证系统,他说试试自己手机的热点。今天又把环境给检查了下,换成手机热点,真的就ping通了。
我知道这是公司网造成的,但还没有找到如何做到的。因为我是通过连接公司wifi,登录认证系统上的网。windows下的应用和cmd下去ping百度都没有问题。等有答案了,我再更新进去。
心得
在解决问题过程中,经常看到网上说虚拟机网络连接从桥接模式改为NAT模式,或者在ifcfg-enxxx文件中把dhcp改为static的说法。最后自己在桥接模式,dhcp的情况下实现了连接外网。其实只要能够把内容配置正确(比如在static时要配置IPADDR,PREFIX和GATEWAY
),采用哪种方式问题都不大。
dhcp下ifcfg-enxxx文件的配置示例:
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME="enxxx" #按照真实的名字填写
UUID=8ad63482-fb9c-4986-b136-61c109b9b0ba
ONBOOT=yes
DNS1=8.8.8.8
DNS2=8.8.4.4
HWADDR=xxxx #按照真实的地址填写,需要和ip addr中的保持一样
PEERDNS=yes
PEERROUTES=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
此时对应的结果:
[root@localhost network-scripts]# ping www.baidu.com
PING www.a.shifen.com (36.152.44.96) 56(84) bytes of data.
64 bytes from 36.152.44.96: icmp_seq=1 ttl=53 time=29.9 ms
64 bytes from 36.152.44.96: icmp_seq=2 ttl=53 time=26.2 ms
64 bytes from 36.152.44.96: icmp_seq=3 ttl=53 time=34.9 ms
static下ifcfg-enxxx文件的配置示例:
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME="enxxx" #按照真实的名字填写
UUID=8ad63482-fb9c-4986-b136-61c109b9b0ba
ONBOOT=yes
DNS1=8.8.8.8
DNS2=8.8.4.4
HWADDR=xxxx #按照真实的地址填写,需要和ip addr中的保持一样
IPADDR=172.20.10.11
PREFIX=24
PEERDNS=yes
PEERROUTES=yes
GATEWAY=172.20.10.1
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
此时的结果:感觉比着dhcp的影响速度要慢,注意这里的百度的ip地址变了,可能和这个有关。
[root@localhost network-scripts]# ping www.baidu.com
PING www.wshifen.com (103.235.46.39) 56(84) bytes of data.
64 bytes from 103.235.46.39: icmp_seq=1 ttl=43 time=87.1 ms
64 bytes from 103.235.46.39: icmp_seq=5 ttl=43 time=131 ms
64 bytes from 103.235.46.39: icmp_seq=12 ttl=43 time=113 ms
参考文章
1.centOS 7下无法启动网络(service network start)错误解决办法(应该是最全的了。。。)
2.Linux关闭防火墙命令
3.解决 “eth0 设备的 MAC 地址与预想的不符,忽略” 问题
转载请注明:https://blog.csdn.net/Stephen___Qin/article/details/114493453