tap的方式使用qemu建立虚拟机NAT网络

[b]基本概念:[/b]
vm:虚拟机
主机:建立虚拟机的服务器


[b]需求:用nat的方式,利用qemu建立一个虚拟机,使虚拟机可以访问外网[/b]
目前主机的ip为192.168.139.85
想设置vm的ip段为192.168.122.0段,dhcp自动获取ip,并访问外网

[b]基本原理[/b]:
[color=darkred]
使用tap的方式建立vm,
建立一个网桥virbr0,
把这个网桥作为网关192.168.122.1,
把tap绑定到这个网桥virbr0上,
tap设备是通到vm里面的eth0的,
所以建立的所有vm都在网桥上就可以互相访问,
在主机上使用dnsmasq建立dhcp服务,绑定到virbr0上,
这样所有绑定到网桥的vm即可使用dhcp服务,
在vm中使用dhclient就可以获取到主机dhcp服务提供的ip地址,
在主机上设置nat的iptables,
然后打开系统的转发功能。
[/color]


[b]需要安装[/b]:qemu,tap,brctl,iptables,需要一个内核文件bzImage,一个操作系统镜像文件hda.img
[b]环境[/b]:Ubuntu 14.04.4 LTS

[b]一.建立一个120M的简版linux的镜像hda.img,要求支持ip,ifconfig,iptables,dhclient等网络命令[/b]
建立方法

debootstrap --variant=minbase --include=util-linux,dhcp-client,ssh,vim,make,psmisc,mini-httpd,net-tools,iproute,iputils-ping,procps,telnet,iptables,wget,tcpdump,curl,gdb,binutils,gcc,libc6-dev,lsof,strace --exclude=locales,aptitude,gnupg,cron,udev,tasksel,rsyslog,groff-base,manpages,gpgv,man-db,apt,debian-archive-keyring,sysv-rc,sysvinit,insserv,python2.6 --arch i386 etch etch 'http://archive.debian.org/debian'

这个debootstrap命令国内可能不通,去aws上操作吧,如果已经有了可用的img文件,直接看第二步

具体细节参考:[b]使用qemu的建立基本的虚拟机[/b] [url]http://haoningabc.iteye.com/blog/2306941[/url]
得到bzImage的内核文件和hda.img的操作系统镜像

[b]二.使用qemu建立虚拟机,配置主机的网络[/b]

qemu-system-i386 -kernel bzImage -drive file=hda.img,if=ide,cache=none -append "console=ttyS0 root=/dev/sda rw rdinit=/sbin/init notsc=1" -nographic -boot order=dc,menu=on -net nic,vlan=0,macaddr=52:54:00:12:34:22,model=e1000,addr=08 -net tap,name=haha,ifname=tap1,script=no,downscript=no

-kernel 指定内核文件bzImage
-append 配合kernel使用的内核参数,这里指定了启动文件/sbin/init
-drive 指定硬盘文件 hda.img,也可以用 -hda hda.img
-nographic 不用图形化界面,如果没有这个就要指定-vnc 0.0.0.0:1参数通过vncviewer访问了
例如

qemu-system-i386 -kernel /root/jslinux/obj/linux-x86-basic/arch/i386/boot/bzImage -drive file=hda_hasbacking_file.qcow2,if=ide,cache=none -append "root=/dev/sda rw rdinit=/sbin/init notsc=1" -vnc 0.0.0.0:1 -boot order=dc,menu=on -net nic,vlan=0,macaddr=52:54:00:12:34:22,model=e1000,addr=08 -net tap,name=haha,ifname=tap1,script=no,downscript=no

-boot 是设置启动参数,d为光驱,c为第一个硬盘,
-net 指定网络配置([b]这里重要[/b])
一共有三种
[color=red]-net nic [/color]必须有的基本配置,macaddr 设置mac地址,model是网卡的类型,可以model=?查看有哪些类型
[color=red]-net tap [/color]使用桥接模式的,需要指定启动script=和关闭downscript,
fd是指向已经有的tap设备,name是在monitor模式使用info network看到的名字,ifname是tap设备在主机中的名字
[color=red]-net user [/color]用户模式,qemu使用Slirp实现了一整套tcp/ip协议栈

