[教學] 在 QNAP NAS 機器上設定 WireGuard VPN

繼上一篇 [Linux 架站] Wireguard VPN 設定教學 手工建置的方式,有嘗試在 QNAP NAS 上面建立 WireGuard VPN。

但發現雖然 QNAP 有 Container station (其實裡面也是跑 Docker) 但沒辦法使用該 Docker Image
因為裡面有一個 net.ipv4.conf.all.src_valid_mark=1 選項它核心沒辦法支援。

不過呢,在 QVPN Service 3 直接原生支援 WireGuard 哦!
(QVPN Service 3 在 x86 機種上 QTS 5.0.0 以後版本支援)

這裡有繁體中文的官方教學文件,看起來圖文並茂,但還是有一些遺漏的地方,
您還是要需要知道純手工 Wireguard 怎麼設定才行。

以下是一些操作步驟,可以跟著一步一步操作就可以建立了!

安裝步驟

簡單介紹一下設定步驟:

啟用 WireGuard VPN 伺服器

  • 開啟 QVPN Service。
  • 前往[VPN 伺服器]>[WireGuard]。
  • 按一下[啟用 WireGuard VPN 伺服器]。

填寫

  • ServerName 伺服器名稱
  • PrivateKey 按一下 [Generate Keypairs] 按鈕 產生伺服器金鑰一對
  • PublicKey 會自動產生出可供複製
  • IP address 伺服器的內部 IP
  • Listen port 聆聽的連接埠 (假設為: 51820 ,可依需求修改)
  • Network interface 接收的介面,預設 All 就可以
  • DNS Server 使用的 DNS 伺服器
  • Peer Table 用戶端列表

按下 Add Peer 按鈕

  • Peer name 用戶端名稱,名字可自己取
  • Public key 用戶端的公鑰,需自行產生,這留到後面再說
  • Preshared key 共用加密金鑰,目前沒有設定,留空即可
  • Endpoint 伺服器位置,伺服器的連接方式
  • Allowed IPs 允許的 IP 網段
  • Persistent keepalive 維持連線時間,保留預設值 10 秒 即可

快速整理一下,跟純手工建置的差異:

  • 不用自行產生伺服器金鑰了,按一下 [Generate Keypairs] 就可以產生
  • 不用自行整理用戶端列表,IP 也自動隨著流水號增加

其他還是要自己手工做的部分:

  • 需要 自行撰寫 用戶端的設定文件
  • 自行產生 用戶端的金鑰,填回網頁介面
  • 如果有手機用戶的朋友,設定檔需要 自行產生 QRcode

個人覺得這 QNAP 只是做了半套而已,
如果有用過 wg-easy 的話,幾乎都全自動幫您產生好了。

安裝 wireguard-tools 並找到 wg 指令

這個步驟只要在幫大家做設定檔的那台電腦操作就可以了,
不需要每台使用 wireguard 的電腦都裝。

以下步驟要先找到 wg 指令,以 Mac 為例,可以用 brew 來安裝

$ brew install wireguard-tools

如果沒有 wg 指令,又剛好有用 docker 的話,可以用這個 image 來借用一下

$ sudo docker run --rm -it antrea/wireguard-go:0.0.20210424 /bin/bash

在 container 裡面執行就可以了。

產生用戶端金鑰

$ wg genkey | tee client1_privateKey | wg pubkey > client1_publicKey

就會產生二個檔案:

  • client1_privateKey 用戶01私鑰
  • client1_publicKey 用戶01公鑰

公鑰回填到 QNAP 的介面,存好私鑰,等一下來手動撰寫設定文件。

撰寫用戶端設定文件

以下列出 Client 設定檔,可以參酌修改。
需要填入:

  1. 用戶01私鑰 Client01 PrivateKey,帶入剛剛產生的私鑰
  2. 伺服器公鑰 Server PublicKey,這個從 QNAP 介面得到
  3. 配發用戶01的 IP (假設為:198.18.7.2/32,這邊要與 QNAP 介面一致)
  4. 伺服器位址 (假設為:vpn.example.com:51820,也就是你的 QNAP NAS 位址,是公開 IP 或者公開 DNS,這個等等補充)
  5. 共享密鑰 (如果有的話,本範例沒有)
  6. AllowedIPs 這部分為需要 VPN 轉導的區域,要填入一個 CIDR 的網段。
    換言之,需要定義一個區域,如果看到該區域,就走 VPN 連線。範例是給 192.168.1.0/24,意思是電腦若看到該網段則走 VPN,其餘走一般連線。
    如果需要全部都轉導的話填入:0.0.0.0/0
[Interface]
PrivateKey = AOAHHE........(用戶01私鑰 Client01 PrivateKey)........7RDE0=
Address = 198.18.7.2/32
DNS = 1.1.1.1

[Peer]
PublicKey = RNrgG........(伺服器公鑰 Server PublicKey)........EpJ0A=
AllowedIPs = 192.168.1.0/24
Endpoint = vpn.example.com:51820
PersistentKeepalive = 30

產生設定檔 QRcode

其實很簡單,就是把上述的設定檔,直接放入 QRcode 產生器就好了~

https://www.the-qrcode-generator.com/

類型選擇 Free text 你就會得到一個超密的 QRcode,你的手機就能掃了。

參考資料