虚拟机三种网络模式详解

  • 在电脑里开一台虚拟机,是再常见不过的操作了。无论是用虚拟机玩只有旧版本系统能运行的游戏,还是用来学习Linux、跑跑应用程序都是很好的。而这其中,虚拟机网络是绝对绕不过去的。本篇文章通俗易懂的介绍了常见的虚拟网络提供的三种网络链接模式NAT、桥接、主机。即使不懂虚拟网络,看了本篇也能成为虚拟机网络糕手糕糕手!

一:NAT( 网络地址转换)

image-20240716151837120

image-20240929213736185

工作原理/链接方式

工作原理

  • NAT模式(网络地址转换模式,Network Address Translation)允许虚拟机通过主机访问外部网络(如互联网),但外部网络无法直接访问虚拟机。其工作原理主要是通过主机充当虚拟机的“网关”来实现网络地址转换。
  1. 虚拟机的私有网络
    • 在 NAT 模式下,虚拟机会被分配一个私有 IP 地址(如 192.168.x.x 或 10.x.x.x),这个 IP 地址只能在虚拟机和主机之间有效,并且与外部网络隔离。
  2. 虚拟机请求外部网络
    • 当虚拟机需要访问外部网络(如互联网)时,它会把数据包通过虚拟网卡发送给主机。
    • 数据包的源 IP 地址是虚拟机的私有 IP 地址,而目标地址是外部网络的某个设备(例如某个网站的服务器 IP)。
  3. 主机进行 NAT 转换
    • 主机充当,NAT 路由器,将来自虚拟机的数据包进行,网络地址转换。
      • 将数据包中的源 IP 地址从虚拟机的私有 IP 地址转换为主机的公网 IP 地址。
      • 保留虚拟机的端口信息,以便将返回数据正确转发给虚拟机。
  4. 数据包发送至外部网络
    • 主机将已经替换源 IP 的数据包发送到外部网络(例如互联网)。
    • 外部服务器只看到数据包的源地址为主机的公网 IP,而不知道虚拟机的私有 IP。
  5. 外部网络响应数据
    • 外部服务器将响应数据包发送回主机的公网 IP。
    • 主机接收到响应后,使用 NAT 表将数据包中的目标 IP 地址重新转换回虚拟机的私有 IP 地址。
  6. 主机将数据包转发给虚拟机
    • 主机将响应数据包转发给对应的虚拟机,虚拟机接收到外部网络的数据包后完成通信。
  • NAT模式下,主机是虚拟的路由器,而虚拟机是一台私有网络中的机器。而既然是私有网络中的机器,那就和私有网络IP地址有关

私有网络IP地址范围

  • 10.0.0.0 - 10.255.255.255

  • 172.16.0.0 - 172.31.255.255

  • 192.168.0.0 - 192.168.255.255

其他需要注意的

  • 处于网络中的计算机,必须要在同一个子网下面才能直接通信(通过数据链路层来通信)。具体什么是子网 可以看我的另一篇博客:
  • 如果两台计算机不在同一个子网,不能通过直接的数据链路层进行数据传输。但是,它们可以通过 三层(网络层) 的设备,例如路由器,来进行通信。
    • 路由器通过网络层协议(如 IP 协议)将数据从一个子网转发到另一个子网
https://blog.csdn.net/qq_61654952/article/details/139453099

二:桥接模式(独立主机)

桥接模式允许虚拟机与主机网络以及外部网络完全独立地通信,虚拟机就像是网络中的一台独立主机,具有自己的 IP 地址。

image-20240929213748356

工作原理

1.网络连接

  • 在桥接模式下,虚拟机的网络适配器与主机的物理网卡(例如以太网适配器或无线适配器)相连接。这种连接模拟了虚拟机与局域网中的一台独立设备直接相连的情况。

2.获取 IP 地址

  • 虚拟机启动后,会通过 DHCP(动态主机配置协议)从网络中的 DHCP 服务器获取一个 独立的 IP 地址。这个 IP 地址与局域网中的其他设备位于同一子网内,确保虚拟机可以与其他设备直接通信。

3.数据链路层通信

  • 虚拟机和其他网络设备之间的通信是在数据链路层(Layer 2)进行的。虚拟机使用 MAC 地址进行识别和通信。
  • 当虚拟机发送数据包时,它会将数据包发送到主机的物理网卡。由于虚拟机的网络适配器与主机的网卡桥接,数据包将直接转发到局域网。

其他需要注意的

  • 需要确保 DHCP 服务器能够为虚拟机分配 IP,或者手动为虚拟机分配一个不与其他设备冲突的 IP 地址。
  • 桥接模式下,虚拟机和主机地位是一样的,都是主机链接的局域网中的一台机器,它可以直接访问局域网中的其他设备,如打印机、文件服务器等,也可以被其他设备直接访问。

三:主机模式(子主机)

主机模式将虚拟机完全隔离在主机的网络中,虚拟机只能与主机通信,无法访问外部网络,也无法与其他局域网设备通信。

image-20240929213717638

工作原理

