虛擬機跑起來!RouterOS CHR 軟路由效能輕鬆突破 1000M!

最近弄了一台迷你工控電腦,跑了很多網路應用、P2P、Aria2 下載機跟一堆 Docker 應用通通都遷進去,跑了幾個禮拜後,發現超穩!

長時間下來機器本體還冰冷冷的,而且最讓我煩惱就是 CPU 佔用居然還很低,實在太浪費這台迷你電腦了

於是就開始構思如何給他更多的工作。。(沒錯!這就是慣老闆思維~)

因爲買這台迷你電腦時候有特別挑雙網口的,原本就想著讓他做更多事情~

我虛擬機系統則是採用免費開源的 Proxmox VE (PVE)來搭建,另外也有蠻多人在使用 VMware ESXi

不過 PVE 核心是 Debian 系統,佔用的系統資源會比較低,對於硬體的要求也比較低

而且我後面也要跑一台 Debian 虛擬機,當然就首選 PVE 囉~

接著就乾脆一不做二不休把 UniFi USG 網關的工作也給迷你電腦算了,直接跑個軟路由

網路上搜一下,這種軟體路由的種類還蠻多的,討論比較多比較常見的有 OpenWRTRouterOS

OpenWRT 是免費且開放原始碼的, 開發者也蠻積極活絡的一直在更新

RouterOS 則是大名鼎鼎 MikroTik 的商業公司,根據不同等級有不同授權金額,最高級授權價值不斐

原本我是直接使用 OpenWRT,用了一段時間蠻穩定的,而且記憶體佔用長時間只有 40MB 左右

/media/2019/12/CleanShot-2019-11-24-at-17.10.36.png

所以在分配時候給 OpenWRT 128M or 256M 就非常夠用

然後就算跑滿我光世代的 300M 下載,CPU 也才出現 15% 左右的佔用而已

以這個比例來推算,就算破 1000M 的話,CPU 可能也就在 60% 左右,真是超夠用的~

一開始沒直接用 RouterOS 是因為這系統的授權價格與設定複雜難度實在讓我望之卻步

光是防火牆的設定我有看就沒有懂過。。。

不過後面經過不斷爬文之後,雖然達不到清楚明白,但也算是足夠使用

還發現他們有推出一個虛擬機專用的 CHR(Cloud Hosted Router)版本

只能安裝在虛擬機或者 VPS 上面,而且是全功能的,授權金額是根據「上傳速度」來決定的

Free:上傳限速 1Mbit、免費

P1:上傳限速 1Gbit、$45

P10:上傳限速 10Gbit、$95

P-Unlimited:上傳不限速、$250

CHR 授權比起之前實體主機上面的傳統授權寬鬆許多(以前只要硬碟壞掉、換掉,ROS 授權就沒了)

CHR 授權是跟你在官網的帳號捆綁的,如果你原先虛擬機不用了,可以隨時換去其他虛擬機內

只要注意同一時間一個授權只能啟用一台虛擬機即可,相當方便,再也不怕授權會失效了~

這次我是買 P1 授權,上傳可以達到 1GB,以目前台灣家庭光世代發展速度來看

起碼還能用好幾年都不用擔心會達到上傳 1GB 的頻頸。。。🤦‍♂️

而 ROS CHR 授權在淘寶上面很多商家都在販售,P1 售價大約在 150~170 人民幣左右

擔心買到假授權的話,可以到 MikroTik 官網查亞洲經銷公司,然後依照公司名稱到淘寶上面搜索

淘寶上的售價比起官方的建議價格 45 美金要便宜一半,而且授權終身有效,算是蠻超值的

/media/2019/12/CleanShot-2019-11-26-at-13.33.39.png

在同樣硬體環境下 ROS 平常佔用的記憶體就比 OpenWRT 高快一倍,平常大概會維持在 74MB 左右

而 CPU 使用率兩個軟路由都差不多,跟當前網路使用速度來決定的,使用頻寬越高 CPU 使用率就會越高

好了,講太多廢話了,以下來記錄一下安裝(踩坑)過程

Proxmox VE 小修改

Proxmox VE 安裝過程超簡單,官網下載映像檔,寫到 USB 隨身碟裡面,開機一直點點點就搞定了

PVE 安裝後系統預設是使用企業訂閱的更新源,這導致沒有去訂閱的免費版無法正常更新系統

不過因為 PVE 是採取 Debian 架構,我們可以很輕鬆自己新增或者移除修改系統更新源

首先使用網頁管理後台的 Shell 進入終端機

/media/2019/12/CleanShot-2019-11-26-at-14.52.29.png

1
2
# 使用 nano 文字編輯器或者 vim 都可以,直接打開更新源檔案
$ nano /etc/apt/sources.list

複製粘貼以下內容到檔案裡面(新增無訂閱的普通源到系統裡面,這個源是 PVE 官方維護的,安全)

1
deb http://download.proxmox.com/debian/pve buster pve-no-subscription

之後記得保存之後退出,接著我們要註釋掉企業訂閱的源

1
2
# 同樣用文字編輯器打開企業訂閱源
$ nano /etc/apt/sources.list.d/pve-enterprise.list

打開後應該只會看見一行更新源,直接在這行最前面加上一個 # 註釋掉即可

完成後應該會跟下圖一樣

/media/2019/12/CleanShot-2019-11-26-at-15.41.05.png

同樣記得保存之後退出,然後直接輸入更新指令更新一下系統即可

1
2
3
4
$ apt update
$ apt full-upgrade -y
# 更新完可以重開機一下
$ reboot

另外一個就是全新安裝後,每次登入網頁管理後台都會有個「無有效訂閱」的提醒很煩