一般nic必须有,tap和user选一个使用

这里注意使用[color=red]-net tap,ifname=tap1[/color] 建立tap设备.


建立虚拟机后,
主机ip link show
发现多了个tap1设备
建立一个网桥,
把tap1绑定到桥上,

#建立网桥
brctl addbr virbr0
ip link set tap1 up
#把tap绑定到网桥
brctl addif virbr0 tap1

#设置nat的iptables

iptables -t nat -A POSTROUTING -s "192.168.122.0/255.255.255.0" ! -d "192.168.122.0/255.255.255.0" -j MASQUERADE


#设置linux内核的转发

echo 1 >/proc/sys/net/ipv4/ip_forward
#ifconfig eth0 promisc


[b]三.主机上启动dnsmasq服务,提供dhcp的server功能,
注意参数指向刚建的virbr0桥上[/b]

dnsmasq --strict-order --except-interface=lo --interface=virbr0 --listen-address=192.168.122.1 --bind-interfaces --dhcp-range=192.168.122.2,192.168.122.254 --conf-file="" --pid-file=/var/run/qemu-dhcp-virbr0.pid --dhcp-leasefile=/var/run/qemu-dhcp-virbr0.leases --dhcp-no-override

关键点是[color=red]--interface=virbr0 [/color]
--dhcp-range 设置网段范围

[b]四.在虚拟机中,dhcp配置网络[/b]
[color=red]注意这里是在vm里面操作的,上面的都是在主机上操作[/color]

ip link set eth0 up
#获取ip
dhclient
#测试ping 网关
ping 192.168.122.1
ping www.baidu.com
#查看
ifconfig eth0
#成功设置ip 192.168.122.37
cat /etc/resolv.conf
#发现dns也自动建立了
#ip route查看路由
#也可以自己设置网关和ip
#route add default gw 192.168.122.1 netmask 255.255.255.0

[img]http://dl2.iteye.com/upload/attachment/0118/2212/ebc449d3-f159-31bc-b5c9-10404c4522ab.png[/img]

如果使用普通桥接参考 [b]桥接的方式使用qemu建立虚拟机[/b]:[url]http://haoningabc.iteye.com/blog/2306736[/url]


[b]端口映射:[/b]

在vm中启动http服务,开启80端口:

mini-httpd
netstat -nltp|grep 80

在主机上

iptables -t nat -A PREROUTING -p tcp -d 192.168.139.85 --dport 81 -j DNAT --to 192.168.122.37:80

192.168.139.85是主机ip
192.168.122.37是vm的ip
把vm的80端口映射到主机81上,
注意这里,在主机上netstat -nltp|grep 81是看不到的

iptables -t nat -L

查看变化
如果要删掉这条规则,把-A换成-D
访问http://192.168.139.85:81 就访问到vm内部了
window下配置qemu虚拟机联网 启动虚拟机,查看ip是否自动分配,如果已经分配,那么就完成了。安装tap网卡,改名为tap0。 阅读详情

相关推荐

创建NAT模式KVM虚拟机

创建NAT模式KVM虚拟机

qq_56182387的博客 358

qemu网络NAT配置

qemu的nat网络配置

sunyun1990的专栏 1401

QEMU虚拟机网络配置终极指南:从NAT隔离到手动设置静态IP(Ubuntu Server版)

本文是QEMU虚拟机网络配置的终极指南,针对Ubuntu Server环境,详细讲解了如何从默认的NAT隔离模式切换到更灵活的手动配置。文章深入剖析了TAP设备桥接模式,提供了从创建TAP设备、绑定MAC地址到在虚拟机内设置静态IP的完整命令行操作步骤,并解决了DHCP失效和配置持久化等常见问题,旨在帮助用户构建稳定、可控的服务器虚拟化网络环境。

