隔離模型

隔離模型中在物理機上添加一個虛擬網卡並將該虛擬網卡后半段關聯至網橋,只要虛擬機中網卡和該虛擬網卡后半段IP地址設置成同一個網段,guest1和guest2和物理機的虛擬網卡就能夠通信了,但是還是無法與物理機之外的網絡通信。可以將guest的網關指向物理機虛擬網卡的地址,並且在物理機上打開核心轉發功能,guest就能夠實現與外部網絡進行通信。
這樣存在一個問題:guest收不到外部網絡回應的報文,路由模型需要在外部網絡中為guest網段添加回程路由,這樣會相當麻煩。即路由模型可以與外部網路進行通信了,但是無法作為通信目標使用。
為了解決路由模型中存在的問題,在物理主機上添加一個nat server,所有來自內部的報文通過物理網卡出去之前都將源地址轉化成物理網卡的地址,所有的回應報文也都將回應給物理網卡,物理網卡由nat會話表再將物理網卡的地址轉化回內部主機的地址。
橋接即在物理機上創建一個網橋並關聯物理網卡至網橋,一旦將網卡設置為網橋可以將物理網卡看成是一台交換機,同時也會在物理機上為該物理網卡創建一個虛擬網卡(br0)並將物理網卡原本使用的MAC地址放至br0(物理網卡的IP地址配置在網橋上),同時物理網卡打開混雜模式(不管報文的目標mac地址是不是自身,該網卡將報文全部接收)。這樣所有guest通過eth*發往vnet*的報文直接發往該網橋,而網橋有上關聯了物理網卡,從而來自guest的報文直接從物理網卡發出;當網卡收到回應報文時,因為開啟了混雜模式會接收所有的報文,報文目標MAC如果是的物理網卡就會將回應報文轉交給br0,報文目標MAC如果是虛擬機就會將回應報文轉虛擬機對應的網卡。(即物理網卡本身就相當於一個交換機,這種網橋一般稱為物理網橋)

依賴的模塊:即在內核級別軟件模擬一個軟交換機,即使用bridge-utils向內核發指令,由內核創建網橋設備,網橋是在內核中實現的。

表現為一個網絡接口,使用ifconfig無法查看,原因是br0未激活。
#!/bin/bash # bridge=br0 if [ -n "$1" ];then ip link set $1 up sleep 1 brctl addif $bridge $1 [ $? -eq 0 ] && exit 0 || exit 1 else echo "Error: no interface specified." exit 1 fi
#!/bin/bash # bridge=br0 if [ -n "$1" ];then brctl delif $bridge $1 ip link set $1 down exit 0 else echo "Error: no interface specified." exit 1 fi
#chmod +x /etc/qemu-ifup
#chmod +x /etc/qemu-ifdown
ck -nographic -net nic -net tap,ifname=vif0.0,script=/etc/qemu-ifup
ck -nographic -net nic,macaddr=52:54:00:12:34:57 -net tap,ifname=vif1.0,script=/etc/qemu-ifup
在橋接模型下,需要將物理網卡關聯至網橋而且網橋上不能配置地址,再上述的環境中實現要先拆除網橋上配置的地址:
#ip addr del 10.0.100.3/24 dev br0
刪除物理網卡上的IP地址;將物理網卡添加至br0上;為br0配置地址(原先eth3的地址配置在br0上):
#ip addr del 192.168.1.230 dev eth3; brctl addif br0 eth3; ip addr add 192.168.1.230 dev br0;
#ifconfig 此時的地址在br0上,物理網卡eth3無地址
#brctl show 網橋上關聯了一張物理網卡和兩個虛擬機網卡的后半段即虛擬網卡的后半段直接關聯至物理網卡
設置虛擬機地址:
虛擬機1:
#ifconfig eth0 192.168.1.67/24
虛擬機2:
#ifconfig eth0 192.168.1.68/24
測試:虛擬機可以直接ping通外部網絡
虛擬機1:
#ping 192.168.1.230 通
#ping 192.168.1.25 通