1.虚拟网络适配器

  • 在主机模式下,虚拟机通过一个虚拟网络适配器与主机进行连接。这个虚拟适配器形成了一个独立的局域网,仅包含主机和虚拟机,完全隔离于外部网络。

2.IP 地址分配

  • 主机和虚拟机在这个私有网络中都有各自的 IP 地址。主机的虚拟网络适配器通常会为虚拟机分配一个私有 IP 地址(例如 192.168.x.x)。这个 IP 地址只在主机和虚拟机之间有效,外部网络无法访问。

3.数据传输

  • 当虚拟机需要与主机通信时,它通过虚拟网络适配器发送数据包。这些数据包只在主机和虚拟机之间进行转发。
  • 主机和虚拟机之间的通信是在数据链路层(Layer 2)进行的,使用 MAC 地址进行识别和处理。

其他需要注意的

  • 没有,这个模式一般也很少人用吧

在VM中打开

image-20240929214043415

image-20240929214519495

总结

虚拟机软件设置不同的网络模式,是因为有其特定的应用场景,比如

  • 桥接模式:适合需要与外部网络通信的虚拟机。
  • NAT 模式:适合需要访问外部网络,但无需外部设备访问虚拟机的情况。
  • 主机模式:适合完全隔离的虚拟环境。

img

你好,我是Qiuner. 为帮助别人少走弯路而写博客 这是我的 github https://github.com/Qiuner⭐ gitee https://gitee.com/Qiuner 🌹

如果本篇文章帮到了你 不妨点个吧~ 我会很高兴的 😄 (^ ~ ^) 。想看更多 那就点个关注吧 我会尽力带来有趣的内容 😎。

代码都在github或gitee上,如有需要可以去上面自行下载。记得给我点星星哦😍

如果你遇到了问题,自己没法解决,可以去我掘金评论区问。私信看不完,CSDN评论区可能会漏看 掘金账号 https://juejin.cn/user/1942157160101860 掘金账号

更多专栏:
  • 📊 一图读懂系列

  • 📝 一文读懂系列

  • ⚽ Uniapp

  • 🌟 持续更新

  • 🤩 Vue项目实战

  • 🚀 JavaWeb

  • 🎨 设计模式

  • 📡 计算机网络

  • 🎯 人生经验

  • 🔍 软件测试

掘金账号 CSDN账号

感谢订阅专栏 三连文章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/55489.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C/C++进阶(一)--内存管理

更多精彩内容..... 🎉❤️播主の主页✨😘 Stark、-CSDN博客 本文所在专栏: 学习专栏C语言_Stark、的博客-CSDN博客 其它专栏: 数据结构与算法_Stark、的博客-CSDN博客 ​​​​​​项目实战C系列_Stark、的博客-CSDN博客 座右铭&a…

大数据-151 Apache Druid 集群模式 配置启动【上篇】 超详细!

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

《Linux从小白到高手》理论篇(六):Linux软件安装一篇通

List item 本篇介绍Linux软件安装相关的操作命令,看完本文,有关Linux软件安装相关操作的常用命令你就掌握了99%了。 Linux软件安装 RPM RPM软件的安装、删除、更新只有root权限才能使用;查询功能任何用户都可以操作;如果普通用…

移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——13.mapset(模拟实现)