/media/2019/12/CleanShot-2019-11-26-at-15.21.00.png

如果是個人非商業使用用免費版就行,大部分問題自己上網搜索搞定,所以就沒去訂閱企業服務

這個煩人的提醒視窗也是可以有方法關閉的

1
2
# 直接 nano 打開該檔案
$ nano /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js

在 nano 中按下鍵盤的「Ctrl + W」,可以快速搜尋以下字串

1
if (data.status !== 'Active') {

找到後把這行改成以下:

1
if (false) {

接著保存退出,然後輸入以下指令重啟服務

1
$ systemctl restart pveproxy.service

你清除瀏覽器上網記錄以後,再去登入 PVE 管理後台就會發現這個提醒視窗消失了~

搞定 PVE 以後,我們接下來要安裝 RouterOS CHR 版

在 PVE 中安裝 RouterOS CHR

/media/2019/12/roschrcloud.jpg

RouterOS 官網沒有提供 iso 映像檔,所以需要我們手動在 PVE 裡面完成映像檔的掛載

首先先在 PVE 裡面建立一個新的虛擬機

/media/2019/12/CleanShot-2019-11-26-at-17.59.43.png

記住上圖的 VM ID 數字,這個數字很重要,後面會需要用到

/media/2019/12/CleanShot-2019-11-26-at-18.02.40.png

上圖 OS 部分,左邊選項改到「Do not use any media」即可

/media/2019/12/CleanShot-2019-11-26-at-18.02.54.png

上圖保持預設即可,不用動

/media/2019/12/CleanShot-2019-11-26-at-18.03.14.png

上圖在設定虛擬機的硬體大小,這裡也不重要,保持預設就可以了,因為等下要刪掉

/media/2019/12/CleanShot-2019-11-26-at-18.03.28.png

上圖 CPU 請根據自己硬體條件來設定,看是要配給他幾核(Cores)

/media/2019/12/CleanShot-2019-11-26-at-18.03.49.png

上圖記憶體請隨意,ROS 日常使用大約只有消耗 74MB 左右而已,所以設定 128MB 或者 256MB 都很充裕

/media/2019/12/CleanShot-2019-11-26-at-18.04.00.png

上圖網路卡直接保持預設即可,後續可以在後台新增網卡

/media/2019/12/CleanShot-2019-11-26-at-18.04.19.png

如上圖,最後重新看一次剛剛設定所有內容,沒問題之後按下右下角的 Finish 按鈕即可

接下來我們要刪掉剛剛新建虛擬機裡面配的硬碟,並把 ROS CHR 映像檔加載上去

/media/2019/12/CleanShot-2019-11-27-at-18.12.01.png

找到新建的虛擬機裡面,點左邊「Hardware」,然後選擇 Hard Disk,先把它拆離(Detach)

/media/2019/12/CleanShot-2019-11-27-at-18.13.34.png

拆離以後,繼續點一下「Unused Disk」,然後直接 Remove 這個硬碟

接著我們去 ROS 官網複製一下目前最新穩定版的下載連結: https://mikrotik.com/download

/media/2019/12/CleanShot-2019-12-02-at-08.46.20.png

如上圖,我們要下載 Raw disk image 這個檔案,然後看你要下載穩定版還是測試版都可以

複製好之後,打開 PVE 的 Shell 進入終端機,準備下載以及掛載 ROS 映像檔到虛擬機裡面

1
2
3
4
5
6
7
8
# 下載剛剛複製的 ROS 映像檔
$ wget https://download2.mikrotik.com/routeros/6.45.7/chr-6.45.7.img.zip
# 解壓縮之後會獲得 chr-6.45.7.img
$ unzip chr-6.45.7.img.zip
# 幫映像檔加一點空間,此處看你要加多少,通常 1GB 左右足夠使用,硬碟大你加 10GB 也可以
$ qemu-img resize chr-6.45.7.img +1G
# 掛載到虛擬機 VM ID 103 裡面(如果你不是 103 的話,請自己修改為自己的實際編號)
$ qm importdisk 103 chr-6.45.7.img local-lvm

輸入完以上指令後,最後應該就會看見 Successfully 的字樣,表示已經正常掛載進去指定的虛擬機 回到網頁上面虛擬機的 Hardware,就會發現多了一個 unused 的硬碟已經掛載上去了

/media/2019/12/CleanShot-2019-12-02-at-08.58.45.png

找到之後,滑鼠左鍵直接點兩下

/media/2019/12/CleanShot-2019-12-02-at-08.59.42.png

接著直接點「Add」新增進去即可

掛載 ROS CHR 映像檔以後,我們還要再添加一個網卡進去虛擬機裡面

/media/2019/12/CleanShot-2019-12-02-at-09.01.09.png

在同樣的「Hardware」頁面「Add」、「Network Device」

/media/2019/12/CleanShot-2019-12-02-at-09.03.37.png

加入第二張網路卡

/media/2019/12/CleanShot-2019-12-02-at-09.06.44.png

加完網路卡以後,最後應該會是上圖這樣,有兩張網路卡,一個硬碟

沒問題之後就直接點右上角的 Start 即可啓動虛擬機囉!

最後你只要打開 Winbox 即可看見區域網內的 RouterOS 虛擬機了

此時雖然 ROS 還沒有配 IP,但是 Winbox 可以直接掃描區域網內的 ROS Mac 地址直接進入管理設定

Winbox 官網有 Windows 版的: https://mikrotik.com/download

macOS 的有第三方的: https://github.com/nrlquaker/winbox-mac

至於 ROS 怎麼設定,我這裡就不多說了,網路上相關的介紹教學實在太多了,不管是中文或者英文~