2,245 瀏覽數

Connect to Host Network – 虛擬網路裝置(virtual network)

在 RHEL5 Xen 下設定 Virtual machine 時 Network 有兩種選項. 1.Virtual network 2.Shared physical device 這兩種有何不同.
xen_networking01
在 RHEL5 Xen 的環境預設會建立兩個 bridge,一個則是由 QEMU 所提供出來的 virbr0,另外一個是由 Xen 所提供叫做 xenbr0,在安裝 Virtual machine 時網路卡的選擇也就是這兩種. 1.Virtual network 2.Shared physical device這兩個使用的模式和方式全然不同,先來解釋一下 virbr0.
networking_mode06

Virtual network – virbr0

networking_mode05

  1. QEMU 會在你的 Dom0 產生一個 bridge 虛擬裝置 "virbr0" .virbr0 不只是個單純的 NAT 而已,他是一個 NAT + DHCP 的架構,所有的 Virtual machine(DomU) 都會透過 virbr0 來指派一個私人網域 (private IP).預設為 192.168.122.2 ~ 192.168.122.254 (在他的設定檔中可以定義其 DHCP 可指定的 IP 範圍).
  2. 其預設的 default gateway 為 192.168.122.1/24 ,所有在這架構下的 domU 虛擬機器的封包都必須透過 dom0 的 NAT 去連結到其他的網路.
  3. 如同一般的 NAT 所有 domU 上的虛擬機器都是被隱藏在 private 私人網域,所以外部不能直接連接到 DomU 上的虛擬機器.
  4. 這一個是由 Qemu 所產生所以設定檔並不跟 Xen 在相同的目錄下 ( /etc/xen ) 而是存放在 /etc/libvirt/qemu/networks/default.xm

    [root@benjr ~]# cat /etc/libvirt/qemu/networks/default.xml
    <network>
    <name>default</name>
    <uuid>49a0ceb-5662-4a61-8149-98ea750d393b</uuid>
    <bridge name="virbr0" />
    <forward/>
    <ip address="192.168.122.1" netmask="255.255.255.0">
    <dhcp>
    <range start="192.168.122.2" end="192.168.122.254" />
    </dhcp>
    </ip>
    </network>
    

    其中的 ip address 是 default gateway IP,range 則是DHCPclients 所能使用的範圍,都可以依據需求做改變.

Shared physical device – xenbr0

所有的 Virtual machine(DomU) 和 Dom0 的網路裝置就會像是串接在一個 Hub 或是 Switch 上,只要是同區段的 IP 都可以互通. 
networking_mode01
更多關於 XEN 的 Network 請參考 : http://benjr.tw/3420
 
如果安裝完之後想改模式只要直接修改 Virtual machine 的設定檔(位於 /etc/xen 的目錄下),Virtual machine 的設定檔通常會依據你 Virtual machine 名稱 "system Name"來命名.假如我的 Virtual machine 的 system name 為 rhel4 這樣設定檔直接會被命名為 /etc/xen/rhel4,只要修改 vif 改成 virbr0 或是 xenbr0

  1. Virtual network – virbr0
    vif =[ bridge=virbr0 ]
    或是
  2. Shared physical device – xenbr0
    vif =[ bridge=xenbr0 ]

安裝完的 Guest OS 除了可以透過 Virtual Machine Manager 的 Details / hardware 來看 NIC 當初是用 NAT 或是 Bridge 的形式! XEN 提供了一些指令來觀察所有的 Virtual machinet 的 NIC 狀態所使用的模式.首先來看看我們所有的 Guest OS 有哪一些!!

目前可以看到的有 rhel4(Dom 3) 和 rhel5(Dom 4) 兩種,至於他們的 networking 模式是什麼,要使用下面的指令.不過要先記住他們對應的 Dom  ID 為何!
xen_list
virbr0 代表了 NAT networking ,也就是說 vif3.0 就是 Dom3(rhel4) 的第一個 eth0 是使用了 NAT networking.
xen_networking01
xenbr0 代表了 bridge networking,vif0.0 / vif4.0 就是 Dom0(RHEL5 本身)和 Dom4(rhel5)  的第一個 eth0 是使用了bridge networking.
xen_networking02

note:這是很討厭的一點 RHEL5 下預設最多只能有 4 個 Xen bridge.不管你怎麼設定都只能有 4 個,一個也多不了,對於一台網路卡多過4個 port 的 Server 而言,其他的 port  豪無用武之地,也常常發現重新開機後某個 port 又不通了,光是重新設定就搞死人了.所以現在都只能限制 port 數來解決這個問題.幸好 RHEL 將在 RHEL5 U3 解決這個問題.

Set fixed MAC address for your virtual system

另外最後的一個選項是我們自己指派給虛擬網卡一個 MAC address ,要設定虛擬網路裝置的 mac 他是有一個規則性的. mac :XY:XX:XX:XX:XX:XX ,mac 使用16進制來顯示 X 可為任何的16進制(0~9,A,B,C,D,E,F), Y 則只能使用 2, 6, A 或 E. 不過 Xen 建議使用的範圍 00:16:3e:xx:xx:xx. 這個區段是保留給 Xen 使用的. 如果在安裝完成之後可以直接針對 Virtual machine 的設定檔來修改而設定檔位於目錄 /etc/xen/ 下.

[root@benjr ~]# vi /etc/xen/rhel4
name = "rhel4"
uuid = "cf67710d-b756-086b-8cde-be61d2faca1b"
maxmem = 512
memory = 512
vcpus = 1
bootloader = "/usr/bin/pygrub"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
vfb = [ "type=vnc,vncunused=1,keymap=en-us" ]
disk = [ "phy:/dev/sda5,xvda,w" ]
vif = [ "mac=00:16:3e:27:95:c0,ip=10.0.0.1" ]

在 vif = ["mac=XY:XX:XX:XX:XX:XX"] 就可針對 mac 來設定.
參考文件 : http://blog.ithome.com.tw/

網友的想法

  1. 自動參照通知: Virtualization- Networking | Benjr.tw

發表迴響