虚拟机下Ubuntu上网设置

文章目录

    • 一、虚拟机上网的两种方式
      • [1.1 NAT模式(Network Address Translation)](#1.1 NAT模式(Network Address Translation))
      • [1.2 桥接模式(Bridge Mode)](#1.2 桥接模式(Bridge Mode))
      • [1.3 简介](#1.3 简介)
    • 二、实际配置
      • [2.1 NAT模式配置](#2.1 NAT模式配置)
      • [2.2 桥接模式配置](#2.2 桥接模式配置)

之前跟着博客配了好几个也没用,后来自己慢慢模式实践测试,终于可以了,下面总结给大家发出来,也方便自己后续查看。

一、虚拟机上网的两种方式

网络配置很重要,虚拟机下系统上网有两种方式,一种是NAT,一种是桥接模式

虚拟机上网有两种常见的模式:NAT(网络地址转换)和桥接模式。

1.1 NAT模式(Network Address Translation)

  • 在NAT模式下,虚拟机的网络连接通过宿主机进行转发。
  • 宿主机充当一个中介,为虚拟机提供网络连接,并为其分配一个私有IP地址。
  • 虚拟机与外部网络通信时,它的网络数据包会经过宿主机,然后由宿主机将虚拟机的私有IP地址转换成宿主机的公共IP地址,并在外部网络中进行通信。
  • 外部网络无法直接访问虚拟机,只能通过宿主机来间接访问。

1.2 桥接模式(Bridge Mode)

  • 在桥接模式下,虚拟机直接与物理网络中的其他设备相连,就像是一个独立的网络设备。
  • 虚拟机会获得与宿主机处于同一物理网络中的一个唯一IP地址,它可以直接与外部网络通信。
  • 虚拟机与外部网络之间的通信是透明的,外部网络设备可以直接与虚拟机通信,就像与其他物理设备一样。

1.3 简介

在NAT模式下,虚拟机的网络连接通过宿主机转发,使用宿主机的公共IP地址进行通信,外部网络无法直接访问虚拟机。

在桥接模式下,虚拟机直接与物理网络相连,获得一个独立的IP地址,可以直接与外部网络通信,外部网络设备可以直接访问虚拟机。

选择使用哪种模式取决于实际需求,NAT模式更适合一些简单的网络连接,而桥接模式则提供了更灵活和直接的网络访问方式。

还不懂?好吧,我再举个例子:

当使用NAT模式时,假设你的物理机(宿主机)的公共IP地址是192.168.0.100,而虚拟机在NAT模式下分配到的私有IP地址是192.168.0.101。那么,当虚拟机想要访问外部网络时,它会通过宿主机进行转发。

例如,虚拟机上运行着一个Web浏览器,你想要访问www.example.com这个网站。虚拟机的网络数据包会经过NAT转换,然后由宿主机将请求发送给外部网络。外部网络收到请求后,将响应发送回宿主机,然后宿主机再将响应转发给虚拟机。虚拟机内的Web浏览器就可以接收到来自www.example.com的响应,并显示在虚拟机的屏幕上。
当使用桥接模式时,虚拟机直接连接到物理网络中,就像是一个独立的网络设备。假设你的物理机连接到家庭路由器,并且你的虚拟机分配到了路由器分配的IP地址192.168.0.102。在桥接模式下,虚拟机可以直接与外部网络通信。

举个例子,你可以在虚拟机上运行一个FTP服务器,并将其设置为监听端口21。当外部网络中的其他设备(如笔记本电脑或手机)通过路由器访问192.168.0.102:21时,它们实际上是直接与虚拟机上的FTP服务器建立连接,进行文件传输操作。

二、实际配置

好,废话不多说,直接配置

2.1 NAT模式配置

先选中网络适配器,按照上面三个步骤执行,为什么要移除再添加呢,这样配置才会立马生效!!!,这就是有时候跟着其他博文配置,最终也没配置成功的原因

打开编辑器可以看到:


在NAT模式下,PC机充当了一个路由器的角色。它既要跟上层的真实路由器通信,又要跟Ubuntu虚拟机通信。玩过路由器的同学就知道,路由器的上层网段和下层网段是不允许相同的,而我们常用的路由器的网段是192.168.1.0,所以为了避免冲突,软件自己便分配了一个不常用的网段给下层的设备。但也并不保险,如果你的上层路由器网段恰恰是192.168.107.0,那么需要更改这里的网段。

到这里就可以上网啦,如果NAT模式无法满足你测试开发板的需求,那么接下来介绍桥接模式的设置。

2.2 桥接模式配置


同样的操作,一定要先将网络适配器(有什么后面会有数字,忽略即可)移除后添加噢,不然还得重新走一遍

设置桥接网络

不知道哪个的话,去windows下去查询

进入虚拟机,打开终端,进行网络配置

cpp 复制代码
sudo vi /etc/netplan/01-network-manager-all.yaml

修改为:

cpp 复制代码
etwork:
  version: 2
  renderer: NetworkManager
  ethernets:
    ens36:  # 网卡名
      dhcp4: no  # 设置为静态,如果动态改为yes,下面的参数都不需要设置了
      addresses: [192.168.1.120/24]  # 这个需要自己修改
      optional: true
      gateway4: 192.168.1.1  # 这个需要自己修改,默认网关,与宿主机一致
      nameservers:
          addresses: [8.8.8.8,114.114.114.114]  # DNS

例如我需要设置静态IP为:192.168.1.120,网关为192.168.1.1,这个是网关地址,可以在window下去查询,进入window命令行,输入ipconfig,我使用的是WIFI,以自己的实际为准,可以查到默认网关

配置好后利用命令重启网络

cpp 复制代码
sudo netplan apply

接下来就可以上网啦

编辑不易,解决你的问题的话,博友~,博友~,博友啊,

留下三连!!!

相关推荐
Jackey_Song_Odd6 分钟前
解决Ubuntu下无法装载 Windows D盘的问题
linux·ubuntu
Linux运维技术栈21 分钟前
Ansible(自动化运维)环境搭建及ansible-vault加密配置
运维·自动化·ansible
乔巴不是狸猫25 分钟前
第11周作业
linux
Bessssss2 小时前
centos权限大集合,覆盖多种权限类型,解惑权限后有“. + t s”问题!
linux·运维·centos
苹果醋32 小时前
Golang的文件加密工具
运维·vue.js·spring boot·nginx·课程设计
jwensh2 小时前
【Jenkins】Declarative和Scripted两种脚本模式有什么具体的区别
运维·前端·jenkins
silver6872 小时前
Linux 下的 GPT 和 MBR 分区表详解
linux
R-sz3 小时前
14: curl#6 - “Could not resolve host: mirrorlist.centos.org; 未知的错误“
linux·python·centos
大熊程序猿3 小时前
xxl-job docker 安装
运维·docker·容器
code_abc3 小时前
Shell 脚本编程基础:变量
linux