记一次linux虚拟机无法连外网的问题

缘起

前几天在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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodingLife99

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值