[Ubuntu] VirtualBox 中的虚拟机突然无法访问Internet

这篇具有很好参考价值的文章主要介绍了[Ubuntu] VirtualBox 中的虚拟机突然无法访问Internet。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


virtualbox虚拟机网络用不了,深入学习Linux,1024程序员节,ubuntu

一、前言

原先部署的一台虚拟机,今天在安装应用时发现突然上不了网了。无奈之下使用ping命令测试了一下:

ping baidu.com

结果如下:

ping: baidu.com: Temporary failure in name resolution

第一反应就是:域名解析出问题了


二、环境说明

  • 宿主机的ip:192.168.43.110
  • 虚拟机的ip:192.168.43.9
  • 宿主机系统:win10
  • 虚拟机系统:Ubuntu 18.04
  • 虚拟机管理软件:ViurtualBox
  • 虚拟机网络连接方式:桥接

三、原因分析

为了进一步定位问题的原因,需要确认如下两个问题:

  • 宿主机和虚拟机是否连通
  • 宿主机能否访问Internet

3.1 确认宿主机和虚拟机是否连通

虚拟机 ping 宿主机(VM -> Host)

ping 192.168.43.110

结果如下:
virtualbox虚拟机网络用不了,深入学习Linux,1024程序员节,ubuntu
 
 
宿主机 ping 虚拟机(Host -> VM)

ping 192.168.43.9

结果如下:
virtualbox虚拟机网络用不了,深入学习Linux,1024程序员节,ubuntu

从上述两幅图的丢包率都为0%,可以看出 宿主机和虚拟机之间是通的

3.2 确认宿主机是否可上网

在宿主机ping下百度:

ping baidu.com

结果如下:
virtualbox虚拟机网络用不了,深入学习Linux,1024程序员节,ubuntu
如图所示,宿主机是可以访问Internet的。

因为宿主机可以访问Internet,并且宿主机和虚拟机是连通的,所以有理由相信:问题出在虚拟机一侧

3.3 查看虚拟机的DNS记录

一开始就怀疑是虚拟机的DNS出现问题导致其无法访问Internet,那么就需要检查一下DNS是否设置正确。

那么如何查看Ubuntu的DNS记录呢?
可以通过如下方法:

  • nslookup ${host}
  • host ${host}

这里使用nslookup命令:

#shell cmd
nslookup baidu.com

执行结果如下:virtualbox虚拟机网络用不了,深入学习Linux,1024程序员节,ubuntu
报错信息文本:

;; connection timed out; no servers could be reached

错误信息表明:DNS server不可达

出于好奇,我们可以看一下宿主机的执行结果:
virtualbox虚拟机网络用不了,深入学习Linux,1024程序员节,ubuntu
这里可以看到宿主机上的 DNS server 是 192.168.10.1

那是否我们将虚拟机的 DNS server 也改为这个就可以了呢
答案是不可以的。因为网段不同(DNS的网段的10.*, 而虚拟机的网段是43.*),无法访问。

即使网段相同,也不推荐这么做。原因如下:

因为我们是使用的虚拟机安装的Linux。宿主机的网络环境是不固定的,比如我在公司的时候,宿主机的网段是192.168.1.*,但是当我回到家时,宿主机网段就会变为 192.168.10.*。
 
这样就会导致:在不同网络环境时,我们需要不断调整 DNS server 的配置。
 
有的小伙伴可能会说可以把这两个网段的 DNS server 都配置上啊。但是这样的解决方案终究是不优雅的。因为不排除宿主机又会进入新的网络环境(比如出差)

3.4 查看虚拟机的DNS设置

可以使用如下命令查看DNS设置

systemd-resolve --status

结果如下:

Global
          DNSSEC NTA: 10.in-addr.arpa
                      16.172.in-addr.arpa
                      168.192.in-addr.arpa
                      17.172.in-addr.arpa
                      # 省略18~30
                      ...
                      31.172.in-addr.arpa
                      corp
                      d.f.ip6.arpa
                      home
                      internal
                      intranet
                      lan
                      local
                      private
                      test

Link 2 (enp0s3)
      Current Scopes: DNS
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 192.168.43.1

我们可以看到DNS server是192.168.43.1。
而这个值恰好是网络配置(位于 /etc/netplan/00-installer-config.yaml )中的值:
virtualbox虚拟机网络用不了,深入学习Linux,1024程序员节,ubuntu
事实上,通过ping命令可以发现:43.1这个地址是不通的。所以这里需要进行调整

