Xen網路
* 橋接網路
* 路由網路
* 包含NAT的虛擬區域網路
橋接網路
Time for Action—Using Bridged Networking
1、xen裡面預設的網路設定是橋接,這可以通過查看Xen在設定檔(/etc/xen/xend-config.sxp)來進一步確認,它應該有非注釋的下面兩行。
(network-script network-bridge)
(vif-script vif-bridge)
2、為domU建立一個新的設定檔,你可以使用在之前章節建立的任何一個鏡像或你自己擁有的其他鏡像。根據你選擇的鏡像替換檔案中的配置:
kernel = %26quot;/boot/vmlinuz-2.6.16.38-xenU%26quot;
memory = 32
name = %26quot;bridged_domU%26quot;
disk = ['tap:aio:/root/xen-images/ttylinux_domU.img,hda,w']
vif = [ 'bridge=xenbr0' ]
root = %26quot;/dev/hda1 ro%26quot;
3、用xm啟動domU
xm create /root/xenimages/ttylinux_domU.cfg –c
4、檢查以確定domU已啟動並正常運行
xm list
下面是啟動Xen服務和xend時發生的事件隊列:
1、執行/etc/xen/scripts/network-bridge指令碼
2、這將建立一個叫xenbr0的新橋接器
3、從物理網卡eth0複製MAC和IP地址
4、停止物理網卡eth0
5、建立一對新的已串連的虛擬網路介面--veth0和vif0.0
6、將之前複製的 MAC和IP地址指派到veth0
7、重新命名物理網卡eth0為peth0
8、重新命名虛擬網卡veth0為eth0
9、串連peth0和vif0.0到xenbr0
10、啟動橋接器xenbr0和網卡peth0、eth0、vif0.0
使用brctl show命令可以查看串連到各個橋接器上的網路介面情況
路由網路
Time for Action—Using Routed Networking
1、因為我們需要修改xend的設定檔,所以我們首先要停止xend
service xend stop
2、修改xen設定檔/etc/xen/xend-config.sxp使我們能夠使用路由網路。注釋關聯橋接網路的兩行並取消注釋關聯路由網路的兩行。如果在設定檔中沒發現配置路由網路的行,那麼加上他們:
(network-script network-route)
(vif-script vif-route)
3、重新啟動xend讓它用新的配置起動
xend start
4、修改我們之前使用的 domU的設定檔使它能使用路由網路
kernel = %26quot;/boot/vmlinuz-2.6.16.38-xenU%26quot;
memory = 32
name = %26quot;routed_domU%26quot;
disk = ['tap:aio:/root/xen-images/ttylinux_domU.img,hda,w']
vif = [ 'ip=192.168.1.165' ]
root = %26quot;/dev/hda1 ro%26quot;
5、起動domU
xm create /root/xen-images/ttylinux_domU.cfg -c
6、檢查domU已經起動並正常運行
xm list
下面是 xend用路由網路設定起動的事件隊列
1、允許dom0進行IP轉寄
2、當domU起動的時候,xen從eth0複製IP地址到虛擬網路介面vif.0。虛擬介面的 ID是自動分配給xen起動的每個客戶域的
。被分配的 id在單個會話裡面永遠不會被重用,因此如果你停止並重啟一個域,它將重新分配到一個新的 ID。
3、啟動虛擬介面vif.0。
4、為domU的設定檔中指向虛擬介面vif.0分配的 IP地址增加靜態路由
Virtual Local Network with Network Address Translation
Time for Action—Using VLAN with NAT
我們將在 192.168.2.0上建立一個虛擬網路並且此網路保護一個web伺服器和一個資料庫,所有在此網路的虛擬機器的 IP地址都將在此範圍內。我們將在此網路建立兩個虛擬機器並從一個公網IP地址去訪問他們。連接埠將被dom0轉寄到各個虛擬機器上。
1、第一個網路介面被dom0使用了,我們需要建立一個新的網路介面用於我們的 VLAN。這個介面使用dummy網路去掉建立並命名為dummy0。建立一個新的名為/etc/sysconfig/network-scripts/ifcfg-dummy0的檔案:
A DEVICE=dummy0
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
IPV6INIT=no
PEERDNS=yes
TYPE=Ethernet
NETMASK=255.255.255.0
IPADDR=x.x.x.x
ARP=yes
2、分配一個IP地址到這個介面並把它加到網路介面檔案-/etc/network/interfaces:
auto dummy0
iface dummy0 inet static
address 192.168.2.1
netmask 255.255.255.0
3、修改xend配置(/etc/xen/xend-config.sxp)增加下面的行,使我們在新的 dummy網路介面dummy0上監聽橋接:
(network-script 'network-bridge netdev=dummy0')
4、確定IP轉寄被允許
echo %26quot;1%26quot; %26gt; /proc/sys/net/ipv4/ip_forward
5、重啟sysctl使修改被live kernel擷取
/sbin/sysctl -p
6、在我們的 VLAN上建立第一個虛擬機器。修改它的設定檔使它看起來像下面這樣:
# assume this is the webserver vm
kernel = %26quot;/boot/vmlinuz-2.6.16.38-xenU%26quot;
memory = 32
name = %26quot;vlan_domU_1%26quot;
disk = ['tap:aio:/root/xen-images/ttylinux_domU.img,hda,w']
vif = [ 'ip=192.168.2.2' ]
root = %26quot;/dev/hda1 ro%26quot;
gateway=%26quot;192.168.2.1%26quot;
7、在我們的 VLAN上建立第二個虛擬機器,修改他的設定檔使它看起來像下面這樣:
# assume this is the mysql vm
kernel = %26quot;/boot/vmlinuz-2.6.16.38-xenU%26quot;
memory = 32
name = %26quot;vlan_domU_2%26quot;
disk = ['tap:aio:/root/xen-images/ttylinux_domU.img,hda,w']
vif = [ 'ip=192.168.2.3' ]
root = %26quot;/dev/hda1 ro%26quot;
gateway=%26quot;192.168.2.1%26quot;
8、通知dom0必須為特定的連接埠轉寄請求到這個VLAN。為此我們需要首先在 dom0允許NAT:
iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -j MASQUERADE
9、現在我們可以配置規則轉送連接埠到正確的虛擬機器,首先我們轉寄80連接埠:
iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 80 -j DNAT --to 192.168.2.2:80
10、然後轉寄mysql的連接埠3306:
iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 80 -j DNAT --to 192.168.2.3:3306
重啟xend然後建立虛擬機器,現在我們已經有一個簡單的網路設定使dom0轉寄基於連接埠的請求到VLAN裡面的一個客戶域。