QEMU网络模式(一)——bridge
网络配置
QEMU支持的网络模式
qemu-kvm主要向客户机提供了4种不同模式的网络。
1)基于网桥(bridge)的虚拟网卡;
2)基于NAT的虚拟网络
3)QEMU内置的用户模式网络(user mode networking)
4)直接分配网络设备的网络(包括VT-d和SR-IOV)
一、使用网桥模式
在qemu-kvm命令行中,关于bridge模式的网络参数如下:
-net tap[,vlan=n][,name=str][,fd=h][,ifname=name][,script=file][,downscript=dfile][,sndbuf=nbytes][,vnet_hdr=on|off][,vhost=on|off][,vhostfd=h][,vhostforce=on|off]
1) 安装bridge-utils和tunctl软件包
# yum -y install bridge-utils tunctl
2) 查看tun模块是否被加载
# lsmod | grep tun
如果没有加载,则运行modprobe tun进行加载。如果已经将tun编译到内核(可查看内核config文件中是否有"CONFIG=y"选项),则不需要加载了。如果内核完全没有配置TUN模块,则需要重新编译内核才行。
# grep 'CONFIG_TUN' /boot/config-`uname -r`
3) 检查/dev/net/tun的权限,需要让当前用户拥有读写的权限。
# ls -lh /dev/net/tun
4) 建立一个bridge,将其绑定到一个可正常工作的网络接口上,同时让bridge成为连接本机与外部网络的接口。
# brctl addr br0
# brctl addif br0 eth0
# brctl stp br0 on
# route
# ping 192.168.1.254
或者编辑配置文件建立网桥
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE="br0"
[root@kvm ~]#
# cat /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE="br0"
ONBOOT="yes"
TYPE="Bridge"
BOOTPROTO="none"
IPADDR="192.168.100.10"
NETMASK="255.255.255.0"
STP="on"
DELAY="0"
# service network restart
# dmesg
…………
device virbr0-nic entered promiscuous mode
br0: port 1(eth0) entering forwarding state
…………
建立bridge后的状态是让网络接口eth0进入混杂模式(promiscuous mode,接收网络中所有数据包),网桥br0进入转发状态(forwarding state),并且与eth0具有相同的MAC地址,
5)准备qemu-ifup和qemu-ifdown脚本
客户机启动网络前会执行的脚本由"script"选项配置的(默认为/etc/qemu-ifup)。一般在该脚本上创建一个TAP设备并将其中与bridge绑定起来。
#!/bin/bash
#filename: /etc/qemu-ifup
switch=br0 if [ -n "$1" ];then
#tunctl -u $(whoami) -t $1 #一些较旧版本中不会自动创建TAP设备
ifconfig $1 up
sleep 0.5s
brctl addif $switch $1
exit 0
else
echo 'Error: no specifed interface.'
exit 1
fi
由于qemu-kvm工具在客户机关闭时会解除TAP设备的bridge绑定,也会自动删除已不再使用的TAP设备,所有qemu-ifdown这个脚本不是必需的,最好设置为downscript=no(qemu-kvm的script参数是虚拟机启动时执行的脚本,downscript参数是虚拟机关闭时执行的参数)
# cat /etc/qemu-ifdown
#!/bin/bash switch=br0 if [ -n $1 ];then
tunctl -d $1
brctl delif ${switch} $1
ip link set $1 down
exit 0
else
echo "Error: no interface specified"
exit 1
fi
6)创建一个虚拟机
创建一个稀梳格式的磁盘
# dd if=/dev/zero of=/root/centos6.img bs=1M oflag=direct seek=4095 count=1
使用镜像安装一个centos6的minimal系统
# qemu-kvm -m 768 \
-smp 2 \
--boot order=cd \
--hda /root/centos6.img \
--cdrom /root/CentOS-6.9-x86_64-minimal.iso
7)用qemu-kvm命令启动bridge模式的网络
在宿主机中,用命令行启动客户机并检查bridge的状态,如下:
# qemu-kvm /root/centos6.img \
-smp 2 \
-m 1024 \
-net nic \
-net tap,ifname=tap1,script=/etc/qemu-ifup,downscript=no \
-vnc :0 \
-daemonize
虚拟机启动后,使用下面命令可以看到TAP0被创建了
# brctl show
# ls /sys/devices/virtual/net/
# vcnview :0
关闭虚拟机后,使用下面可以看到TAP0被删除了
# brctl show
# ls /sys/devices/virtual/net/
QEMU网络模式(一)——bridge的更多相关文章
- Docker bridge、host、container other、overlay 网络模式
docker run创建Docker容器时,可以用--net 选项指定容器的网络模式,Docker有以下5种网络模式: bridge模式:使用–net =bridge指定,默认设置: host模式:使 ...
- docker学习3-虚拟网络模式
一.虚拟机网络模式 在理解docker网络隔离前,先看下之前虚拟机里对网络的处理,VirtualBox中有4中网络连接方式: NAT Bridged Adapter Internal Host-onl ...
- 1021 docker搭建mysql、网络模式、grid
1.搭建并连接mysql服务 1.1.mysql官方命令 https://hub.docker.com/_/mysql/ #下载mysql镜像: docker pull mysql #启动mysql: ...
- VMware 虚拟机三种网络模式详解
一.前言 Vmware 为我们提供了三种网络工作模式,分别是:Bridged(桥接模式).NAT(网络地址转换模式).Host-only(仅主机模式). 二.VMware 的几个常见虚拟设备 打开 V ...
- Docker网络模式介绍
一.概述 docker的网络驱动有很多种方式,按照docker官网给出的网络解决方案就有6种,分别是:bridge.host.overlay.macvlan.none.Network plugins, ...
- Docker——四种网络模式
docker run创建Docker容器时,可以用–net选项指定容器的网络模式,Docker有以下4种网络模式: bridge模式:使用–net =bridge指定,默认设置: host模式 ...
- Docker 网络模式详解及容器间网络通信
当项目大规模使用 Docker 时,容器通信的问题也就产生了.要解决容器通信问题,必须先了解很多关于网络的知识.Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜 ...
- Docker的4种网络模式详细介绍
docker run创建Docker容器时,可以用–net选项指定容器的网络模式,Docker有以下4种网络模式: bridge模式:使用–net =bridge指定: host模式:使用–net = ...
- Docker的bridge和macvlan两种网络模式
项目上部署的Docker集群创建的容器网络遇到问题,借机会学习了一下docker的网络模式,其他类型我们用的不多,这里只列举我们常用的bridge和macvlan两种,下面的描述和截图有一些是直接从网 ...
随机推荐
- 牛逼哄哄的PageHelper分页插件到底是怎么实现的?网友:给我10分钟,给你写一个~
Hi,各位读者们 PageHelper是一款好用的开源免费的Mybatis第三方物理分页插件,其实我并不想加上好用两个字,但是为了表扬插件作者开源免费的崇高精神,我毫不犹豫的加上了好用一词作为赞美. ...
- 精尽MyBatis源码分析 - 插件机制
该系列文档是本人在学习 Mybatis 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释(Mybatis源码分析 GitHub 地址.Mybatis-Spring 源码分析 GitHub ...
- Java集合【5】-- Collections源码分析
目录 一.Collections接口是做什么的? 二.Collections源码之大类方法 1.提供不可变集合 2.提供同步的集合 3.类型检查 4.提供空集合或者迭代器 5.提供singleton的 ...
- CentOS下搭建VNC/TEAMVIEW/SSH无密码登录
VNC 配置桌面 # 安装gnome桌面环境 yum groupinstall Desktop -y # 安装中文语言支持包(可选) yum groupinstall 'Chinese Support ...
- vs2019 Com组件初探-通过IDispatch接口调用Com
vs2019 Com组件初探-简单的COM编写以及实现跨语言调用 上一篇实现了如何编写基于IDipatch接口的COM以及vbs如何调用编写的COM 本次主要是实现VBS的CreateObject函数 ...
- 等待多线程完成的CountDownLatch(带示例)
开始磨刀霍霍向多线程了,这期是 CountDownLatch 的一个小示例. 定义:CountDownLatch 允许一个或多个线程等待其他线程完成操作. 应用需求举例:假设有4个线程,A.B.C.D ...
- 洛谷P3901 数列找不同(莫队水题)
重温下手感,判断区间是否全是不同的数字有两种做法,一个长度为len的区间不同的数字,参见HH的项链,一种是区间众数,参见蒲公英,是水题没错了.明天搞数据库,然后继续自己的gre和训练计划 #inclu ...
- 第4.8节 三目运算、del和pass语句
一.三目运算 Python的三目运算与C语言的三目运算非常类似,具体语法如下: 条件为真的赋值表达式 if 条件 else 条件为假的表达式 三目运算实际上就是一种表达式计算,当对应if后面 ...
- PyQt(Python+Qt)学习随笔:QListWidget对项进行排序的sortItems方法
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QListWidget的sortItems方法用于对列表部件中所有项按参数进行排序,相关调用语法如下 ...
- PyQt(Python+Qt)实现的GUI图形界面应用程序的事件捕获方法大全及对比分析
一. 概述 PyQt的图形界面应用中,事件处理类似于Windows系统的消息处理.一个带图形界面的应用程序启动后,事件处理就是应用的主循环,事件处理负责接收事件.分发事件.接收应用处理事件的返回结果, ...