1.对红黑树进行改造 1.1treenode模板参数改变 之前构建treenode模板参数传的是class k,class v(set为k&#xff0c;k&#xff1b;map是k&#xff0c;v&#xff09;&#xff0c;现在直接用T代替 template<class T> //这里直接传了T作为模板参数&#xff0c;T可能是pai…

【WRF工具】cmip6-to-wrfinterm工具概述:生成WRF中间文件

cmip6-to-wrfinterm工具概述 cmip6-to-wrfinterm工具安装cmip6-to-wrfinterm工具使用快速启动&#xff08;Quick start&#xff09;情景1&#xff1a;MPI-ESM-1-2-HR&#xff08;默认&#xff09;&#xff1a;情景2&#xff1a;BCMM情景3&#xff1a;EC-Earth3 更改使用&#x…

进度条(倒计时)Linux

\r回车(回到当前行开头) \n换行 行缓冲区概念 什么现象&#xff1f; 什么现象&#xff1f;&#xff1f; 什么现象&#xff1f;&#xff1f;&#xff1f; 自己总结&#xff1a; #pragma once 防止头文件被重复包含 倒计时 在main.c中&#xff0c;windows.h是不可以用的&…

大语言模型入门(一)——大语言模型智能助手

一、大语言模型智能助手 2022年末ChatGPT一经推出&#xff0c;一时间不注册个账号用一下都跟不上潮流了。然而&#xff0c;我们要注册OpenAI的账号使用ChatGPT还是一件比较麻烦的事情&#xff08;懂的都懂&#xff09;。好在&#xff0c;国内各大团队非常给力地及时推出了自研的…

计算机网络--TCP、UDP抓包分析实验

计算机网络实验 目录 实验目的 实验环境 实验原理 1、UDP协议 2、TCP协议 实验具体步骤 实验目的 1、掌握使用wireshark工具对UDP协议进行抓包分析的方法&#xff0c;掌握UDP协议的报文格式&#xff0c;掌握UDP协议校验和的计算方法&#xff0c;理解UDP协议的优缺点&am…

Linux云计算 |【第四阶段】RDBMS1-DAY3

主要内容&#xff1a; 子查询&#xff08;单行单列、多行单列、单行多列、多行多列&#xff09;、分页查询limit、联合查询union、插入语句、修改语句、删除语句 一、子查询 子查询就是指的在一个完整的查询语句之中&#xff0c;嵌套若干个不同功能的小查询&#xff0c;从而一…

《OpenCV》—— 指纹验证

用两张指纹图片中的其中一张对其验证 完整代码 import cv2def cv_show(name, img):cv2.imshow(name, img)cv2.waitKey(0)def verification(src, model):sift cv2.SIFT_create()kp1, des1 sift.detectAndCompute(src, None)kp2, des2 sift.detectAndCompute(model, None)fl…

stm32四足机器人(标准库)

项目技术要求 PWM波形的学习 参考文章stm32 TIM输出比较(PWM驱动LED呼吸灯&&PWM驱动舵机&&PWM驱动直流电机)_ttl pwm 驱动激光头区别-CSDN博客 舵机的学习 参考文章 stm32 TIM输出比较(PWM驱动LED呼吸灯&&PWM驱动舵机&&PWM驱动直流电机)…

Pikichu-xss实验案例-通过xss获取cookie

原理图&#xff1a; pikachu提供了一个pkxss后台&#xff1b; 该后台可以把获得的cookie信息显示出来&#xff1b; 查看后端代码cookie.php&#xff1a;就是获取cookie信息&#xff0c;保存起来&#xff0c;然后重定向跳转到目标页面&#xff1b;修改最后从定向的ip&#xff0…

V3D——从单一图像生成 3D 物体

导言 论文地址&#xff1a;https://arxiv.org/abs/2403.06738 源码地址&#xff1a;https://github.com/heheyas/V3D.git 人工智能的最新进展使得自动生成 3D 内容的技术成为可能。虽然这一领域取得了重大进展&#xff0c;但目前的方法仍面临一些挑战。有些方法速度较慢&…

Scrapy 爬虫的大模型支持

使用 Scrapy 时&#xff0c;你可以轻松使用大型语言模型 (LLM) 来自动化或增强你的 Web 解析。 有多种使用 LLM 来帮助进行 Web 抓取的方法。在本指南中&#xff0c;我们将在每个页面上调用一个 LLM&#xff0c;从中抽取我们定义的一组属性&#xff0c;而无需编写任何选择器或…

【ZYNQ 开发】填坑!双核数据采集系统LWIP TCP发送,运行一段时间不再发送且无法ping通的问题解决

问题描述 之所以说是填坑&#xff0c;是因为之前写了一篇关于这个双核数据采集系统的调试记录&#xff0c;问题的具体表现是系统会在运行一段时间后&#xff08;随机不定时&#xff0c;长了可能将近两小时&#xff0c;短则几分钟&#xff09;&#xff0c;突然间就不向电脑发送数…

windows下安装rabbitMQ并开通管理界面和允许远程访问

如题&#xff0c;在windows下安装一个rabbitMQ server&#xff1b;然后用浏览器访问其管理界面&#xff1b;由于rabbitMQ的默认账号guest默认只能本机访问&#xff0c;因此需要设置允许其他机器远程访问。这跟mysql的思路很像&#xff0c;默认只能本地访问&#xff0c;要远程访…

Web和UE5像素流送、通信教程

一、web端配置 首先打开Github地址&#xff1a;https://github.com/EpicGamesExt/PixelStreamingInfrastructure 找到自己虚幻引擎对应版本的项目并下载下来&#xff0c;我这里用的是5.3。 打开项目找到PixelStreamingInfrastructure-master > Frontend > implementat…

Redis介绍及整合Spring

目录 Redis介绍 Spring与Redis集成 Redis介绍 Redis是内存数据库&#xff0c;Key-value型NOSQL数据库&#xff0c;项目上经常将一些不经常变化并且反复查询的数据放入Redis缓存&#xff0c;由于数据放在内存中&#xff0c;所以查询、维护的速度远远快于硬盘方式操作数据&#…

启动服务并登录MySQL9数据库

【图书推荐】《MySQL 9从入门到性能优化&#xff08;视频教学版&#xff09;》-CSDN博客 《MySQL 9从入门到性能优化&#xff08;视频教学版&#xff09;&#xff08;数据库技术丛书&#xff09;》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) Windows平台下安装与配置MyS…

Llama3.2开源:Meta发布1B和3B端侧模型、11B和90B多模态模型

最近这一两周不少互联网公司都已经开始秋招提前批面试了。 不同以往的是&#xff0c;当前职场环境已不再是那个双向奔赴时代了。求职者在变多&#xff0c;HC 在变少&#xff0c;岗位要求还更高了。 最近&#xff0c;我们又陆续整理了很多大厂的面试题&#xff0c;帮助一些球友…