最近玩上了xen虛擬機,之前用xen搭建了橋接網絡。因為我這個虛擬機本是通過virtual box虛擬出來的,所以感覺總有些不對勁。昨天和今天使勁折騰了兩天,大概明白了怎樣搭建xen的NAT多IP網段的網絡。
情形是這樣的:筆記本電腦無線網卡網段是172.16.0.0/24,可以通過路由上網 ;VirtualBox虛擬出一個Debian6的Xen虛擬機,該虛擬機通過VB橋接至無線網段上網。 目的: 想在Xen虛擬機內部設置一個子網段A 10.1.1.0/24以及子網段B 10.20.40.0/24網段,xen內部的VPS分配在這兩個網段內。子網段A中的主機虛擬出兩個網卡,其中一個通過連接到Dom0的10.1.1.1網卡上網,而子網段B的VPS主機只有一個網卡,只能連接到子網段A主機充當的GATEWAY上,不能直接上網。 我們按順序來講,首先是Dom0的設置 設置/etc/xen/xend-config.sxp文件#(vif-script vif-bridge) #注釋起橋接網絡
(vif-script vif-nat) #取消注釋,亂七八糟的配置不用寫
設置Debian的網絡/etc/network/interfaces
#無線網卡
auto eth1
allow-hotplug eth1
iface eth1 inet dhcp
gateway 172.16.0.254
dns-nameservers 8.8.4.4
#子網段A
auto dummy0
iface dummy0 inet static
address 10.1.1.1
netmask 255.255.255.0
#子網段B
auto dummy0:0
iface dummy0:0 inet static
address 10.20.40.254
netmask 255.255.255.0
可能有人會想,子網段B可不可以設成dummy1啊?貧僧之前就這麼做的,可惜restart網絡之後,網卡dummy1起不來。這樣寫就可以了
設置Dom0使其成為NAT服務器
iptables -A POSTROUTING -s 10.1.1.0/24 -o eth1 -j MASQUERADE
vif = [ 'ip=10.1.1.11', 'ip=10.20.40.2' ]
啟動此主機後更改網絡配置,設置IP。(這裡的IP不是此主機的最終IP,最終使用的IP需要在VPS的/etc/network/interfaces裡設置)
設置子網B的主機
設置/etc/xen/xen-test1.cfg
vif = [ 'ip=10.20.40.10' ]
設置具體網絡。
大功告成!注意下防火牆配置。
之前碰到了一個問題就是,子網B主機ping子網A主機,A的主機回復了B,但是B中的主機卻收不到回復包。以為是防火牆問題,後來才發現是/etc/xen/xen-test1.cfg文件中的vif設錯了,設的網段是10.1.1.0/24。像這種錯誤可以通過在Dom0中仔細查看ifconfig中的vifX.Y解決。注意vif的設置一定要和虛擬機的實際網絡配置一致。