3.5 是否可以直接访问外网ip

在确定是DNS问题前,还需要检查下虚拟机是否可以直接访问外网ip。

如果能够访问外网ip,但是访问不了域名,才能够确定是 DNS 的问题。否则连外网ip都访问不了,则极有可能是网络设置的问题。

ping外网ip的结果如下:
virtualbox虚拟机网络用不了,深入学习Linux,1024程序员节,ubuntu
丢包率是100% => 网络配置是有问题的,因为如果是单纯的DNS问题,外网ip是能ping通的。

 
 

四、问题解决

通过前面的分析,已经定位问题的原因如下:

  • DNS的设置不正确。
  • 网络配置不正确(虚拟机不能访问外网)

 

4.1 修改虚拟机DNS的设置

/etc/resolv.conf 是 systemd-resolve 的配置文件,通过下面的命令可以查询DNS server 的配置:

cat /etc/resolv.conf

内容如下:
virtualbox虚拟机网络用不了,深入学习Linux,1024程序员节,ubuntu
但是如果需要修改DNS server,不能直接在该文件上操作。 因为有许多小伙伴反映:修改后数据会被覆盖为 127.0.0.53

而关于127.0.0.53 是什么,可以看下该网友的文章:

关于DNS服务器127.0.0.53的理解

修改DNS server(编辑**/etc/systemd/resolved.conf**文件):

# 编辑模式(DNS=223.5.5.5 180.76.76.76)
vi /etc/systemd/resolved.conf
# 重启服务
systemctl restart systemd-resolved
# 随机启动
systemctl enable systemd-resolved
# 备份/etc/resolv.conf.bak
mv /etc/resolv.conf /etc/resolv.conf.bak
ln -s /run/systemd/resolve/resolv.conf /etc/

但是配置完成后,还是ping不通baidu.com。

DNS的解析效果如下:
virtualbox虚拟机网络用不了,深入学习Linux,1024程序员节,ubuntu

 
 

4.2 修改网络配置

网络配置的修改不单单是虚拟机侧,同时宿主机的网络配置也需要进行调整。
 
4.2.1 调整虚拟机的网络配置

# 编辑模式( nameservers.addresses 改为 223.5.5.5)
# 网关改为 桥接网卡的ip
vi /etc/netplan/00-installer-config.yaml
# 使修改生效
netplan apply

主要调整了两部分:

  • 网关:改为桥接网卡的ip
  • DNS server: 改为阿里的DNS地址

修改后的网络配置为:
virtualbox虚拟机网络用不了,深入学习Linux,1024程序员节,ubuntu
 
4.2.2 调整宿主机的网络配置

到目前为止,网络情况如下:

  • 虚拟机和宿主机之间的网络 -> ok
  • 宿主机可访问Internet -> ok
  • 虚拟机ping外网ip -> no
  • 虚拟机ping外网域名 -> no

下图是宿主机的网卡情况:
virtualbox虚拟机网络用不了,深入学习Linux,1024程序员节,ubuntu

  • WLAN 是无线网卡,可以访问Internet
  • 以太网7 是桥接网卡(环回适配器)

桥接网卡如果想上网,需要无线网卡对其共享 Internet 连接

virtualbox虚拟机网络用不了,深入学习Linux,1024程序员节,ubuntu
操作如下:

  • 勾选:允许其他网络用户通过此计算机的 Internet 连接来连接
  • 家庭网络连接:选择 桥接网卡
  • 保存设置

保存时会提示:
virtualbox虚拟机网络用不了,深入学习Linux,1024程序员节,ubuntu
确认后桥接网卡的ip地址被修改为:192.168.137.1

可以通过win+r,输入:ncpa.cpl ,快速打开网络连接
然后将 桥接网卡 的ip地址改回:192.168.43.110
virtualbox虚拟机网络用不了,深入学习Linux,1024程序员节,ubuntu

 
 

4.3 验证虚拟机网络

 
4.3.1 ping外网ip

# 谷歌的DNS
ping 8.8.8.8
# 阿里的DNS
ping 223.5.5.5

结果如下:
virtualbox虚拟机网络用不了,深入学习Linux,1024程序员节,ubuntu

 
4.3.2 ping外网域名

尝试ping一下百度的网址:

