当前位置: 首页 > news >正文

QEMU网络配置简介

本文简单介绍下qemu虚拟机网络的几种配置方式。

通过QEMU的支持,常见的可以实现以下4种网络形式:

  1. 基于网桥(bridge)的虚拟网络。
  2. 基于NAT(Network Addresss Translation)的虚拟网络。
  3. QEMU内置的用户模式网络(user mode networking)。
  4. 直接分配网络设备从而直接接入物理网络(包括VT-d和SR-IOV)。

使用直接的网桥模式

在QEMU/KVM的网络使用中,网桥(bridge)模式可以让客户机和宿主机共享一个物理网络设备连接网络,客户机有自己的独立IP地址,可以直接连接与宿主机一模一样的网络,客户机可以访问外部网络,外部网络也可以直接访问客户机(就像访问普通物理主机一样)。即使宿主机只有一个网卡设备,使用bridge模式也可让多个客户机与宿主机共享网络设备。bridge模式使用非常方便,应用也非常广泛。

用网桥实现NAT模式

NAT(Network Addresss Translation,网络地址转换)属于广域网接入技术的一种,它将内网地址转化为外网的合法IP地址,它被广泛应用于各种类型的Internet接入方式和各种类型的网络之中。NAT将来自内网IP数据包的包头中的源IP地址转换为一个外网的IP地址。众所周知,IPv4的地址资源已几近枯竭,而NAT使内网的多个主机可以共用一个IP地址接入网络,这样有助于节约IP地址资源,这也是NAT最主要的作用。另外,通过NAT访问外部网络的内部主机,其内部IP对外是不可见的,这就隐藏了NAT内部网络拓扑结构和IP信息,也就能够避免内部主机受到外部网络的攻击。客观事物总是有正反两面性的,没有任何技术是十全十美的。NAT技术隐藏了内部主机细节,从而提高了安全性。但是如果NAT内的主机作为Web或数据库服务器需要接受来自外部网络的主动连接,这时NAT就表现出了局限性。不过,可以在拥有外网IP的主机上使用iptables等工具实现端口映射,从而让外网将这个外网IP的一个端口的访问被重新映射到NAT内网的某个主机的相应端口上去。

在QEMU/KVM中,默认使用IP伪装的方式实现NAT,而不是使用SNAT(Source-NAT)或DNAT(Destination-NAT)的方式。
在这里插入图片描述
在KVM中配置客户机的NAT网络方式,需要在宿主机中运行一个DHCP服务器给宿主机分配NAT内网的IP地址,可以使用dnsmasq工具来实现。在KVM中,DHCP服务器为客户机提供服务的基本架构如图所示。
在这里插入图片描述

QEMU内部的用户模式网络

在没有任何“-net”参数时,QEMU默认使用的是“-net nic-netuser”的参数,提供了一种用户模式(user-mode)的网络模拟。使用用户模式的网络的客户机可以连通宿主机及外部的网络。用户模式网络完全是由QEMU自身实现的,不依赖于其他的工具(如前面提到的bridge-utils、dnsmasq、iptables等),而且不需要root用户权限(前面介绍过的bridge模式和NAT模式在配置宿主机网络和设置iptables规则时一般都需要root用户权限)。QEMU使用Slirp 实现了一整套TCP/IP协议栈,并且使用这个协议栈实现了一套虚拟的NAT网络。

由于其使用简单、独立性好、不需root权限、客户机网络隔离性好等优势,用户模式网络是QEMU的默认网络配置。不过,用户模式网络也有以下3个缺点:

  1. 由于其在QEMU内部实现所有网络协议栈,因此其性能较差。
  2. 不支持部分网络功能(如ICMP),所以不能在客户机中使用ping命令测试外网连通性。
  3. 不能从宿主机或外部网络直接访问客户机。

参考

KVM实战:原理、进阶与性能调优
Slirp, the PPP/SLIP-on-terminal emulator

相关文章:

QEMU网络配置简介

本文简单介绍下qemu虚拟机网络的几种配置方式。 通过QEMU的支持,常见的可以实现以下4种网络形式: 基于网桥(bridge)的虚拟网络。基于NAT(Network Addresss Translation)的虚拟网络。QEMU内置的用户模式网…...

28.Marshal.PtrToStringAnsi C#例子

//怎么说呢,这个代码Marshal的英文意思有将军,控制等等, //我的理解是类似于console控制台。 //然后后面这个Ansi是一种ASCII的扩展,还有其他编码方式可选 就是一个把后面的指针转化为字符串的一个代码 这是用法…...

基于feapder爬虫与flask前后端框架的天气数据可视化大屏

# 最近又到期末了,有需要的同学可以借鉴。 一、feapder爬虫 feapder是国产开发的新型爬虫框架,具有轻量且数据库操作方便、异常提醒等优秀特性。本次设计看来利用feapder进行爬虫操作,可以加快爬虫的速率,并且简化数据入库等操作…...

Linux隐藏登录和清除历史命令以及其他相关安全操作示例

隐藏登录 ssh -T rootxxx.xxx.xxx.xxx /bin/bash -i 命令拆解-T :告诉ssh客户端,不要分配一个TTY(伪终端)root :连接用户xxx.xxx.xxx.xxx :连接的服务器ip地址/bin/bash :在远程服务器上启动…...

从授权校验看SpringBoot自动装配

背景 最近需要实现一个对于系统的授权检测功能,即当SpringBoot应用被启动时,需要当前设备是否具有有效的的授权许可信息,若无则直接退出应用。具体的实现方案请继续看下文。 环境 Ruoyi-Vue SpringBoot3 RuoYi-Vue: 🎉 基于Spr…...

