如何配置桥接网络:
首先要安装桥接工具:
yum install bridge-utils-1.2-10.el6.x86_64
//创建 br0 桥接设备
brctl addbr br0
//这句命令是否创建出来一个虚拟网卡呢?还是先创建一个虚拟网卡,
//再用这个虚拟网卡创建一个桥接口?
//答案是,直接用这句命令就可以,但还有另一种修改网络配置文件的方式
然后要添加网卡到这个桥接接口,只需要:
brctl addif br0 eth0 # 将eth0网卡添加到br0中,作为br0的一个接口
具体来说是执行以下的步骤,要注意的是这是一个临时配置的方法,系统重启后失效
[root@jay-linux ~]# brctl addbr br0 #添加br0这个bridge
[root@jay-linux ~]# brctl addif br0 eth0 #将br0与eth0绑定起来
[root@jay-linux ~]# brctl stp br0 on #将br0加入到STP协议中
[root@jay-linux ~]# dhclient br0 #将br0的网络配置好
桥接网络结构:(转自IBM: http://www.ibm.com/developerworks/cn/linux/l-cn-kvm/index.html)
//以下是摘自笑遍世界博客KVM虚拟化连载中关于网桥配置的一部分说明
博文地址:http://smilejay.com/kvm_theory_practice/
建立bridge后的状态是让网络接口eth0进入混杂模式(promiscuous mode,接收网络中所有数据包),网桥br0进入转发状态(forwarding state),而且br0和eth0有相同的MAC地址,一般也会得到和eth0相同的IP。“brctl stp br0 on”是打开br0的STP协议,STP是生成树协议(Spanning Tree Protocol),它主要是为了避免在建有bridge的以太网LAN中出现桥回路(bridge loop)。如果不打开STP,则可能出现回路从而导致建有bridge的主机网络不畅通。
这里默认是通过DHCP方式动态获得IP;在绑定了bridge之后,也可以使用“ifconfig”和“route”等命令进行设置br0的IP、网关、默认路由等,需要将bridge设置为与其绑定的物理网络接口一样的IP和MAC地址,并让默认路由使用bridge(而不是ethX)来连通。这个步骤可能导致宿主机的网络断掉,之后重新通过bridge建立网络连接,所以建立bridge这个步骤最好不要通过SSH连接远程配置。另外,在RHEL系列系统中最好将NetworkManager这个程序结束掉,因为它并不能管理bridge的网络配置,反而它在后台运行则可能对网络设置有些干扰。
eth0, br0 的网络设置:
br0是一块虚拟网卡,用来做linux下的桥接设备,将其他物理网卡、虚拟网卡绑定到br0上作为它的一个接口,br0如同交换机, 绑定到br0上的网卡如同交换机的一个接口。网卡在这里转换为桥接设备的一个接口之后,就可以注释掉它原有的网络配置信息(避免未知某种冲突,这里我没有明白为什么一定要注释掉原来的配置信息)。虚拟的客户机中的网卡连接到br0其中一个接口,这样虚拟机和宿主机就连接在同一个网段中(网络号相同)。这个连接是通过qemu-kvm 命令行工具来实现。下面会介绍到如何用qemu-kvm命令行工具实现这个连接。
示例1:Redhat系统KVM
创建磁盘
qemu-img create -f qcow2 CentOS6u4.img 20G
查看磁盘信息
qemu-img info CentOS6u4.img
使用配置文件的方式来做网桥配置,这种配置方式,重启后仍然有效
配置桥接
配置 /etc/sysconfig/network-scripts 下面的网络脚本
//这里是新建一个名为br0的虚拟网卡,TYPE类型为Bridge。
# cat/etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
ONBOOT=yes
BOOTPROTO=dhcp
#IPADDR=192.168.60.17
#NETMASK=255.255.255.0
#GATEWAY=192.168.60.1
TYPE=Bridge
//这里是将原有的物理网卡配置信息注释了,并且设置它为网桥的一个接口
//主要是这一句:BRIDGE=br0
# cat/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
#BOOTPROTO=dhcp
#HWADDR=00:01:02:8C:50:09
#为什么要注释掉网卡物理地址呢。。?
ONBOOT=yes
BRIDGE=br0
在笑遍世界的kvm虚拟化连载中提到,在RHEL系列系统中最好将NetworkManager这个程序结束掉,因为它并不能管理bridge的网络配置,反而它在后台运行则可能对网络设置有些干扰。
//如果不关掉NetworkManager,在关闭、启动network服务报了如下错误:
[root@guli network-scripts]# service network reload
Shutting down interface eth0: Error: Device 'eth0'
(/org/freedesktop/NetworkManager/Devices/0) disconnecting failed: This
device is not active
[FAILED]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: Error: Connection activation failed: Failed to determine connection's virtual interface name
[FAILED]
Bringing up interface br0: Error: Connection activation failed: Failed to determine connection's virtual interface name
[FAILED]
[root@guli network-scripts]# service network stop
Shutting down interface eth0: Error: Device 'eth0'
(/org/freedesktop/NetworkManager/Devices/0) disconnecting failed: This device is not active
[FAILED]
Shutting down loopback interface: [ OK ]
//关掉NerworkManager服务
service NetworkManager stop
//再来启动网络服务就OK了
service network stop
service network start
//我发现这样配置也可以 NM_CONTROLLED=no, 没有关NetworkManager。
使用一个下面的脚本:
//启动一个网卡,并将之添加到br0
//其中,”$1” 是qemu-kvm命令行工具传递给脚本的参数,它是客户机使用的TAP设备名称(如tap1, tap2等),qemu-bridge-helper会创建好TAP设备,不过可能在一些版本较旧的qemu-kvm工具中没有自己创建TAP设备。(这段话转自笑遍世界的kvm连载专题)
cat /etc/init.d/qemu-ifup
#!/bin/bash
#set your bridge name
switch=br0
if [ -n “$1” ]; then
# 创建一个TAP接口,这个接口是拿来接到客户机上的网卡的
# create a TAP interface, qemu-kvm may handle it automatically
# tunctl -u $(whoami) -t $1
# start up the TAP interface
if [ -n “$1” ]; then
/sbin/ip link set $1 up
Sleep 0.5s
# add TAP interface to the bridge
/usr/sbin/brctl addif $switch $1
exit 0
else
echo “Error: no interface specified”
exit 1
fi
使用ios安装,对于多张iso发行版的linux需要在qemu的控制台换盘( 我有两个ios, 但是木有换盘哦。。。,如果遇到提示需要换盘,可以尝试下面的方法,我没有遇到过,没有试验这个对不对,当做一个备忘放这里吧 ):
[root@jay-linux kvm_demo]# qemu-system-x86_64 -hda CentOS6u4.img -cdrom 你的iso路径 -m 1024 -net nic -net
tap,ifname=tap1,script=/etc/qemu-ifup,downscript=no -vnc :0 -daemonize
进入qemu的控制台,在鼠标聚焦到qemu界面时候,按住 Ctrl+Alt+2 进入控制台:
(qemu) change cdrom 你的另外一张iso
上面命令如果提示:"device not found"。可能是设备映射出错,可以这样:
(qemu) info block
...
(qemu) change ide1-cd0 iso文件
安装好以后,这样启动:
[root@jay-linux kvm_demo]# qemu-system-x86_64 -hda CentOS6u4.img -m 1024 -net nic -net
tap,ifname=tap1,script=/etc/qemu-ifup,downscript=no -vnc :0 -daemonize
-usb -usbdevice tablet
图形界面可能会有鼠标偏移的问题,加参数-usb -usbdevice tablet 可以改善的。
QEMU常见使用
使用vnc
qemu-kvm -m 512 -hda xp.img -net nic,macaddr=00:00:11:33:02:02 \
-net tap,ifname=tap2,script=/etc/init.d/qemu-ifup \
-localtime -vnc 192.168.60.17:2 --daemonize -usb -usbdevice tablet
上面让kvm虚拟机在后台运行,并启动vnc服务器,这样我们可以用vnc客户端
连接192.168.60.17:5902这个地址。
...
本文大部分修改自:
http://jianlee.ylinux.org/Computer/Software/kvm-qemu.html