QEMU 用户网络与桥接网络设置总结

news/2024/9/28 21:40:17 标签: 网络, linux, 运维
1. 用户网络(User-mode Networking)

特点

  • QEMU 虚拟机通过 NAT 访问外部网络
  • 不需要额外的网络配置,简单易用。
  • 主机和虚拟机之间可以通过特定的 IP 地址(通常是 10.0.2.2)进行通信。

设置示例

qemu-system-x86_64 -hda your_image.img -net nic -net user

与主机通信

  • 虚拟机的 IP 通常为 10.0.2.15
  • 主机通过IP 10.0.2.2 与虚拟机通信。

在虚拟机上,可以主动访问10.0.2.2与主机通信:

ssh 10.0.2.2

scp file 10.0.2.2:/root

在主机上,不能直接访问10.0.2.15与虚拟机通信:

  • 用户网络模式通过 NAT 将虚拟机的 IP 地址映射到主机的 IP 地址。主机的网络栈并不知道如何直接与虚拟机的私有 IP 地址交互,因此无法 ping 通。
  • 解决方法:使用端口转发,通过设置端口转发将虚拟机的特定端口映射到主机的端口,以实现通信。

 端口转发示例(将虚拟机的 SSH 端口转发到主机的 2222 端口):

qemu-system-x86_64 -hda your_image.img -net nic -net user,hostfwd=tcp::2222-:22

在主机上,可以使用以下命令访问虚拟机:

ssh -p 2222 user@localhost

scp -P 2222 file user@localhost:/home/user
2. 桥接网络(Bridged Networking)

特点

  • 虚拟机直接连接到物理网络,获得与主机相同网段的 IP 地址。
  • 适合需要与局域网中的其他设备直接通信的场景。

设置步骤

  • 1 创建桥接接口br0(Linux):
sudo ip link add name br0 type bridge
sudo ip addr add 192.168.1.1/24 dev br0  # 主机的桥接 IP
sudo ip link set br0 up
  • 2 将物理网络接口添加到br0(假设物理接口为 eth0):
sudo ip link set eth0 master br0
  • 3 创建TAP 接口添加到br0

TAP接口是一种虚拟网络设备,虚拟机QEMU通过这个接口发送和接收网络数据包。

第一条命令创建一个名为 tap0 的 TAP 接口,并将其模式设置为 tap,允许当前用户访问。

第二条命令将 tap0 接口激活,使其准备好传输数据。

第三条命令将 TAP 接口连接到桥接接口。

sudo ip tuntap add dev tap0 mode tap user $(whoami)

sudo ip link set tap0 up

sudo ip link set tap0 master br0
  • 4 启动 QEMU 并通过tap0连接到br0

QEMU通过tap0接口连接到网桥br0,br0完成tap0和物理网口eth0直接的网络包转发。

qemu-system-x86_64 -hda your_image.img -netdev tap,id=mynet0,ifname=tap0,script=no,downscript=no -device virtio-net-pci,netdev=mynet0


http://www.niftyadmin.cn/n/5681894.html

相关文章

蓝桥杯【物联网】零基础到国奖之路:十二. TIM

蓝桥杯【物联网】零基础到国奖之路:十二. TIM 第一节 理论知识第二节 cubemx配置 第一节 理论知识 STM32L071xx器件包括4个通用定时器、1个低功耗定时器(LPTIM)、2个基本定时器、2个看门狗定时器和SysTick定时器。 通用定时器(TIM2、TIM3、…

车辆重识别(去噪扩散概率模型)论文阅读2024/9/27

[2] Denoising Diffusion Probabilistic Models 作者:Jonathan Ho Ajay Jain Pieter Abbeel 单位:加州大学伯克利分校 摘要: 我们提出了高质量的图像合成结果使用扩散概率模型,一类潜变量模型从非平衡热力学的考虑启发。我们的最…

二、初步编写drf API

2.1基于django #settings.py urlpatterns [path(admin/, admin.site.urls),path(auth,views.auth) #创建一个路由 ]#views.py from django.http import JsonResponse from django.views.decorators.csrf import csrf_exempt# Create your views here.c…

ML 系列:机器学习和深度学习的深层次总结(06)— 提升数据质量

一、说明 在AI数据挖掘中,对原始数据的预处理是必须的技术手段,本篇将对数据预处理的一系列注意事项进行展示。 二、关于数据预处理 注意: 在本章中,讨论的技术和方法基于 Roy Jafari 的《Hands-On Data Preprocessing in Pyth…

C#:动态为Object对象添加新属性的方法

在C#中,object 类型本身是一个基础类型,它不支持直接添加属性,因为 object 并不具备定义属性的能力(它不支持任何接口或基类中的属性,除非通过类型转换)。然而,有几种方法可以在运行时模拟给对象…

Linux学习之路 -- 线程 -- 条件变量与生产消费模型

前面我们已经提过线程互斥的相关概念&#xff0c;但是我们在前文的抢票逻辑中&#xff0c;我们其实很容易发现一个问题。那就是票可能被一直被一个人抢&#xff0c;这里我们就需要引入条件变量的概念。 目录 1、条件变量 <1>线程同步 <2>相关概念 <3>相…

解决Android中使用jdk 9以上中的某个类(AbstractProcessor)但是无法导入的问题

前景提要 今天在使用jdk中的AbstractProcessor类的时候&#xff0c;怎么都找不到&#xff0c;网上各种搜索&#xff0c;加什么依赖都没用&#xff0c;看了下依赖确实有这个类但是就是无法正常导入 然后翻了下android.jar&#xff0c;发现没有这个类 疑问 但是你尝试一下发…

滚珠丝杆如何安装滚珠?

滚珠丝杆安装滚珠是一门非常专业的知识&#xff0c;其安装过程需要细致且精确&#xff0c;这样才能确保其后续运行的顺畅与稳定。以下是安装滚珠的详细步骤&#xff1a; 一、准备工作 确保工作区域清洁无尘&#xff0c;准备合适的螺丝刀、扳手等工具&#xff0c;以及适量的润滑…