2010年10月25日 星期一

如何善用 VMware 的四種網路環境

在這邊看到聯想到的:
http://phorum.study-area.org/viewtopic.php?t=47372
(如果表達有不當之處還請見諒, 由於很多基礎的東西跳過了, 請有使用 VMware 等軟體的網友, 務必先從基礎的架構理解後再看; maggiessss 來聽要繳費哦, 請將款項匯到"去死去死團高雄分部".)


先從 TCP/IP 所對應的 ISO OSI 的底下三層來看:
最底層是電氣信號, 第二層是 Mac Address , 第三層是 IP .
(細節請自行參考相關書籍)

一般網路上的封包, 在區域網路內是用廣播的方式, 網路卡判斷本機的 Mac Address 相符時, 才會收下這封包, 而丟棄其他封包.

而 VMware 在安裝後, 除了實體的網路卡, 本身已經有一個 Mac Address 外, 會另外新增兩片網路卡(host-only, nat)及數個網段(VNet), 這兩片網路卡的功用是:

VMware 虛擬的 nat 網卡: 連接到一個類似 IP 分享器的 LAN 環境, host OS 會使用 192.168.n.1 這個 IP 來代表實體主機, 192.168.n.2 則是 VMware 建立的虛擬 gateway . (註: 這個 n 是每次安裝 VMware 後隨機產生的, 可以修改)

VMware 虛擬的 host-only 網卡: 在虛擬的 VNet 環境內, 會使用 192.168.h.1 這個 IP 來代表實體主機, 192.168.h.2 則是一台 DHCP 主機(沒有其他功能) . (註: 這個 h 是每次安裝 VMware 後隨機產生的, 可以修改)

所以可以知道, 一台裝好 VMware 的主機, 至少會有三張網卡(邏輯上的):
1. 實體的網路卡, 裡面至少要啟動 VMware Bridge .
2. 虛擬 nat 網卡, 使用 IP: 192.168.n.1 , gateway: 192.168.n.2
3. 虛擬 host-only 網卡, 使用 IP: 192.168.h.1 , 無 gateway

而在新增 VM 時, 同一台 VM 最多可以有三張網卡(以 VMware Workstataion 5.x 為例), 有四種選擇: bridge, nat, host-only, VNet. 這四種的差別, 就在於:
bridge: 由於每新增一片 VM 用的網卡, 也會產生一組 Mac Address , 所以如果 VM 執行中, 有使用到 bridge 網路時, 就會把實體的網路卡改為雜湊模式, 而任何透過 bridge 的動作, 就像把 VM 跟 host OS 接在同一個 hub 上, host OS 接在怎樣的網路環境, VM 的 bridge 網路都會接到相同的網路環境.
nat: 由於 VMware 會建立一個網段 192.168.n.x , 而由 192.168.n.2 擔任 DHCP 及 gateway 功能, 所以有 VM 新增 NAT 網卡時, 就會接到 192.168.n.x 這個網段, 並且可能會取得 192.168.n.3~254 的 IP , 可以透過 192.168.n.2 對外連線, 或者向 192.168.n.1 存取 host OS 的資源.
host-only: 類似 NAT 網段, 會由 VMware 建立 192.168.h.x 網段, 而由 192.168.h.2 擔任 DHCP 主機, 但是這個網段沒有 gateway , 不直接與其他網段連線, 也可以向 192.168.h.1 存取 host OS 的資源.
VNet: 沒有預設任何 IP , 只是接在同一個 VNet 內的虛擬網卡, 都可以互傳資料(預設應該有 5~6 個獨立的 VNet ).

那麼, 這樣的環境該怎樣應用呢?
首先, 確定 VM 會用到的網路架構
比如要測試 iptables 功能, 主機1 需要兩片網卡:
a. 對外採用 bridge , 設定正確的 IP
b. 對內採用 VNet A
主機2 是 client 端, 只需要一張網卡, 接在 VNet A

其次, 執行
就這樣....沒有了.... 酷

其實 VMware 模擬的網路環境算蠻多種的, 但是實際應用上, 很容易在架構上搞混, 例如:
1. 測試用的主機不該使用 bridge : 由於測試用的主機可能有 DHCP Server 功能, 或者電腦名稱, 網域名稱與現有環境相同, 接在 bridge 會造成現有環境衝突.
2. 不同網段間的 IP 範圍不該相同: 由於 IP 網路的特性, 同一個網段會採用廣播的方式, 不同網段則是送往 gateway 或丟棄, 但是許多使用者將不同網段設定了相同 IP , 就會造成 VM 無法判斷該送往哪個虛擬的網段, 完全無法連線.
3. 被字義上混淆: 由於 NAT/bridge/host-only 的字義, 沒有看說明的可能會有自己的解讀方式, 造成使用上的混淆.

所以, 建議在使用 VMware 測試前, 務必做到:
1. 去看基礎概論的資料(ISO/OSI, TCP/IP), 了解 bridge, router, NAT 等用詞的概念.
2. 先準備一個架構圖, 畫出不同網段, 各網段連接的主機, 各網段的 IP .
3. 決定各主機需要的網路卡類型.
4. 才開始運作.

(講得不是很清楚, 如果是這方面的需要, 請多加練習; 如果有錯的地方, 請指正 ^^! )

引用:連結