[經驗分享] 你用 VMware Workstation + Ubuntu + Bridged Mode,無法連上網路嗎?
這個問題很久之前就一直困擾我。基於一個「懶」字,我一直用其它方法迴避它。直到今天,我心一橫,上了 Google 查一個多小時,試過好多網友的方法無效後,自己無意中發現解答。而這個解答簡單到讓我大笑不止(喃喃自語:「早知這麼簡單,之前ㄍㄧㄥ一下不就解決了 嗎?」)。不忍藏私,所以就為文分享,以饕讀者。
先描述一下我的問題:為了製作「嵌入式系統」的講義,我裝了如下的測試環境:
- 實體機
- 硬體:Lenovo X200 筆電,Intel Core 2 Duo, P8400, 2.26 GHz, 2GB RAM
- 作業系統:Windows 7 SP1, 64 bits
- 網路連線:無線網路 802.11 b/g(使用 192.168.11.x 網段)
- 虛擬機
- VMware: VMware Workstation 7.0
- Ubuntu (@VMware): 10.04 LTS,消耗 512 MB 主記憶體
- Ubuntu 虛擬機網路連線模式:NAT(使用 192.168.58.x 網段)
- 開發板
- 長高科技 DMA-6410L
- 處理器:Samsung S3C6410
- 記憶體:256 MB NAND Flash + 128 MB SDRAM
- 安裝軟體:Android 2.1
- 網路連線方式:固接網路(使用 192.168.11.x 網段,與實體機網段相同)
裝到這裡,都還算順利!在虛擬機內也可以用瀏覽器連上網路。若對 NAT 這個名詞不熟悉的讀者,可以參考維基百科中「NAT 的名詞解釋」。
後來,我的開發板需要執行一些與 Ubuntu 同網段才能測試的實驗。既然實體機與開發板都使用 192.168.11.x ,我就想乾脆把生存於 VMware 虛擬機內的 Ubuntu,從原來的 192.168.58.x 網段,轉換到 192.168.11.x ,比較一勞永逸。玩過 VMware 的朋友們或許知道,只要把虛擬機內的「網路連線模式」,從「NAT Mode」,換成「Bridged Mode」,就能讓虛擬機與實體機平起平坐,使用相同的 192.168.11.x 網段。
問題從此就開始了!我將虛擬機的網路連線模式,從 NAT 換成 Bridge 後,從此虛擬機就無法連上網路了!右上角會有個「無線網路」的圖示,加上紅色的驚嘆號,並出現「Wired Disconnected」字樣(如圖一所示)。無論我怎麼調整,就是無法網路連線。
以前我遇到這種狀況,乾脆使用另一台桌機。那台桌機是直接安裝 Ubuntu 的,並非使用虛擬機,當然不會有什麼 NAT 或 Bridged 的問題。反正講義能做出來不就好了(我夠懶吧)?
但懶人也是有尊嚴的(哈哈),今天不知道哪根筋不對,就是想在我的筆電內的虛擬機,使用 Bridged Mode 連上網路(實情是,筆電可以拿著到處走,還能到客廳邊看電視邊做講義… )。所以 Google 了一下,大家說的解法都不脫下列幾點:
- Ubuntu 內的無線網卡驅動程式太舊!更換一下就可以了。原 Po 還提供 Patch 檔讓人下載,並解說如何安裝。
- 不要用 DHCP 自動取得 IP 位址。改用靜態網址,並增加「靜態路由(Static Routing)」設定,好讓它連上實體機的網路。
- VMware Tools 設定不對,請執行 vmware-config.pl 重新設定。
- 換掉 VMware,改用 VirtualBox(我就是喜歡 VMware,怎樣?你咬我啊!)
上述幾個方法,除了最後一個太白爛我不想做外,其它我都做過了。沒一個有效。後來某網友提到,VMware 的 NAT Mode 使用 VMnet8 這張虛擬網卡,而 Bridged Mode 使用 VMnet0 這張虛擬網卡(如圖二所示)。既然用 NAT可以連上網路,而 Bridged 不行,會不會是 VMnet0 的設定有問題?
那位仁兄雖然沒有講出答案,不過倒是給我一個靈感:「VMware Workstation 內應該有 VMnet0 網卡的設定視窗,查查看說不定有什麼結果」。沒想到被我找到「VMware Workstation 選單 > Edit > Virtual Network Editor…」這個設定視窗(如圖三所示)。將 VMnet0 的 Bridged 設定,從「Automatic」改為「11b/g Wireless LAN Mini PCI Express Adapater III」(您的機器應該會出現您使用的固接或無線網卡名稱,不一定與我的相同),就…連上了(如圖四所示)!!!(內牛滿面哪~~)
靠!早知道這麼簡單,我就不用去下載什麼 Patch 檔、設定什麼靜態路由、還跑什麼 vmware-config.pl 了!好吧!我承認是我個人網路除錯能力太弱,怪不得別人… 。