使用网桥模式(bridge networking mode)配置KVM-QUME虚拟机网络
(1)linux要工作在網(wǎng)橋模式,所以必須安裝兩個(gè)RPM包。即:bridge-utils和tunctl。它們提供所需的brctl、tunctl命令行工具。能夠使用yum在線(xiàn)安裝:
[root@server3 ~]# yum install bridge-utils(2)查看tun模塊是否載入,例如以下:
[root@server3 ~]# lsmod | grep tun tun 16577 2 vhost_net假設(shè)tun模塊沒(méi)有載入,則執(zhí)行“modprobe tun”命令來(lái)載入就可以;假設(shè)已經(jīng)將tun編譯到內(nèi)核(可查看內(nèi)核config文件里是否有“CONFIG_TUN=y” 選項(xiàng)),則不須要載入了;而假設(shè)內(nèi)核全然沒(méi)有配置TUN模塊,則須要又一次編譯內(nèi)核才行了。?
(3)檢查/dev/net/tun的權(quán)限,須要讓當(dāng)前用戶(hù)擁有可讀可寫(xiě)的權(quán)限。
[root@server3 ~]# ll /dev/net/tun crw-rw-rw- . 1 root root 10, 200 4月 23 10:35 /dev/net/tun(4)建立一個(gè)bridge。并將其綁定到一個(gè)能夠正常工作的網(wǎng)絡(luò)接口上,并讓bridge成為連接本機(jī)與外部網(wǎng)絡(luò)的接口。
創(chuàng)建一個(gè)bridge能夠直接在命令行中操作,也能夠通過(guò)寫(xiě)配置文件來(lái)實(shí)現(xiàn),這里是通過(guò)寫(xiě)配置文件來(lái)實(shí)現(xiàn)的。在/etc/sysconfig/network-scripts文件夾下,創(chuàng)建一個(gè)ifcfg-br0 文件,其類(lèi)型設(shè)為Bridge:
[root@Server3 ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0DEVICE=br0
TYPE=bridge
BOOTRPOTO=none
IPADDR=192.168.1.66
NETMASK=255.255.255.0
ONBOOT=yes
然后將物理接口橋接到橋接器
改動(dòng)ifcfg-eth0。僅僅需在最后加上“BRIDGE=br0”,將其橋接到br0
[root@Server3 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE="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
重新啟動(dòng)物理機(jī)網(wǎng)絡(luò)服務(wù)
[root@Server3 ~]# service network restart查看當(dāng)前橋接情況
[root@Server3 ~]# brctl show bridge name bridge id STP enabled interfaces br0 8000.0015179d0e90 no eth0 virbr0 8000.525400ee6f70 yes virbr0-nic(5)開(kāi)始配置虛擬機(jī)網(wǎng)絡(luò)參數(shù)
在qemu-kvm的命令行中,關(guān)于bridge模式的網(wǎng)絡(luò)參數(shù)例如以下:
-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]
該配置表示連接宿主機(jī)的TAP網(wǎng)絡(luò)接口到n號(hào)VLAN中。并使用file和dfile兩個(gè)腳本在啟動(dòng)客戶(hù)機(jī)時(shí)配置網(wǎng)絡(luò)和在關(guān)閉客戶(hù)機(jī)時(shí)取消網(wǎng)絡(luò)配置。tap參數(shù)。表明使用TAP設(shè)備。
TAP是虛擬網(wǎng)絡(luò)設(shè)備,它仿真了一個(gè)數(shù)據(jù)鏈路層設(shè)備(ISO七層網(wǎng)絡(luò)結(jié)構(gòu)的第二層),它像以太網(wǎng)的數(shù)據(jù)幀一樣處理第二層數(shù)據(jù)報(bào)。
而TUN ? 與TAP類(lèi)似,也是一種虛擬網(wǎng)絡(luò)設(shè)備,它是對(duì)網(wǎng)絡(luò)層設(shè)備的仿真。TAP被用于創(chuàng)建一個(gè)網(wǎng)絡(luò)橋,而TUN與路由相關(guān)。
vlan=n ?設(shè)置該設(shè)備VLAN編號(hào),默認(rèn)值為0。
name=name ?設(shè)置名稱(chēng)。在QEMU monior中可能用到。一般由系統(tǒng)自己主動(dòng)分配就可以。
fd=h ?連接到如今已經(jīng)打開(kāi)著的TAP接口的文件描寫(xiě)敘述符,一般來(lái)說(shuō)不要設(shè)置該選項(xiàng)。而是讓QEMU會(huì)自己主動(dòng)創(chuàng)建一個(gè)TAP接口。
當(dāng)使用了fd=h的選項(xiàng)后。ifname、script、downscript、helper、vnet_hdr等選項(xiàng)都不可使用了(不能與fd選項(xiàng)同一時(shí)候出如今命令行中)。
ifname=name ?設(shè)置在宿主機(jī)中加入的TAP虛擬設(shè)備的名稱(chēng)(如tap1、tap5等等),不設(shè)置這個(gè)參數(shù)時(shí)。QEMU會(huì)依據(jù)系統(tǒng)中眼下的情況。產(chǎn)生一個(gè)TAP接口的名稱(chēng)。
script=file ?設(shè)置宿主機(jī)在啟動(dòng)客戶(hù)機(jī)時(shí)自己主動(dòng)運(yùn)行的網(wǎng)絡(luò)配置腳本。假設(shè)不指定,其默認(rèn)值為“/etc/qemu-ifup”這個(gè)腳本,可指定自己的腳本路徑以代替默認(rèn)值;假設(shè)不須要運(yùn)行腳本,則設(shè)置為“script=no”。downscript=dfile ?設(shè)置宿主機(jī)在客戶(hù)機(jī)關(guān)閉時(shí)自己主動(dòng)運(yùn)行的網(wǎng)絡(luò)配置腳本。假設(shè)不設(shè)置,其默認(rèn)值為“/etc/qemu-ifdown”;若客戶(hù)機(jī)關(guān)閉時(shí)宿主機(jī)不須要運(yùn)行腳本,則設(shè)置為“downscript=no”。
helper=helper ?設(shè)置啟動(dòng)客戶(hù)機(jī)時(shí)在宿主機(jī)中執(zhí)行的輔助程序,包含去建立一個(gè)TAP虛擬設(shè)備,它的默認(rèn)值為/usr/local/libexec/qemu-bridge-helper,一般不用自己定義,採(cǎi)用默認(rèn)值就可以。
sndbuf=nbytes ?限制TAP設(shè)備的發(fā)送緩沖區(qū)大小為n字節(jié),當(dāng)須要流量進(jìn)行流量控制時(shí)能夠設(shè)置該選項(xiàng)。其默認(rèn)值為“sndbuf=0”,即不限制發(fā)送緩沖區(qū)的大小。
其余幾個(gè)選項(xiàng)都是與virtio相關(guān)的,這里暫不做過(guò)多的介紹。
準(zhǔn)備qemu-ifup和qemu-ifdown腳本。
在客戶(hù)機(jī)啟動(dòng)網(wǎng)絡(luò)前,會(huì)運(yùn)行的腳本是“script”選項(xiàng)是由配置的(默覺(jué)得/etc/qemuif-up),一般在該腳本中去創(chuàng)建一個(gè)TAP設(shè)備并將其與bridge綁定起來(lái)。例如以下是qemu-ifup腳本的演示樣例,當(dāng)中“$1”是qemu-kvm命令工具傳遞給腳本的參數(shù)。它是客戶(hù)機(jī)使用的TAP設(shè)備名稱(chēng)(如tap0、tap1等,也或者是前面提及的ifname選項(xiàng)的值)。另外,當(dāng)中的“tunctl”命令這一行是不須要的。由于qemu-bridge-helper程序已經(jīng)會(huì)創(chuàng)建好TAP設(shè)備,這里列出來(lái)僅僅是為了可能在一些版本號(hào)較舊的qemu-kvm中沒(méi)有自己主動(dòng)創(chuàng)建TAP設(shè)備。
注意:這個(gè)腳本要改為可運(yùn)行文件,才干使用:
[root@Server3 ~]# chmod +x /etc/qemu-ifup 因?yàn)閝emu-kvm工具在客戶(hù)機(jī)關(guān)閉時(shí)會(huì)去解除TAP設(shè)備的bridge綁定,也會(huì)自己主動(dòng)去刪除已不再使用的TAP設(shè)備,所以qemu-ifdown這個(gè)腳本沒(méi)必要的。最好設(shè)置為“downscript=no”。例如以下列出一個(gè)qemu-ifdown腳本的演示樣例,是為了說(shuō)明清理bridge模式網(wǎng)絡(luò)的環(huán)境的步驟。在qemu-kvm沒(méi)有自己主動(dòng)處理時(shí)能夠使用。#!/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
如今開(kāi)始執(zhí)行虛擬機(jī),命令例如以下所看到的:
[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 查看網(wǎng)橋情況: [root@Server3 ~]# brctl show bridge name bridge id STP enabled interfaces br0 8000.0015179d09fe yes eth0tap1 virbr0 8000.52540092d0d1 yes virbr0-nic能夠看到br0下有兩個(gè)網(wǎng)卡,然后僅僅要把虛擬機(jī)的IP設(shè)置成和網(wǎng)橋在一個(gè)網(wǎng)段內(nèi),就能夠?qū)崿F(xiàn)虛擬機(jī)與物理機(jī)之間的通信。
注意:在進(jìn)行配置時(shí),要關(guān)掉NetworkManager。否則操作會(huì)出錯(cuò):
[root@Server3 ~]# service NetworkManager stop總結(jié)
以上是生活随笔為你收集整理的使用网桥模式(bridge networking mode)配置KVM-QUME虚拟机网络的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 收藏十一种常用简单实用漂亮的HTML表格
- 下一篇: 如何注册、发布 CSDN博客