KVM/QEMU橋接網絡設置
配置kvm的網絡有2種方法。其一,默認方式為用戶模式網絡(Usermode Networking),數據包由NAT方式通過主機的接口進行傳送。其二,使用橋接方式(Bridged Networking),外部的機器可以直接聯通到虛擬機,就像聯通到你的主機一樣。
第一,用戶模式
虛擬機可以使用網絡服務,但局域網中其他機器包括宿主機無法連接它。比如,它可以瀏覽網頁,但外部機器不能訪問架設在它里面的web服務器。
默認的,虛擬機得到的ip空間為10.0.2.0/24,主機ip為10.0.2.2供虛擬機訪問。可以ssh到主機(10.0.2.2),用scp來拷貝文件。
第二,橋接模式
這種模式允許虛擬機就像一臺獨立的主機一樣擁有網絡。這種模式需要網卡支持,一般的有線網卡都支持,絕大部分的無線網卡都不支持
A) 在主機上創(chuàng)建一個網絡橋
1)安裝bridge-utils
sudo apt-get install bridge-utils
2)改變網絡設置,先停止網絡
sudo invoke-rc.d networking stop
如果是用遠程連接進行設置,設置完后,重啟網絡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)重啟網絡
sudo /etc/init.d/networking restart
B) 隨機生成一個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é)必須為偶數,如00,52等,不能為奇數(01),否則會有不可預料的問題。因為奇數保留為多播使用。如,KVM可以接收ARP包并回復,但這些回復會使其他機器迷惑。這是以太網的規(guī)則,而非KVM的問題。
如直接將網卡地址設置為MACADDR="32:32:32:32:32:32"
C) 將以前安裝的虛擬機網絡改為橋接方式或者安裝新的虛擬機使用橋接網絡
一個腳本文件
#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,運行如下命令:
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
運行安裝完的虛擬機,運行如下命令:
sudo ./kvm.bridge -m 512 -hda winxp.img -boot c
===================================================================================
linux中Kvm橋接網絡成功的關鍵
KVM在LINUX中的重要作用,速度等,我不再評價,我只能說,快!
但是,如果你要在一個服務器中使用多個虛擬機,并且想讓這些虛擬機提供服務,那么,橋接網絡是必不可少的,可是,網上流傳的三四個版本中,關于橋接網絡的,你試一下,會發(fā)現,很難成功,這是何道理?看起來他們似乎都配置成功了,也有可能是軟件版本的問題,總之,你親自嘗試的時候,會發(fā)現,這其實很難實現。
當然,如果無法實現的話,也就沒有此文了!
先說一下我的軟件配置:
Linux 2.6.28-11-server #42-Ubuntu SMP X86_64位Ubuntu服務器版9.04
KVM內核是自帶的。
真實網絡接口名稱:eth0
KVM的安裝方法我就不寫了,網上有一大堆,注意,KVM有兩個部分,一個部分是內核部分,這在9.04中是自帶的,您要安裝的KVM是管理部分(我也不知道這樣理解是否正確,總之,你要安裝KVM及QEMU)
不安裝QEMU也可以用,因為KVM帶一個修改版本的QEMU
成功的關鍵是配置網絡及路由(這個在網上流傳的版本中沒有提到)
請生成一個文件(qemu-ifup),將這個文件加上可執(zhí)行屬性,文件內容如下:
#!/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,這是你的計算機的實際網卡,請根據你的網絡修改,也可能跟我的這個一樣。
address 192.168.1.242 //根據你的需要設置從這里到下面的參數,這個網絡跟你的實現網絡在一個子網內,不然無法橋接
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
此時,重新啟動計算機即可。