tensorboard的界面参数与图像数据分析讲解

目录 1.基础概念: (a)精确率与召回率: (b)mAP: (c)边界框损失: (d)目标损失: (e)分类损失: (f):学习率: 2.设置部分(最右边部分): GENERAL(常规设置…...

MTK 平台关于WIFI 6E P2P的解说

一 前言 官方 P2P 6E 设计原理,请查看这个网站 hostap - hostapd/wpa_supplicant 配置:p2p_6ghz_disable 允许上层指定是否允许6G连接 仅允许6G用于WFD –不允许6G用于纯P2P 缺点:存在很多 IOT issues 如:一些物联网设备无法识别6G类/信道,可能存在物联网问…...

离线语音识别+青云客语音机器人(幼儿园级别教程)

1、使用步骤 确保已安装以下库: pip install vosk sounddevice requests pyttsx3 2、下载 Vosk 模型: 下载适合的中文模型,如 vosk-model-small-cn-0.22。 下载地址: https://alphacephei.com/vosk/models 将模型解压后放置在…...

leetcode hot 100 跳跃游戏

55. 跳跃游戏 已解答 中等 相关标签 相关企业 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则…...

陪诊陪护助浴系统源码:JAVA养老护理助浴陪诊小程序医院陪护陪诊小程序APP源码

JAVA养老护理助浴陪诊小程序及医院陪护陪诊APP:打造智慧养老新生态 在人口老龄化日益加剧的当下,养老护理服务的需求日益增长,而传统的养老服务模式已难以满足日益多样化的需求。为此,我们基于JAVA技术栈,精心打造了一…...

怎么在家访问公司服务器?

在日常工作中,特别是对信息技术从业者而言,工作往往离不开公司的服务器。他们需要定期访问服务器,获取一些关键的机密文件或数据。如果您在家办公,并且需要处理未完成的任务,同时需要从公司服务器获取所需的数据&#…...

asp.net core框架搭建4-部署IIS/Nginx/Docker

文章目录 系列文章一、Linux上部署Nginx1.1 Centos 安装配置环境1.2 使用Systemctl 控制Nginx 二、部署IIS三、部署Docker3.1 创建 Dockerfile 文件3.2 构建 Docker 镜像3.3 运行 Docker 容器3.4 检查容器运行情况 结束语 作者:xcLeigh 文章地址:https:/…...

ubuntu中zlib安装的步骤是什么

参考:https://www.yisu.com/ask/40496522.html 在Ubuntu中安装zlib的步骤如下: 打开终端,输入以下命令更新包列表: sudo apt update复制代码 安装zlib库和开发文件: sudo apt install zlib1g zlib1g-dev复制代码 安装完成后&a…...

代码随想录算法训练营第二十天-二叉树-669. 修剪二叉搜索树

对于递归的写法除了大写的服字&#xff0c;无话可说由于是修剪二叉树&#xff0c;所以会有明确的方向性当某一结点小于最小值&#xff0c;说明其左子树全部要修剪掉当某一结点大于最大值&#xff0c;说明其右子树全部要修剪掉 #include <iostream>struct TreeNode {int …...

发现API安全风险,F5随时随地保障应用和API安全

分析数据显示&#xff0c;目前超过90%的基于Web的网络攻击都以API端点为目标&#xff0c;试图利用更新且较少为人所知的漏洞&#xff0c;而这些漏洞通常是由安全团队未主动监控的API所暴露。现代企业需要一种动态防御策略&#xff0c;在风险升级成代价高昂、令人警惕且往往无法…...

【AI学习】2024年末一些AI总结的摘录

看到不少的总结&#xff0c;边摘录边思考。尤其是这句话&#xff1a;“人类真正的问题是&#xff1a;我们拥有旧石器时代的情感、中世纪的制度和神一般的技术”。 22024生成模型综述 来自爱可可-爱生活 2024年见证了AI领域的重大飞跃。从OpenAI的主导地位到Claude的异军突起&…...

ws长时间不发消息会断连吗?

目录 一、ws长时间不发消息会断连吗1. **服务器端的空闲连接处理**2. **客户端的空闲连接处理**3. **网络设备的干预**4. **WebSocket Ping/Pong 机制** 二、为什么在使用nginx代理的情况下&#xff0c;长时间未活动的 WebSocket 连接可能会被中断或关闭1. **Nginx 的超时配置*…...

使用 ASP.NET Core wwwroot 上传和存储文件

在 ASP.NET Core 应用程序中上传和存储文件是用户个人资料、产品目录等功能的常见要求。本指南将解释使用wwwroot存储图像&#xff08;可用于文件&#xff09;的过程以及如何在应用程序中处理图像上传。 步骤 1&#xff1a;设置项目环境 确保您的 ASP.NET 项目中具有必要的依…...

【每日学点鸿蒙知识】人脸活体检测、NodeController刷新、自动关闭输入框、Row设置中间最大宽、WebView单例

1、HarmonyOS 人脸活体检测调用&#xff1f; H5调用应用侧方法可参考以下demo&#xff1a; index.ets Web()//注册方法.javaScriptProxy({object: this.testObj,name: "testObjName",methodList: ["getLocationTS"],controller: this.webController})cla…...

Android TV端弹出的PopupWindow没有获取焦点

在 TV 开发中&#xff0c;焦点管理是通过 Focus Navigation 实现的&#xff0c;PopupWindow 默认不接受焦点&#xff0c;导致遥控器无法选择弹窗内的控件。这是因为 PopupWindow 默认不会将焦点传递到其内容视图上。 要解决问题&#xff0c;可以通过以下步骤调整 PopupWindow …...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...