繼上一篇 [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伺服器的內部 IPListen 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 設定檔,可以參酌修改。
需要填入:
- 用戶01私鑰 Client01 PrivateKey,帶入剛剛產生的私鑰
- 伺服器公鑰 Server PublicKey,這個從 QNAP 介面得到
- 配發用戶01的 IP (假設為:198.18.7.2/32,這邊要與 QNAP 介面一致)
- 伺服器位址 (假設為:vpn.example.com:51820,也就是你的 QNAP NAS 位址,是公開 IP 或者公開 DNS,這個等等補充)
- 共享密鑰 (如果有的話,本範例沒有)
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,你的手機就能掃了。

參考資料
- https://www.qnap.com/zh-tw/how-to/tutorial/article/%E5%A6%82%E4%BD%95%E9%80%8F%E9%81%8E-qvpn-service-3-%E7%B7%A8%E8%BC%AF-wireguard-vpn-%E4%BC%BA%E6%9C%8D%E5%99%A8%E5%92%8C%E7%94%A8%E6%88%B6%E7%AB%AF%E8%A8%AD%E5%AE%9A
- https://www.qnap.com/en/app_releasenotes/list.php?app_choose=QVPN
- https://www.qnap.com/en/how-to/tutorial/article/how-to-configure-wireguard-vpn-server-and-client-settings-in-qvpn-service-3