rock5的博客 539

QEMU虚拟机怎么配置网络才能主机和虚拟机都通

当打开QEMU虚拟机配置界面的时候,可以看到多种网络模型。而其中默认使用的是NAT,你会发现,当你创建完虚拟机直接去配置网络之后,网络是不通的。 然后切换为其他模式之后,你会发现,要么是虚拟机IP可以通,但是物理机IP又不通了,要么就是物理机IP通,虚拟机IP不通,对于我们来说,我们肯定是希望物理机和虚拟机通能通过该网卡后,都是正常使用网络。 默认网络是NAT 在物理机上新建一个桥接网络 (vi /etc/sysconfig/network-scripts/ifcfg-br0)

wang_sandking的博客 4691

qemu网络启动模式配置

   学习时间:2011/12/6 1 tap/tun启动模式(虚拟机启动网络参数-net nic –net tap) Qemu的tap初始化脚本缺省是/etc/qemu-ifup,内容如下: #!/bin/sh /sbin/ifconfig $1 192.168.0.11 如果不存在tun内核模块,可以自己编译。TUN模块的内核配置项位于: Device

txxm127的专栏 1770

ISE 14.7 MCS文件的生成--- Spartan3AN XC3S200AN

步骤一: Generate Programming File生成 .bit文件 步骤二: Tools——>iMPCAT 步骤三: iMPACT Flows——>双击“Create PROM File(PROM File Formatter)” 步骤四: Non-Volatile FPGA——>点击”Spartan 3AN“——>点击“绿色箭头”——>Spartan3AN(bits)——>选择“xc3s200an"——>点击”Add storage Device“—

qq_40039676的博客 2099

第24讲 | 云中网络:自己拿地成本高,购买公寓更灵活

云计算中的网络(1)——云中网络 数据中心里面堆着一大片一大片的机器,用网络连接起来,机器数目一旦非常多,人们就发现,维护这么一大片机器还挺麻烦的,有好多不灵活的地方。 采购不灵活:如果客户需要一台电脑,那就需要自己采购、上架、插网线、安装操作系统,周期非常长。一旦采购了,一用就 N 年,不能退货,哪怕业务不做了,机器还在数据中心里留着。 运维不灵活:一旦需要扩容 CPU、内存、硬盘,都需要去机房手动弄,非常麻烦。 规格不灵活:采购的机器往往动不动几百 G 的内存,而每个应用往往可能只需要 4 核

qq_37756660的博客 318

mfcc总结,这个mel三角滤波器分组到底是如何起作用的呢?

先看fft频谱图(这是4096字节取样fft计算,横轴频率是从0到512,后边意义不大,未取,纵轴是振幅),那些我随便画的蓝色线,你有什么联想?: 再看,这绿色线,是否有一种上升后,便逐渐式微的感觉,都是三角形的,这或许也是mel当初和绝大多数人看到的: 如果在振幅上加上一条限制的黑线(振幅门槛限制),黑色线以下很多频率就没有意义了,你看,有用的频率连一半(512/2=256)都占不到...

ganggangwawa的博客 9908

如何配置 QEMU 虚拟机网络

User mode stack:用户协议栈方式,这种方式的大概原理是在 QEMU 进程中实现一个协议栈,这个协议栈可以被视为一个主机与虚拟机之间的 NAT 服务器,它负责将 QEMU 所模拟的系统网络请求转发到外部网卡上面,从而实现网络通信。特别说明一下参数含义:-net nic 表示希望 QEMU 在虚拟机中创建一张虚拟网卡,-net tap 表示连接类型为 TAP,并且指定了网卡接口名称(就是刚才创建的 tap0,相当于把虚拟机接入网桥)。现在只需要启动镜像,指定网络连接模式是 TAP 即可。

JL-LOVE 1万+

SECS/GEM协议学习教程

