KVM/QEMU橋接網(wǎng)絡(luò)設(shè)置
配置kvm的網(wǎng)絡(luò)有2種方法。其一,默認(rèn)方式為用戶模式網(wǎng)絡(luò)(Usermode Networking),數(shù)據(jù)包由NAT方式通過主機(jī)的接口進(jìn)行傳送。其二,使用橋接方式(Bridged Networking),外部的機(jī)器可以直接聯(lián)通到虛擬機(jī),就像聯(lián)通到你的主機(jī)一樣。
第一,用戶模式
虛擬機(jī)可以使用網(wǎng)絡(luò)服務(wù),但局域網(wǎng)中其他機(jī)器包括宿主機(jī)無法連接它。比如,它可以瀏覽網(wǎng)頁,但外部機(jī)器不能訪問架設(shè)在它里面的web服務(wù)器。
默認(rèn)的,虛擬機(jī)得到的ip空間為10.0.2.0/24,主機(jī)ip為10.0.2.2供虛擬機(jī)訪問??梢詓sh到主機(jī)(10.0.2.2),用scp來拷貝文件。
第二,橋接模式
這種模式允許虛擬機(jī)就像一臺獨(dú)立的主機(jī)一樣擁有網(wǎng)絡(luò)。這種模式需要網(wǎng)卡支持,一般的有線網(wǎng)卡都支持,絕大部分的無線網(wǎng)卡都不支持
A) 在主機(jī)上創(chuàng)建一個網(wǎng)絡(luò)橋
1)安裝bridge-utils
sudo apt-get install bridge-utils
2)改變網(wǎng)絡(luò)設(shè)置,先停止網(wǎng)絡(luò)
sudo invoke-rc.d networking stop
如果是用遠(yuǎn)程連接進(jìn)行設(shè)置,設(shè)置完后,重啟網(wǎng)絡(luò)sudo invoke-rc.d networking restart,如果中途有一步錯誤,將不能連接
3)修改/etc/network/interfaces,直接用下面的替換。
a) 靜態(tài)ip模式
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet static
address 192.168.0.10
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
b) DHCP模式
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
4)重啟網(wǎng)絡(luò)
sudo /etc/init.d/networking restart
B) 隨機(jī)生成一個KVM的MAC地址
MACADDR="52:54:$(dd if=http://www.3lian.com/dev/urandom count=1 2>/dev/null | md5sum | sed 's/^/(../)/(../)/(../)/(../).*$//1:/2:/3:/4/')"; echo $MACADDR
可以指定一個mac地址,但要注意,第一個字節(jié)必須為偶數(shù),如00,52等,不能為奇數(shù)(01),否則會有不可預(yù)料的問題。因?yàn)槠鏀?shù)保留為多播使用。如,KVM可以接收ARP包并回復(fù),但這些回復(fù)會使其他機(jī)器迷惑。這是以太網(wǎng)的規(guī)則,而非KVM的問題。
如直接將網(wǎng)卡地址設(shè)置為MACADDR="32:32:32:32:32:32"
C) 將以前安裝的虛擬機(jī)網(wǎng)絡(luò)改為橋接方式或者安裝新的虛擬機(jī)使用橋接網(wǎng)絡(luò)
一個腳本文件
#start kvm.winxp
USERID=`whoami`
MACADDR="32:32:32:32:32:32"
model=e1000e
iface=`sudo tunctl -b -u $USERID`
kvm -net nic,vlan=0,macaddr=$MACADDR -net tap,vlan=0,ifname=$iface $@
sudo tunctl -d $iface
#end kvm.winxp
使用iso文件安裝winxp,運(yùn)行如下命令:
sudo ./kvm.bridge -m 512 -hda winxp.img -cdrom /home/software/zh-hans_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74070.iso -boot d
運(yùn)行安裝完的虛擬機(jī),運(yùn)行如下命令:
sudo ./kvm.bridge -m 512 -hda winxp.img -boot c
===================================================================================
linux中Kvm橋接網(wǎng)絡(luò)成功的關(guān)鍵
KVM在LINUX中的重要作用,速度等,我不再評價,我只能說,快!
但是,如果你要在一個服務(wù)器中使用多個虛擬機(jī),并且想讓這些虛擬機(jī)提供服務(wù),那么,橋接網(wǎng)絡(luò)是必不可少的,可是,網(wǎng)上流傳的三四個版本中,關(guān)于橋接網(wǎng)絡(luò)的,你試一下,會發(fā)現(xiàn),很難成功,這是何道理?看起來他們似乎都配置成功了,也有可能是軟件版本的問題,總之,你親自嘗試的時候,會發(fā)現(xiàn),這其實(shí)很難實(shí)現(xiàn)。
當(dāng)然,如果無法實(shí)現(xiàn)的話,也就沒有此文了!
先說一下我的軟件配置:
Linux 2.6.28-11-server #42-Ubuntu SMP X86_64位Ubuntu服務(wù)器版9.04
KVM內(nèi)核是自帶的。
真實(shí)網(wǎng)絡(luò)接口名稱:eth0
KVM的安裝方法我就不寫了,網(wǎng)上有一大堆,注意,KVM有兩個部分,一個部分是內(nèi)核部分,這在9.04中是自帶的,您要安裝的KVM是管理部分(我也不知道這樣理解是否正確,總之,你要安裝KVM及QEMU)
不安裝QEMU也可以用,因?yàn)镵VM帶一個修改版本的QEMU
成功的關(guān)鍵是配置網(wǎng)絡(luò)及路由(這個在網(wǎng)上流傳的版本中沒有提到)
請生成一個文件(qemu-ifup),將這個文件加上可執(zhí)行屬性,文件內(nèi)容如下:
#!/bin/sh
set -x
switch=br0
if [ -n "$1" ];then
/usr/bin/sudo /usr/sbin/tunctl -u `whoami` -t $1
/usr/bin/sudo /sbin/ip link set $1 up
sleep 0.5s
/usr/bin/sudo /usr/sbin/brctl addif $switch $1
exit 0
else
echo "Error: no interface specified"
exit 1
fi
將這個文件保存在你的HOME目錄下,或者其它的目錄也行。
修改你的/etc/network/interfaces文件如下:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
auto br0
iface br0 inet static
bridge_ports eth0 //注意這個eth0,這是你的計(jì)算機(jī)的實(shí)際網(wǎng)卡,請根據(jù)你的網(wǎng)絡(luò)修改,也可能跟我的這個一樣。
address 192.168.1.242 //根據(jù)你的需要設(shè)置從這里到下面的參數(shù),這個網(wǎng)絡(luò)跟你的實(shí)現(xiàn)網(wǎng)絡(luò)在一個子網(wǎng)內(nèi),不然無法橋接
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameserver 192.168.1.1 219.141.136.10
dns-search Office
此時,重新啟動計(jì)算機(jī)即可。