the VPN solution
因為想要連線到 NAT 內的 server,除了 reversed proxy 之外還想設定 VPN 當作是大內網環境。 連線的順序預期 1) 連線到對外的 server X、2) 只能存取對內的 server Y 內網環境、3) 存取 server X 內部服務只能透過 VPN 環境
WireGuard Server
接下來指令快速建立一個 VPN server:使用的目錄結構是建立一個 wg0 的 VPN 環境、wg0/artifact 內存放個別的 privatekey
與 publickey,其中建立 key 的方式為 wg genkey | tee privatekey | wg pubkey > publickey
。
.
├── wg0
│ ├── artifact
│ │ ├── peer01
│ │ │ ├── privatekey
│ │ │ └── publickey
│ │ └── server
│ │ ├── privatekey
│ │ ├── psk
│ │ └── publickey
│ └── peer01.conf
└── wg0.conf
期中 wg0.conf 是主要的設定檔,用來描述 server 端的設定跟個別 client (peer) 的資訊
[Interface]
Address = 10.0.0.0/16
ListenPort = PORT
PrivateKey = SERVER_PRIVATE_KEY
# client A
[Peer]
PublicKey = CLIENT_PUBLIC_KEY
PresharedKey = PRE_SHARE_KEY
AllowedIPs = 10.0.1.1/32
而 client 端也是跟 server 類似的設定檔,只是設定的內容相反。之後可以用指令產生相對應的 qrcode
qrencode -t ansiutf8 < peer01.conf
。
[Interface]
Address = 10.0.1.1/32
PrivateKey = CLIENT_PRIVATE_KEY
DNS = 8.8.8.8
[Peer]
PublicKey = SERVER_PUBLIC_KEY
PresharedKey = PRE_SHARE_KEY
Endpoint = SERVER:PORT
AllowedIPs = 0.0.0.0/0
之後可以用 systemctl start wg-quick@wg0.service
啟用 VPN。唯一需要注意的部分是:當新增、移除 peer
的時候需要在 server 端重新啟動。