root@proxy_server_01:~# ping baidu.com
PING baidu.com (39.156.66.10) 56(84) bytes of data.
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=1 ttl=51 time=30.1 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=2 ttl=51 time=82.7 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=3 ttl=51 time=30.6 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=4 ttl=51 time=30.0 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=5 ttl=51 time=38.5 ms
^C
--- baidu.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4007ms
rtt min/avg/max/mdev = 30.097/42.421/82.727/20.404 ms

从统计信息可知:能够ping通该网站。至此虚拟机无法访问 Internet 的问题已经解决。

 
4.3.3 解析外网域名的ip

为了验证DNS 是否可以正确解析,可以在终端中执行如下命令:

nslookup baidu.com

virtualbox虚拟机网络用不了,深入学习Linux,1024程序员节,ubuntu
首先,不再报连接超时的错误了。并且返回了如下信息:

  1. 域名服务器的地址:223.5.5.5
  2. 域名以及对应的ip地址:这里有两个(ping命令时随机返回当中一个)

如果结合前面在宿主机的执行结果,我们可以发现:两者返回的数据有一些差异(主要是 Server 和 Address)

 
也可以通过host命令看下解析结果:
virtualbox虚拟机网络用不了,深入学习Linux,1024程序员节,ubuntu

 

五、疑问和总结

5.1 遇到的问题

5.1.1 Nameserver和DNS server是一个东西吗?

答:Nameserver是负责实现 DNS 这套系统的服务器, 有时候也叫做 DNS server, 这也是为什么许多人会将 nameserver 同 DNS 搞混起来的原因.

5.1.2 DNS的优先级是什么?

优先级:缓存>hosts>dns

5.1.3 Linux如何查看hosts文件?

终端执行如下命令:

cat /etc/hosts
# or
vi /etc/hosts
5.1.4 如何查看和修改DNS server?

答:
(1)查看DNS server:

# 查看 DNS server
systemd-resolve --status

(2)修改DNS server:

# 修改 DNS server
vi /etc/systemd/resolved.conf 
5.1.5 如何修改网络配置?

过去的Ubuntu版本,终端执行命令:

vi /etc/network/interfaces

Ubuntu18中该文件开头有如下信息:

# ifupdown has been replaced by netplan(5) on this system.  See
# /etc/netplan for current configuration.
# To re-enable ifupdown on this system, you can run:
#    sudo apt install ifupdown

也就是说在Ubuntu18.04中,/etc/network/interfaces 中的配置已经被netplan取代了。其配置目录为:/etc/netplan 。
我的配置文件的名称为:/etc/netplan/00-installer-config.yaml

所以在Ubuntu18.04中若要修改网络配置,则需修改/etc/netplan/00-installer-config.yaml中的内容:
virtualbox虚拟机网络用不了,深入学习Linux,1024程序员节,ubuntu

 

5.1.6 常见DNS server 有哪些?
名称 DNS server
谷歌DNS 8.8.8.8
阿里DNS 223.5.5.5、223.6.6.6
百度DNS 180.76.76.76
腾讯DNS 119.29.29.29、182.254.116.116

 

5.2 总结

 
  本文针对虚拟机无法访问 Internet 的问题,进行了虚拟机和宿主机之间的连通性分析,确认了宿主机可以访问Internet,并且虚拟机和宿主机的互通的。唯一异常的现象是:虚拟机无法ping通外网ip。
 
  结合前面的分析结果,怀疑宿主机的网络配置有问题。通过一番检查后发现最主要的原因是宿主机的桥接网卡没有访问外网的能力,而解决方法就是通过无线网卡(或当前上网的网卡)分享其Internet连接。文章介绍了具体的配置步骤,并额外拓展了一些网络知识。

下图是本篇文章相关的思维导图:
virtualbox虚拟机网络用不了,深入学习Linux,1024程序员节,ubuntu文章来源地址https://www.toymoban.com/news/detail-782500.html

