三月 14 2013

在Hyper-V建立DD-WRT虛擬機器做路由器使用

分類:軟體好硬

因為 Hyper-V 沒有直接提供 NAT 功能,為了要將測試環境與真實環境的網路實體隔開,所以一直以來,我都是利用 Windows Server 2003 開始就內建的 RRAS (路由及遠端存取服務),獨立一台虛擬機器當路由器,架構多重網路的 LAB 測試環境。

前陣子意外在微軟 Ask Premier Field Engineering (PFE) Platforms 部落格看到這篇文章:Your Personal Isolated Lab - Featuring Windows 8 + Hyper-V,這才知道原來知名的第三方分享器韌體 DD-WRT 也能塞進 Hyper-V 的虛擬機器中執行,而且佈署方式出奇簡單。

換句話說,我可以輕鬆改用 DD-WRT 來取代原有用 Windows Server 當路由器的角色。以下圖文廢話很多,不代表操作困難。

首先到 DD-WRT 網站下載 x86 的映像檔,選擇 Support -> Other Downloads,接著參考下圖路徑結構找到想使用的釋出版本。

當然一般都是選擇最新日期。然後找到 x86 的目錄,下載「dd-wrt_public_vga.image」的映像檔;請不要開心地想下載 full 版本,除非有付錢買完整版(這蠢事我已經幹過...)。從這頁發現,日後更新應該也很簡單,在管理介面塞入「dd-wrt-webupgrade_public_vga.bin」就好了。

下載完成後,建立 DD-WRT 虛擬機器所需要的虛擬硬碟檔。建立方式不只一種,但因為之後的步驟,虛擬硬碟檔需要掛載到實體處理,推薦直接在磁碟管理中操作。

虛擬硬碟檔可以不用太大,像我才在主機設定個 128MB 來玩,虛擬硬體類型也不需要用動態擴充了。 /:P/

建立好,請掛載此虛擬硬碟檔,以利後續作業。

掛載後請初始化,但不用特別格式化,或者給磁碟代號。還有,務必請注意圖片中的磁碟代號,以本文來說是磁碟 5。

之後須下載 physdiskwrite 這支小工具,來協助我們將映像檔直接轉進 VM 硬碟檔中。這支指令工具的使用方式真的很簡單,並不需要特別使用 GUI 版本,因為 GUI 版本需安裝 .Net Framework 3.5,對於 Windows Server 2012 來說還要特別裝,所以這邊也不用 GUI 版做示範。

執行指令方式如下,接著再輸入欲寫入的磁碟代號就完成:

physdiskwrite -u image_name -d

前面有提到要注意磁碟代號,是因為這邊可以看到相同的對應代號 PhysicalDrive5。假使不小心選錯,就會讓實體硬碟的資料 GG 了

做完上面這些,就等同搞定 DD-WRT 塞進虛擬硬碟的工作。如果用檔案總管想點進這個磁碟機看內容,卻發現無法存取,請別慌張這是正常狀況,因為 DD-WRT 不是用微軟的磁碟格式。

接下來請準備掛進虛擬機器。別忘記先中斷虛擬硬碟檔與實體的連結。

建立 DD-WRT 虛擬機器。有以下幾點要注意:
1. 建立第一代的虛擬機器 ( Windows Server 2012 R2/ Hyper-V 3.0 R2 以上 )
2. 請新增至少兩張「傳統網路介面卡 ( Legacy Network Adapter )」。因為要當路由器/分享器,一張勢必主外,一張主內,而且 DD-WRT 沒有完整支援 Hyper-V 標準版本的虛擬網路介面卡。
3. 請先不要掛上虛擬交換器。避免掛錯而對外部網路發出 DHCP,造成外部使用者的連線問題。
4. 記憶體真的不用太大,除非想展現田僑仔風範。DD-WRT 網站有建議,假使韌體版本是 2010/08/13 之後的,請至少設定 64MB 以上。

正式開機。

看到如下畫面,請當做開機完成,就可以不用再理他了。因為之後的設定工作都可以從用戶端電腦透過 Web 去管理。

DD-WRT 預設內網管理的 IP 及網址是 http://192.168.1.1 ,所以測試環境中的用戶端電腦,請務必設定與 DD-WRT 先處於同一組虛擬交換器及 192.168.1.0/24 網段。

前面有講到不要讓 DD-WRT 先掛上虛擬交換器,是因為 DD-WRT 第一次開機會把哪張網卡當 LAN,真的誰也不知道,只能像這樣切換跟用 Ping 才能找到。

Ping 通就代表可以連上囉。

第一次看到用 i7 跑 DD-WRT,感覺好強大啊~~ /xd/

實際測試使用後,有些心得想做分享。

假使希望知道對應到 LAN 的虛擬網卡是哪一張,可以參考下圖,在 DD-WRT 的機器狀態選擇系統資訊,及虛擬機器的網路介面卡設定中用 MAC 位址確認。

若一直沒有對 WAN 的功能做設定,很容易導致重開機後,對應到 LAN 的虛擬網卡被置換到另一張。像這張 LAN MAC 就跟上圖不一樣,觀察發現元兇似乎就是那時沒設定 WAN。

稍微可惜的是,Hyper-V 最多只能指派四張傳統網路介面卡給虛擬機器,若有更多重的網路環境想架設,用 DD-WRT 可能就不是這麼方便。

再新增兩張傳統網路介面卡到虛擬機器,也真的在 DD-WRT 中辨識成功。

儘管 DD-WRT 在 Hyper-V 中執行,真的是超羽量級地執行,但我必須誠實地說,小弟對於 Linux-Based 的系統並沒有很熟,如果希望架構出我在 Windows Server RRAS 裡相同的網路設定,DD-WRT 內建的 GUI 介面是不夠使用的,必須改透過指令模式去設定,所以最後還是選擇我最熟悉的 Windows Server 做路由服務。但還是希望這篇文章,能幫助到有需要的朋友們。

 

延伸閱讀:
DD-WRT Wiki: X86
Microsoft TechNet 文件庫: 設定虛擬網路

目前有 3 個回應 , 標籤:


目前有 3 個回應

  1. Landy 說道:

    Dear askasu:
    我建置好以後,果然「分不出來」哪一張是「Lan」,哪一張是「Wan」,使用「askasu」方法測試「兩張」傳統網卡,一張先掛起來,然後 Ping 看看,通了就表示那一張是「Lan」。

    謝謝 askasu 老師,分享如此好的文章,萬分感激。

  2. 說道:

    您好

    我也打算使用虛擬機器來運行ddwrt
    可是我卡在一個步驟

    在磁碟管理中 建立vhd時 是要先在hyperV先建立虛擬機器嗎?
    我這一個步驟看不懂說 是要先創一個虛擬硬碟出來 然後在從磁碟管理中建立vhd嗎?

    感謝~

    • AskaSu 說道:

      先新增一個虛擬硬碟沒錯,然後
      1. 在實體機用磁碟管理掛載該虛擬硬碟檔
      2. physdiskwrite 工具將下載回來的 IMG 轉進該虛擬硬碟中

發表迴響

*