繼上一篇 [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