摘要:SECS/GEM是半导体制造设备通信的国际标准,定义了主机系统与设备间的通信规范,包括设备控制、状态监控、数据采集等功能。协议采用分层架构(应用层、消息层、传输层、物理层),支持关键消息类型如S1F13(建立通信)、S2F13(数据采集)等。通信流程涵盖建立连接、数据交换和终止会话,并通过状态变量(SVID)、事件(CEID)等实现实时交互。典型应用包括设备初始化、报警处理及配方管理,需处理数据类型(如U2、A、L)和通信调试问题。

GitHub个人仓库地址:https://github.com/feiyuluoye ; 个人塔罗牌占卜平台:http://118.126.82.12:8080/ ; 欢迎广大Coding友共同交流讨论。 2056

从压电传感器到示波器:手把手教你用CA3140搭建电荷放大器(含PCB布局与调零技巧)

本文详细介绍了如何使用CA3140运算放大器搭建专业级电荷放大器,从压电传感器信号特性分析到PCB布局与调零技巧,全程实战演示。重点解析了CA3140的低通滤波器设计、反馈网络参数计算及抗干扰增强方案,帮助电子爱好者高效实现微弱电荷信号的稳定转换与测量。

weixin_31355483的博客 597

qemu启动后网络怎么设置?配合qemu-system-riscv64的命令设置

QEMU启动的时候,可以选择组网方式,一般有两种选择,user模式和tap模式user模式就是用NAT,tap模式就是用bridge网桥模式。

skywalk8163的专栏 3767

使用C++编写一个可视化窗口

初学C++时,控制台会给我们提供一个黑窗口,而这篇文章所做的就是:创建一个属于图形界面窗口,而不是使用控制台黑窗口 如图,这是一个标题为XSZY的窗口 看完这篇文章,你想要的窗口大小,图标等都可以自己定义 甚至是在窗口上鼠标的样子,都是可以随意改的 所有有关视窗的基本函数和类型都定义在头文件 <windows.h> 中 我们只需要引用就好了 //引用头文件 windows.h #include<windows.h> 然后定义程序的入口函数main int __stdcall W

XSZY_的博客 6万+

QEMU 网络配置一把梭

转载自:https://wzt.ac.cn/2019/09/10/QEMU-networking/ 好文章,记下来防止以后找不到!!以下是原文内容: 最近复现一些路由器的漏洞,由于架构和主机不一样,所以需要利用 qemu 进行固件模拟。在配置模拟环境的时候遇到了致命的问题–QEMU 虚拟机不能联通网络。 其实之前复现 CVE 的时候就遇到过,问了几个大佬也没有好的解决办法,最后按照某篇教程配置了一下,用户模式(单文件模拟)可以连接网络,鉴于之前也是参考网上的教程,并没有详细了解背后的原理,我专门去

梦饮三千的博客 3833

Nacos启动报错No DataSource set?5分钟搞定standalone模式配置

本文针对Nacos启动时常见的“No DataSource set”报错,深入解析了其根源在于默认集群模式与外部数据库依赖。提供了两种快速解决方案:通过命令行参数“-m standalone”启动,或直接修改启动脚本配置文件,从而在5分钟内以单机模式成功启动Nacos,无需配置MySQL数据库。

weixin_29234509的博客 465

Flink实战案例(十三):Flink DataStream 八大分区策略与自定义分区器

声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。 《2021年最新版大数据面试题全面开启更新》 分区策略决定了一条数据如何发送给下游。Flink中默认提供了八大分区策略(也叫分区器)。 本文基于Flink 1.9.0总结Flink DataStream中的八大分区策略以及手动实现一个自定义分区器。 八大分区策略继承关系图 ChannelSelector: 接口,决定将记录写入哪个Channel。有3个方法: void setup(int numberOfChannels):

微信搜:import_bigdata,大数据领域硬核原创作者 1124

qemu虚拟机与外部网络的通信

