在Azure VM中安裝Virtualbox VM披荊斬棘紀錄

最近工作上短時間需要來跑一個軟體
該軟體必須安裝為虛擬機
且同時要能夠側錄該軟體對外網路流量
而該軟體是客製化Linux並封裝成OVA檔案
所以一開始打算在自己筆電Windows作業系統中安裝Virtualbox
並把OVA匯入Virtualbox中
同時在Windows安裝Wireshark以進行網路側錄

官方資源要求建議運行資源至少32G RAM
但手邊的只有12G RAM的筆電硬體資源明顯不夠
硬是測試了幾次
RAM都直接爆炸後VM死當給我看

身在這個雲端運算資源被大量推崇的時代
於是就試著找了一些雲端服務解決方案來試試看

首先先找了AWS
個人覺得對於初學者來說並不是太友善
初學者如果只看官方提供的操作說明會一直卡關(詳參考資料1-1)
尤其AWS有很多IAM、User、Role、Policy、inline policy的概念都需要花時間理解一下
此外還要使用AWS CLI命令控制介面才能上傳檔案(詳參考資料1-2)
CLI常常指令執行到一半才發現User權限東缺西缺
又要一直去inline policy去新增權限才有辦法順利執行
大概我悟性以較差
所以花了快半天的時間才成功把自己的ova上傳到AWS E2上

[AWS官方參考資料]

最慘的是
因為這個軟體是客製化Linux
AWS無法偵測到作業系統類型
所以成功傳上去後卻辨識失敗
等於花的這半天時間都浪費啦
因為心太累
也懶得依照原本設計架構改上傳一台Windows上去測試
所以改試看看Azure有沒有比較好用

對我來說
Azure上手的速度快非常多
對於悟性低的我來說連說明都不用看
半小時內就有辦法新增一台VM起來

Azure的Markerplace預設就有許多VM可以選擇
包含了我需要的Windows版本
首先我先在Markerplace依RAM大小排序
建置了一台價格最便宜但有32G RAM的Windows 10機器
有經驗的朋友看到這邊可能已經想叫我住手
因為這邊沒選好會導致後面悲劇發生

總之第一次玩Azure如我在選項設定完後
大概等了10-20分鐘就完成VM建置
之後再等了10-20分鐘左右完成Bastion(Azure瀏覽器連線VM UI功能)設定
就可以開始直接使用瀏覽器來操作VM辣!!

接著安裝好Virtualbox及匯入ova檔案
迫不及的點開VM準備迎接這等待已久的執行畫面
But
畫面上卻出現了錯誤訊息
說明因為OS沒有啟用Windows Hypervisor Platform功能
所以無法執行VM

好喔

所以我試圖在OS中啟用對應的功能:
在工具列Windows按右鍵>選擇Apps and Features>在右方捲到最下方,選擇Related Settings項目中的Programs and Features>選擇左方目錄Turn Windows features on or off>把Hyper-V勾起來>按OK>重新開機

這時悲劇發生
這個功能因為疑似因為資源不夠而被顯示為鎖死(錯誤畫面可詳參考資料2-1)

沒想到不先查好資料的報應來的如此之快
沒錯
並不是所有的Azure VM都是可以在裡面執行VM的
必須要能夠支援巢狀虛擬化的VM才能夠執行(巢狀虛擬化說明詳參考資料2-2、2-3,可支援的規格詳參考資料2-4中有被標記***的)

所以
只好忍痛把已經建立好的VM砍掉
並依照可用的規格重新建立一台VM

雖然Hypervisor Platform一樣預設沒有啟用
但這次發現Hyper-V Platform終於可以順利啟用啦!


但事情有這麼簡單嗎?

再次測試安裝Virtualbox並匯入OVA執行後
卻發現還是出現一模一樣的錯誤

在花了一個晚上看了相關資料(詳參考資料2-5)
在一大片Hyper-V跟VT-x討論文中載浮載沉
結果最後成功的處理方式就是把原本啟用的Hyper-V再停用就解決了

Azure參考資料:

在成功把VM開啟後遇到了下一個問題
因為作業需求需要把網路介面設定為host-only
讓我可以從主機來側錄VM的網路流量
但可能因為Azure平台限制或是該軟體ova本身限制
導致在設定VM時完全無法按下OK鍵
所以完全無法更改預設設定


話雖如此
卻發現在VM運作時卻可以使用快速選項來將網卡斷線
這是不是代表其實這些選項還是可以被調整的


後來想到如果從UI介面無法調整
是不是可以改用命令介面來直接下指令修改呢
Virtualbox中有一個叫做VBoxManage.exe的指令工具
路徑大概在C:\Program Files\Oracle\VirtualBox中
在Windows作業系統中無法使用cmd直接呼叫
所以可以透過把他加入環境路徑
或是從cmd移至該工具路徑呼叫使用

一試之下不禁喜上眉梢
用VBoxManage真的可以跳過使用者UI來修改VM設定!
VBoxManage的功能十分多樣(詳參考資料3-1)
這次我使用的是修改網卡功能(詳參考資料3-2)
以下提供把VM網卡設定為host-only模式之指令提供參考:

VBoxManage modifyvm $VM_NAME --nic<網卡編號> <連接方式> --hostonlyadapter<虛擬網卡編號> <虛擬網路名稱> 

實際使用範例如下:

VBoxManage modifyvm "My VM" --nic2 hostonly --hostonlyadapter2 vboxnet0
VBoxManage參考資料:
3-1. https://www.virtualbox.org/manual/ch08.html#vboxmanage-modifyvm
3-2. https://medium.com/ci-t/set-up-a-virtualbox-vm-with-4-vboxmanage-commands-9266a5ee885d

完成以上設定後
本次任務終於大功告成辣!!!
めでたしめでたし

留言

這個網誌中的熱門文章

VirtualBox VDI新增硬碟空間

tshark 處理pcap檔案的參數說明

在Wireshark找到Skype的流量