到了这里,关于[Ubuntu] VirtualBox 中的虚拟机突然无法访问Internet的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • virtualbox报错:无法分配USB设备xxxx到虚拟电脑

    1、设备接触不良:重新插拔接口 2、vbox本身问题:正常关闭虚拟机client,关闭host中的vbox管理器 3、usb驱动问题:自行安装对应驱动,或者参考下方引用链接提供的驱动安装方法 4、USB设备筛选器与协议不匹配,这种原因比较犄角旮旯,按照引用链接提供的方法设置好筛选器,

    2024年02月11日
    浏览(44)
  • VirtualBox为虚拟机设置固定IP且可通过外网访问

            设置号网络管理器才能实现虚拟机通过虚拟路由访问公网             需要设置两块网卡,一块和虚拟路由连接,另一块使用桥接模式保证可以访问外网   1.进入/etc/sysconfig/network-scripts目录,有两块网卡,一般是ifcfg-enp0s3和ifcfg-enp0s8(修改前可以先备份一下)  cd

    2024年02月09日
    浏览(42)
  • VirtualBox Ubuntu无法安装增强功能以及无法复制粘贴踩坑记录

    在VirtualBox安装增强功能想要和主机双向复制粘贴,中间查了很多资料,终于是弄好了。记录一下过程,可能对后来人也有帮助,我把我参考的几篇主要的博客都贴上来了,如果觉得我哪里讲得不清楚的,可以去对应的博客去看,讲得更加详细。 报错:未能加载虚拟光盘…到

    2024年02月14日
    浏览(51)
  • virtualBox虚拟机中Ubuntu与windows共享文件夹

    说明:本文中提及的“ win_shared” 为windows中创建用于共享的文件名称,“~/share”为Ubuntu系统中挂载共享文件夹的目录名称。这两个地方需要根据大家的实际情况进行调整。 一、首先确保virtualbox安装好了增强工具功能 不知道如何安装增强功能的可以看这篇博客中的第四点 非

    2023年04月18日
    浏览(69)
  • VMware虚拟机启动Ubuntu时报错:“另一个程序已锁定文件的一部分,进程无法访问”该怎样解决呢?

    宝子们有木有遇到这样的问题呀“另一个程序已锁定文件的一部分,进程无法访问”,跟着辣面子来解决这个问题吧 按照自己路径寻找 放心将它们删除 出现此文件是因为虚拟机在运行的时候,会锁定文件,防止被修改,如果系统突然崩溃、异常关机等,虚拟机尚未把已经锁

    2024年02月11日
    浏览(62)
  • 生产服务器突然本机无法访问本机IP的端口

            生产服务器突然无法访问自己本机IP地址的端口,通过localhost或者127.0.0.1都可以正常访问         服务器是搭建在虚拟机上面,起初由于服务器内存不足的原因,导致了服务器故障无法连接上,后重启了服务器,由于搭建的应用较多,而且存在应用间互相调用

    2024年02月14日
    浏览(49)
  • VirtualBox_Ubuntu22.10_Terminal无法打开

    情况描述:新安装的虚拟机无法打开Terminal,从应用列表中单击Terminal,左上角任务栏会出现Terminal,并且鼠标转圈,但是过一会左上角Terminal消失,就像一切都没有来过。 解决办法: CTRL + ALT + F3 进入命令行模式(需要返回桌面时CTRL + ALT + F1) cd /etc/default sudo nano locale 把文件

    2024年02月12日
    浏览(45)
  • mac中的VirtualBox不能分配USB设备到虚拟电脑

    检查工具- 扩展包是否安装 检查usb设备是否打开 检查权限 允许VirtualBox访问:在“安全性与隐私”窗口中,选择“隐私”标签。 在左侧的列表中,滚动找到并选择“完全磁盘访问权限”(Full Disk Access)或者可能是“文件和文件夹”(Files and Folders)。 在右侧的应用程序列表

    2024年04月16日
    浏览(48)
  • 关于xftp突然无法连接服务器或虚拟机,可以ping通自己的虚拟机ip地址

                    关于xftp突然无法连接服务器或虚拟机,ping自己的虚拟机ip地址可以ping通 主机能ping通虚拟机(ubuntu) 虚拟机能ping通主机 虚拟机能ping通百度 FileZilla 链接不了虚拟机 SucureCRT联接不了虚拟机(服务器) 解决方法: 如果发现ping自己的虚拟机ip地址可以ping通那么

    2024年01月21日
    浏览(51)
  • 【VirtualBox的虚拟机(Ubuntu)和Windows系统之间实现复制粘贴和共享文件夹】

    1.VirtualBox设置-常规-高级,将共享粘贴板和拖放设置为双向。 2.启动Ubuntu,设备-安装增强功能, 3.重启(reboot)Ubuntu,即可实现windows和ubantu之间共享复制粘贴。 Windows复制粘贴快捷键:Ctrl+C Ctrl+V Ubuntu复制粘贴快捷键:Ctrl+Shift+C Ctrl+Shift+V 1.设置共享文件夹 设置-共享文件夹-右边,

    2024年02月05日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包