一、基本概念 为了使虚拟机能够与外界通信,Qemu需要为虚拟机提供网络设备。Qemu支持的常用网卡包括NE2000、rtl8139、pcnet32等。命令行上用-net nic为虚拟机创建虚拟机网卡。例如,qemu的命令行选项 -net nic,model=pcnet 表示为虚拟机添加一块pcnet型的以太网卡。如果省略model参数则...

whatday的专栏 4748

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

配置KVM虚拟机使用的NAT网络

配置KVM虚拟机使用的NAT网络 一、NAT的概念 对于专用网内部的一些主机,已经分配了本地的IP(即本地局域网IP),但又想和因特网上的主机通信时,可使用NAT(Network Address Translation,网络地址转换)方法解决问题。 使用NAT实现通信的方式有3种: 1.静态转换(Static Nat):内部网络私有IP地址转换为公有IP地址时,IP地址对是一对一的,是一成不变的。 2.动态转换(Dynamic Nat):内IP转换为公IP,IP地址不确定的,随机的,所有被授权访问Int

Cys_33的博客 4776

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

qemu VM 设置网络

本文介绍如何为由qemu启动的VM(虚拟机)配置网络,使得VM可以访问host网络和外部网络,以及可以让host以及外部通过网络访问VM的服务(比如web/http). 这里使用tun/tap虚拟设备为VM配置网络,qemu的命令参数如下,关于tun/tap,参考blog,和物理网卡一样可以配置IP、可以发送数据。 -device e1000,mac=00:16:3e:01:01:01,netdev=net0 -netdev tap,id=net0,ifname=tap1,script=no,down

2404

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

用TAP方式让QEMU虚拟机与host联网

转载自 cgjvcd最终编辑 cgjvcd QEMU虚拟机网络的缺省模式是NAT方式,即虚拟机可以通过host访问外网,但host和外网无法访问虚拟机。如果要想让host访问虚拟机,则可以使用TAP方式。  1、确认host的内核支持TAP/TUN设备  使用TAP方式的前提是host的内核支持TAP/TUN。现在的linux发行版一般都通过内核模块的方式支持TAP/TUN。如果ho

larryliuqing的专栏-xxx 9730

从零构建QEMU虚拟网络:TAP与桥接的深度解析与实践

本文深入解析了QEMU虚拟网络中TAP设备与桥接技术的核心原理,提供了在Ubuntu 22.04环境下构建高效虚拟网络架构的完整实践指南。通过详细的配置步骤和性能优化建议,帮助开发者掌握虚拟网络部署的关键技术,实现接近原生网络的性能表现。

l3m4n的博客 602

linux qemu的使用教程,详解QEMU网络配置的方法

今天给大家介绍一下QEMU网络配置的方法。qemu两种上网方式:user mode network :这种方式实现虚拟机上网很简单,类似vmware里的nat,qemu启动时加入-user-net参数,虚拟机里使用dhcp方式,即可与互联网通信,但是这种方式虚拟机与主机的通信不方便。tap/tun network :这种方式要比user mode复杂一些,但是设置好后 虚拟机互联网 虚拟机主机 通...

weixin_36150816的博客 2504

QEMU 通过网络实现共享文件

在启动 QEMU 时,使用 -netdev user 和 -device virtio-net 参数来配置 NAT 网络。为了在虚拟机重启后自动挂载共享文件夹,可以将挂载命令添加到 /etc/fstab 文件中。选项用于指定共享目录的路径、安全模型以及挂载点等参数。是一种高效且灵活的文件共享方式,它基于 9p 文件系统协议。如果能够成功 ping 通,说明虚拟机已经可以访问外网。虚拟机启动后,QEMU 会自动为虚拟机分配一个。将需要共享的文件放入此目录中。

Liuqz2009的专栏 2207
上一篇: qemu建立基本的虚拟机
下一篇: socket的方式使用qemu建立虚拟机
linux内核控
博客等级 码龄19年 41粉丝 638原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值