昨天我們總算把所有網路問題都搞定啦!從今天開始我們的 VM 就不會摸回到我的其他實體設備了!(這邊可以考考大家為什麼 50
網段可以摸到 52
但 52
摸不回去)。那我們就剩下最後一個終極任務了!也就是準備專屬於 VM 的 VPN!
身為一個悶騷人士,當我今天準備好我的 PVE 小 Server 的時候,就是要跟我的好友分享了對吧!狠狠的給他炫耀一波!友人 A:「啊你有 Linux 的環境可以開?這不是 VM 就可以做到了嗎?」友人 B:「PVE 歐?還要連回宿舍感覺好麻煩,你也不能借有我什麼用?」...,說好的稱讚呢?心中信仰逐漸崩塌的我開始思考為何我無法取得其他人的認同,用 Mac 錯了嗎?我就沒有 x86 的 VM 可以開啊...。逐漸扭曲和崩塌的我正在思考著為何我花了那麼多心力架設 PVE 時...。「你的 PVE 可以借我來寫實驗室專案嗎?Windows 的 Docker 好像會有特殊的問題,但我的電腦沒空間開 VM 了...」,萬念俱灰的我在聽到這句話的那一刻,不假思索地就回了「當然沒問題!」嗎?我究竟要怎麼讓我的 VM 被連線呢?
跟 ASUS Router 一樣,今天當我們要訪問我們的子網域時,相比直接把環境暴露到外網這個做法,使用 VPN 是一個很好的選擇。RouterOS 也跟 ASUS 一樣,提供了以 RouterOS 為基底的 VPN 服務,但他不是前幾天提到的 OpenVPN,而是 WireGuard VPN。
WireGuard VPN 跟 OpenVPN 一樣,是一種 VPN 程式與協定,其不只開源,更標榜著輕量、快速、安全,在後續新的 ASUS Router 設備也慢慢支援此應用。那 WireGuard VPN 有許多屬於它的特色,但我們這邊就先跳過不過多贅述。
今天我們的目標很簡單,就是成功為我們的 RouterOS 開啟 WireGuard VPN Server 並使用我們的電腦在外網連接到 192.168.52
網段。讓我們開始看看怎麼設定吧!
整體邏輯跟前設定 ASUS Router 的 Open VPN 近似,一樣先找到 WireGuard VPN 的位置,點開之後會看到 WireGuard 的兩個主要設定選項,分別是接口 Interface 的設定跟連線設備 Peer 的設定。
在第一個頁面的設定選項中,主要是在設定 VPN Interface 的基本資訊跟設定,我們點擊 Add New 後可以看到所要設定的資訊不多,主要有
13231
,可以依照需求調整,這邊維持 Default 即可。所有設定完之後如下圖,我們就建立好屬於我們的 VPN 基本連線資訊了。
再討論 Peer Setting 之前我們來聊一下一個關於 VPN Server 的概念,還記得前幾天我們有討論過 VPN 的概念其實就是將我的數據從我使用的設備傳送到 VPN Server 之後,在用 VPN Server 向外傳送或者就不像外傳送了對吧?
那這樣的概念其實也代表了一個意思,也就是為了讓我們的設備能藉由這個 Server 像外傳輸,我們其實也等於在這個環境中擔任一個設備的角色,因此想當然我們也會在這個環境中有一個屬於我們的 IP 位置。
為什麼會需要特別提到這個,讓我們看看在 Peers 中的設定,當按下 Add New 之後可以看到裡面有幾個基本設定
因此如下圖所示,我們示範的設定如下,可以看到我們 Interface 就是選擇之前設定的,而 Allowed Address 則是給 10.0.0.2/32
也就是 10.0.0.2
這個 IP,其他都不允許使用這個 Peer,那 Public Key 要怎麼給?讓我們直接看 WireGuard Client。
當我們在 VPN Client 端點選 Add Empty Tunnel 的時候,會發現他預設會幫你準備一個 PrivateKey 跟生成這個 Public Key,上面的 Public Key 就是我們要貼到 Peer 那個 Public Key 欄位的,所以讓我們貼回去。
那在 VPN Peer 建立完之後,我們快速確認 VPN Client 要怎麼設定,我們可以看到基本上都已將幫我們帶入 Key 了,我們剩下的還需要如以下,
13231
就照舊啦。AllowedIPs 是一個很迷人的參數,這邊說明有哪些流量會流向 VPN Server,這邊也就跟剛剛上面 VPN Server 的慨念一樣,因此當我們設定 0.0.0.0/0
時就代表所有網路流量都會走 VPN 通道像 VPN Server 過去,但如果假如我們今天只要 Subnet 的流量過去可以怎麼設定?AllowedIPs = 10.0.0.0/24, 192.168.52.0/24
其實就可以了!這代表我們 VPN 連線的相關流量跟 52 子網段的流量會通往 VPN,但剩下的流量都不會。最後一個 PersistentKeepalive 則是多久進行連線狀況檢查。[Interface]
PrivateKey = CLIENT_PRIVATE_KEY_HERE
Address = 10.0.0.2/32
DNS = 192.168.52.254
MTU = 1420
[Peer]
PublicKey = SERVER_PUBLIC_KEY_HERE
Endpoint = SERVER_IP_OR_DOMAIN:13231
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
所以今天連線可以怎麼設定,就是如下設定啦!
[Interface]
PrivateKey = CLIENT_PRIVATE_KEY_HERE
Address = 10.0.0.2/32
DNS = 192.168.52.254
MTU = 1420
[Peer]
PublicKey = CwEnQYfAJztTKl9jwjWszt05YjJNb0CgDdDTDXTbb14=
Endpoint = 140.114.234.160:13231
AllowedIPs = 10.0.0.0/24, 192.168.52.0/24
PersistentKeepalive = 25
恭喜我們相關設定都設定完啦!可以連...等等,還差點什麼?我們似乎還沒有把 WireGuard VPN 的 IP 們放置到內網中,因此我們回到 IP 的部分把 Interface 相關的設定補齊!
我們似乎也還沒告訴網路流量可以怎麼進入 VPN!回到 ASUS Router 我們來把 VPN 連線的最後一部開通!
成功啦!