(1)linux要工作在网桥模式,所以必须安装两个RPM包。即:bridge-utils和tunctl。它们提供所需的brctl、tunctl命令行工具。能够使用yum在线安装:

[root@server3 ~]# yum install bridge-utils

(2)查看tun模块是否载入,例如以下:

[root@server3 ~]# lsmod | grep tun
tun 16577 2 vhost_net

假设tun模块没有载入,则执行“modprobe tun”命令来载入就可以;假设已经将tun编译到内核(可查看内核config文件里是否有“CONFIG_TUN=y” 选项),则不须要载入了;而假设内核全然没有配置TUN模块,则须要又一次编译内核才行了。

(3)检查/dev/net/tun的权限,须要让当前用户拥有可读可写的权限。

[root@server3 ~]# ll /dev/net/tun
crw-rw-rw- . 1 root root 10, 200 4月 23 10:35 /dev/net/tun

(4)建立一个bridge。并将其绑定到一个能够正常工作的网络接口上,并让bridge成为连接本机与外部网络的接口。

创建一个bridge能够直接在命令行中操作,也能够通过写配置文件来实现,这里是通过写配置文件来实现的。在/etc/sysconfig/network-scripts文件夹下,创建一个ifcfg-br0 文件,其类型设为Bridge:

[root@Server3 ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0

DEVICE=br0

TYPE=bridge

BOOTRPOTO=none

IPADDR=192.168.1.66

NETMASK=255.255.255.0

ONBOOT=yes

然后将物理接口桥接到桥接器

改动ifcfg-eth0。仅仅需在最后加上“BRIDGE=br0”,将其桥接到br0

[root@Server3 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"

NM_CONTROLLED="yes"

ONBOOT=yes

TYPE=Ethernet

BOOTPROTO=none

IPADDR=192.168.1.30

PREFIX=24

DEFROUTE=yes

IPV4_FAILURE_FATAL=yes

IPV6INIT=no

NAME="System eth0"

UUID=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03

HWADDR=00:15:17:9D:09:FE

BRIDGE=br0

重新启动物理机网络服务

[root@Server3 ~]# service network restart

查看当前桥接情况

[root@Server3 ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.0015179d0e90 no eth0
virbr0 8000.525400ee6f70 yes virbr0-nic

(5)開始配置虚拟机网络參数

在qemu-kvm的命令行中,关于bridge模式的网络參数例如以下:

-net tap[,vlan=n][,name=str][,fd=h][,ifname=name][,script=file][,downscript=dfile][,helper=helper][,sndbuf=nbytes][,vnet_hdr=on|off][,vhost=on|off][,vhostfd=h][,vhostforce=on|off]

该配置表示连接宿主机的TAP网络接口到n号VLAN中。并使用file和dfile两个脚本在启动客户机时配置网络和在关闭客户机时取消网络配置。

tap參数。表明使用TAP设备。

TAP是虚拟网络设备,它仿真了一个数据链路层设备(ISO七层网络结构的第二层),它像以太网的数据帧一样处理第二层数据报。

而TUN   与TAP类似,也是一种虚拟网络设备,它是对网络层设备的仿真。TAP被用于创建一个网络桥,而TUN与路由相关。

vlan=n  设置该设备VLAN编号,默认值为0。

name=name  设置名称。在QEMU monior中可能用到。一般由系统自己主动分配就可以。

fd=h  连接到如今已经打开着的TAP接口的文件描写叙述符,一般来说不要设置该选项。而是让QEMU会自己主动创建一个TAP接口。

当使用了fd=h的选项后。ifname、script、downscript、helper、vnet_hdr等选项都不可使用了(不能与fd选项同一时候出如今命令行中)。

ifname=name  设置在宿主机中加入的TAP虚拟设备的名称(如tap1、tap5等等),不设置这个參数时。QEMU会依据系统中眼下的情况。产生一个TAP接口的名称。

script=file  设置宿主机在启动客户机时自己主动运行的网络配置脚本。假设不指定,其默认值为“/etc/qemu-ifup”这个脚本,可指定自己的脚本路径以代替默认值;假设不须要运行脚本,则设置为“script=no”。downscript=dfile  设置宿主机在客户机关闭时自己主动运行的网络配置脚本。假设不设置,其默认值为“/etc/qemu-ifdown”;若客户机关闭时宿主机不须要运行脚本,则设置为“downscript=no”。

helper=helper  设置启动客户机时在宿主机中执行的辅助程序,包含去建立一个TAP虚拟设备,它的默认值为/usr/local/libexec/qemu-bridge-helper,一般不用自己定义,採用默认值就可以。

sndbuf=nbytes  限制TAP设备的发送缓冲区大小为n字节,当须要流量进行流量控制时能够设置该选项。其默认值为“sndbuf=0”,即不限制发送缓冲区的大小。

其余几个选项都是与virtio相关的,这里暂不做过多的介绍。

准备qemu-ifup和qemu-ifdown脚本。

在客户机启动网络前,会运行的脚本是“script”选项是由配置的(默觉得/etc/qemuif-up),一般在该脚本中去创建一个TAP设备并将其与bridge绑定起来。例如以下是qemu-ifup脚本的演示样例,当中“$1”是qemu-kvm命令工具传递给脚本的參数。它是客户机使用的TAP设备名称(如tap0、tap1等,也或者是前面提及的ifname选项的值)。另外,当中的“tunctl”命令这一行是不须要的。由于qemu-bridge-helper程序已经会创建好TAP设备,这里列出来仅仅是为了可能在一些版本号较旧的qemu-kvm中没有自己主动创建TAP设备。

#!/bin/bash
#This is a qemu-ifup script for bridging.
#You can use it when starting a KVM guest with bridge mode network.
#set your bridge name
switch=br0
if [ -n "$1" ]; then
#create a TAP interface; qemu will handle it automatically.
#tunctl -u $(whoami) -t $1
#start up the TAP interface
ip link set $1 up
sleep 1
#add TAP interface to the bridge
brctl addif ${switch} $1
exit 0
else
echo “Error: no interface specified”
exit 1
fi

注意:这个脚本要改为可运行文件,才干使用:

[root@Server3 ~]# chmod  +x /etc/qemu-ifup

因为qemu-kvm工具在客户机关闭时会去解除TAP设备的bridge绑定,也会自己主动去删除已不再使用的TAP设备,所以qemu-ifdown这个脚本没必要的。最好设置为“downscript=no”。例如以下列出一个qemu-ifdown脚本的演示样例,是为了说明清理bridge模式网络的环境的步骤。在qemu-kvm没有自己主动处理时能够使用。

#!/bin/bash
#This is a qemu-ifdown script for bridging.
#You can use it when starting a KVM guest with bridge mode network.
#Don’t use this script in most cases; QEMU will handle it automatically.
#set your bridge name
switch=br0
if [ -n "$1" ]; then
# Delete the specified interfacename
tunctl -d $1
#release TAP interface from bridge
brctl delif ${switch} $1
#shutdown the TAP interface
ip link set $1 down
exit 0
else
echo “Error: no interface specified”
exit 1
fi

如今開始执行虚拟机,命令例如以下所看到的:

[root@Server3 ~]# /usr/local/qemu-post-june-04-2012/bin/qemu-system-x86_64 -smp 2 -m 1024 /images/test.img -net nic -net tap,ifname=tap1,script=/etc/qemuif-up,downscript=no -vnc :6 -machine accel=kvm

查看网桥情况:

[root@Server3 ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.0015179d09fe yes eth0
tap1
virbr0 8000.52540092d0d1 yes virbr0-nic

能够看到br0下有两个网卡,然后仅仅要把虚拟机的IP设置成和网桥在一个网段内,就能够实现虚拟机与物理机之间的通信。

注意:在进行配置时,要关掉NetworkManager。否则操作会出错:

[root@Server3 ~]# service NetworkManager stop

使用网桥模式(bridge networking mode)配置KVM-QUME虚拟机网络的更多相关文章

  1. kvm/qemu虚拟机桥接网络创建与配置

    首先阐述一下kvm与qemu的关系,kvm是修改过的qemu,而且使用了硬件支持的仿真,仿真速度比QEMU快. 配置kvm/qemu的网络有两种方法.其一,默认方式为用户模式网络(Usermode N ...

  2. Vbox中Linux虚拟机网络配置(比较实用)

    好久没写过东西了,主要大部分都是来自对生活的感悟,很少有实实在在的关于学得有成就感的技术可以“炫耀”,所以也就懒得在这个上面登了. 实验室很早就有位师兄曾在吃饭的路上问过我们这群小弟,你们知道Vbox ...

  3. centos7安装kvm环境采用网桥模式并创建虚拟机制作openstack需要的镜像

    初始环境的安装:centos7 mini iso镜像进行安装的系统 采用的环境是vm该软件,联网方式NAT模式下配置的静态ip(如何在NAT模式下配置静态ip参考之前的文章) 1.由于要安装kvm环境 ...

  4. CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解(转)

    摘要:KVM虚拟机网络配置的两种方式:NAT方式和Bridge方式.Bridge方式的配置原理和步骤.Bridge方式适用于服务器主机的虚拟化.NAT方式适用于桌面主机的虚拟化. NAT的网络结构图: ...

  5. Linux网桥模式配置

    Linux网关模式下将有线LAN和无线LAN共享网段实现局域网内互联: 思路其实很简单:就是将虚拟出一个bridge口,将对应的有线LAN和无线LAN都绑定在这个虚拟bridge口上,并给这个brid ...

  6. 安装配置KVM虚拟化

    安装KVM虚拟化 KVM需要硬件⽀持, 所以需要开启虚拟化⽀持 硬件设备直接在BIOS设置开启CPU虚拟化 个⼈电脑同样进⼊BIOS开启虚拟化⽀持 VM需要找到对应虚拟机开启对应的VT-EPT虚拟化技 ...

  7. Linux网卡设置为网桥模式

    Linux网卡设置为网桥模式 1.    添加网卡,并修改相关配置文件 1.1虚拟机添加网卡,并配置相关文件 如:eth2为新添加网卡 cd /etc/sysconfig/network-script ...

  8. KVM——以桥接的方式搭建虚拟机网络配置

    以桥接的方式搭建虚拟机网络,其优势是可以将网络中的虚拟机看作是与主机同等地位的服务器. 在原本的局域网中有两台主机,一台是win7(IP: 192.168.0.236),一台是CentOS7(IP: ...

  9. 设计模式(六)桥连模式Bridge(结构型)

      设计模式(六)桥连模式Bridge(结构型) 1. 概述 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够 ...

随机推荐

  1. 【snmp】华为和H3C 网络设备设置snmp

    snmp-agent sys-info version all snmp community read public snmp community write private snmp sys-inf ...

  2. django日志的设置

    关于django的日志设置详细可以看下官方文档:https://yiyibooks.cn/xx/Django_1.11.6/topics/logging.html 示例: # 日志文件配置 LOGGI ...

  3. CF GukiZ hates Boxes 【二分+贪心】

    Professor GukiZ is concerned about making his way to school, because massive piles of boxes are bloc ...

  4. CF 990A. Commentary Boxes【数学/模拟】

    [链接]:CF [题意]:对于一个数n,每次加一的代价是a,每次减一的代价是b,求被m整除时的最小代价. [分析]:分情况讨论,自己多举几个栗子. [代码]: #include<cstdio&g ...

  5. 自定义编写jmeter的Java测试代码

    我们在做性能测试时,有时需要自己编写测试脚本,很多测试工具都支持自定义编写测试脚本,比如LoadRunner就有很多自定义脚本的协议,比如"C Vuser","JavaV ...

  6. JavaScript中的局部作用域及常量的定义

    局部作用域 通常JavaScript的作用域是函数内部,在类似for循环的语句块中是无法申明局部变量的. function exm() { for (var i=0; i<100; i++) { ...

  7. luogu P3305 [SDOI2013]费用流

    题目链接 bz似乎挂了... luogu P3305 [SDOI2013]费用流 题解 dalao告诉我,这题 似乎很水.... 懂了题目大意就可以随便切了 问1,最大流 问2,二分最大边权求,che ...

  8. [Atcoder Regular Contest 063] Tutorial

    Link: ARC063 传送门 C: 将每种颜色的连续出现称为一段,寻找总段数即可 #include <bits/stdc++.h> using namespace std; ,len; ...

  9. POJ 2975 Nim(博弈论)

    [题目链接] http://poj.org/problem?id=2975 [题目大意] 问在传统的nim游戏中先手必胜策略的数量 [题解] 设sg=a1^a1^a3^a4^………^an,当sg为0时 ...

  10. 【点分治】【哈希表】bzoj2599 [IOI2011]Race

    给nlog2n随便过的跪了,不得已弄了个哈希表伪装成nlogn(当然随便卡,好孩子不要学)…… 不过为啥哈希表的大小开小点就RE啊……?必须得超过数据范围一大截才行……谜 #include<cs ...