之前都使用 Synology 內建的 OpenVPN Server,手邊有個空的 raspberry pi 想說多用一個 VPN Server 順便玩玩 WireGuard,試用了一下不管速度、設定、串內網 DNS Server 都沒問題,應該之後會當作主要的連線方式

Raspberry Pi Setting

用官方的工具刷個 lite x64,加個 ssh 檔案方便直接啟動 SSH Server

scoop install raspberry-pi-imager

一波更新

sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get autoremove
sudo apt-get autoclean

raspi-config 更新一下 hostname, password + expand filesystem + time zone

sudo raspi-config

更新 firmware

sudo rpi-update

Install PiVPN

安裝 pivpn,這邊選 WireGuard 當作 VPN Server,就填一填這邊 DNS 可以設定自訂的 IP,我有用 AdGuard Home 做內網服務的 DNS rewrites,所以就填 AdGuard 的 IP

curl -L https://install.pivpn.io | bash

這邊可以看一下服務跟自己設定的 port 有沒有起來

$ sudo wg

interface: wg0
  public key: ***********
  private key: (hidden)
  listening port: 5487

$ sudo netstat -tunlp

udp        0      0 0.0.0.0:5487           0.0.0.0:*                           -
udp6       0      0 :::5487                :::*                                -

增加 user,可以直接用 pivpn -a -n <name>

$ pivpn -a -n test
::: Client Keys generated
::: Client config generated
::: Updated server config
::: WireGuard reloaded
======================================================================
::: Done! test.conf successfully created!
::: test.conf was copied to /home/pi/configs for easy transfer.
::: Please use this profile only on one device and create additional
::: profiles for other devices. You can also use pivpn -qr
::: to generate a QR Code you can scan with the mobile app.
======================================================================

更多 command 與用法可以參考 pivpn 文件 https://docs.pivpn.io/wireguard/,包含移除、停用、列舉使用者,備份還原,還有一些其他的設定,例如你有在上面裝 Pi-hole 的話該怎麼設定

pivpn -qr 可以在 terminal 顯示 QR code 手機掃一下就可以,假如電腦的話可以複製 configs 下的設定檔餵給電腦的 Client 就好了

$ pivpn -qr
::  Client list  ::
1) test
Please enter the Index/Name of the Client to show: 1
::: Showing client test below
=====================================================================

WireGuard client 的話可以參考官網 https://www.wireguard.com/install/ 下載對應的

假如有 port forwarding 要開一下 UDP,設定一下

都設定好應該可以看到連上來的裝置

 $ pivpn -c
::: Connected Clients List :::
Name      Remote IP                 Virtual IP      Bytes Received      Bytes Sent      Last Seen
zet       114.136.***.**:35713      10.6.0.2        5.4MiB              36MiB           Apr 03 2022 - 17:57:05

Misc

一些有可能需要修改的檔案

  • /etc/wireguard/wg0.conf 存一些 PrivateKey還有 ListenPort 的設定假如未來有需要換 port 或是多加其他的設定可以再修改
  • /etc/pivpn/wireguard/setupVars.conf 裡面放一些 port, dns, host addr 一些的設定主要就是產生 config 跟 QR 的時候會再多用到的一些東西