neutron基础七(qemu tap)

本文详细介绍了如何利用qemu创建虚拟机,并通过配置tap设备将其绑定到桥接网络上,从而实现虚拟机与外部网络的通信。通过实例演示了虚拟机的创建过程,包括虚拟硬盘的初始化、网络设备的配置以及VNC远程访问的设置。同时讨论了在不同环境下使用qemu和kvm时需要注意的问题,如kvm的透传功能和libvirt的配置。此外,文章还涉及了虚拟机内部网络设备与宿主机网络设备之间的关系,以及如何在虚拟环境中模拟真实网络环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用qemu 建立个虚拟机
然后用tap设备,
根据基础六,tap设备绑定到桥上,就可以和其他vxlan的上的机器通信
简历虚拟机硬盘
虚拟机叫vm,承载虚拟机的机器叫host


qemu-img create -f qcow2 testnet.img 500G
qemu-img amend -f qcow2 -o compat=0.10 testnet.img

建立虚拟机

#!/bin/sh
#/usr/libexec/qemu-kvm -m 16384 -smp 2 -hda /home/haoning/qemu/testnet.img -cdrom /home/CentOS-7-x86_64-DVD-1503-01.iso -net nic -net tap,ifname=tap1,script=/home/haoning/qemu/qemu-ifup,downscript=no -vnc 192.168.140.11:17 -daemonize
#/usr/libexec/qemu-kvm -m 16384 -smp 2 -hda /home/haoning/qemu/testnet.img -net nic -net tap,ifname=tap1,script=/home/haoning/qemu/qemu-ifup,downscript=no -vnc 192.168.140.11:17 -daemonize
/usr/libexec/qemu-kvm -m 8192 -smp 2 -hda /home/hao/cirros-0.3.1-x86_64-disk.img -net nic -net tap,ifname=tap1,script=/home/hao/qemu-ifup,downscript=no -vnc 0.0.0.0:17 -daemonize

如果是没有lsmod|grep kvm只有一个没有kvm_intel的机器上,只能用qemu

/usr/libexec/qemu-kvm -m 8192 -machine pc-i440fx-rhel7.0.0,accel=tcg,usb=off -cdrom /home/hao/CentOS-7-x86_64-DVD-1503-01.iso -hda /home/hao/testnet.img -net nic -net tap,ifname=tap1,script=/home/hao/qemu-ifup,downscript=no -vnc 192.168.139.55:17 -daemonize

[color=red]如果是在kvm建的vm上,这vm上就无法再使用kvm了,坑爹[/color]
[b][color=red]若果想使用kvm on kvm需要在主机上打开nested,kvm的透传[/color][/b]

modprobe -r kvm_intel
modprobe kvm_intel nested=1

[color=red]并且libvert要设置建立的vm和主机的相同[/color]

<cpu mode='host-passthrough'/>

参见
[color=red]http://libvirt.org/formatdomain.html 中的 CPU model and topology 部分。[/color]

第一次加上-cdrom指定iso
qemu-ifup文件先什么也不写,如果写的话,

#!/bin/sh
switch=br0
echo "ifup qemu----"
#if [ -n "$1" ]; then
# ip link set $1 up
# sleep 1
# brctl addif ${switch} $1
# exit 0
#else
# echo "Error: no interface specified"
#fi


启动vm后安装系统,
进入系统后host设置
ip link
能发现多了个tap1


brctl addif br0 tap1
ip link set tap1 up


br0是主机上配置的桥,可以参考以前的内容

如果br0上有dhcp服务
直接在vm里面dhcp就行了

tap1就相当于veth peer 的veth0 ,vm里面的网卡就相当于veth1,放到namespace里面的,
vm就相当于namespace

现在,veth peer ,namespace,桥,vxlan,tap设备
有了这些,局域网的网络基本的内容就可以任意玩了
### Open vSwitch 中 br-int、br-tun、br-ex 和 TAP 接口的作用与配置 #### 1. br-int (Integration Bridge) `br-int` 是集成网桥,主要用于连接虚拟机(VM)的 Tap 接口。此网桥负责处理同一计算节点上的 VM 流量转发,并通过 VLAN 或隧道技术实现跨主机通信。 为了创建 `br-int` 并添加端口: ```bash ovs-vsctl add-br br-int ``` 当需要将某个特定的 Tap 接口加入到 `br-int` 上时可以执行如下命令: ```bash ovs-vsctl add-port br-int tap0 ``` #### 2. br-tun (Tunneling Bridge) `br-tun` 主要用于管理不同物理服务器之间的二层网络互联。它通常会与其他计算节点建立 GRE/VXLAN 隧道来传输数据包,在多台宿主机之间形成一个逻辑上的大二层网络环境[^1]。 设置 `br-tun` 及其隧道端点 IP 地址的方法如下所示: ```bash ovs-vsctl add-br br-tun ovs-vsctl set bridge br-tun fail-mode=secure ovs-vsctl set-controller br-tun tcp:169.254.169.254:6633 ovs-vsctl add-port br-tun gre0 -- set interface gre0 type=gre options:remote_ip="172.16.1.2" ``` 这里假设远程节点 IP 地址为 "172.16.1.2"。 #### 3. br-ex (External Network Bridge) `br-ex` 负责提供外部访问能力给内部私有云中的资源。该网桥一般用来连接物理交换机或路由器,从而允许租户实例能够访问公网服务或者企业内其他子网的服务[^2]。 初始化并关联物理网卡 eth0 到 `br-ex` 的操作如下: ```bash ovs-vsctl add-br br-ex ip link set dev eth0 up promisc on mtu 1500 ovs-vsctl add-port br-ex eth0 ``` #### 4. TAP 接口 Tap 接口是一种模拟以太网设备的 Linux 特性,常被用作 KVM/QEMU 等 hypervisor 下面虚拟机的网络接口。每个 Tap 接口都会对应着一台虚拟机的一个 NIC(Network Interface Card),并通过 OVS 进行流量控制和路由决策[^3]。 创建一个新的 Tap 接口并与指定网桥相联结的方式如下: ```bash ip tuntap add mode tap tap1 ip link set tap1 up master ovs-system ovs-vsctl add-port br-int tap1 ``` 以上就是在 OpenStack Neutron 架构下的 Open vSwitch 组件中几个重要概念及其基本配置方法介绍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值