由於家庭和公司各存在一套開發環境,同時外出時需要能夠連線至某臺伺服器上進行工作,所以需要一個組網的方案,考慮到安全性及效能選擇了 WireGuard。
說明
家庭網路
家庭網路中有一個 PVE 伺服器,開啟了兩個虛擬機器分別是 windows 10 和 Ubuntu 22.04;Widows 10 透過將顯示卡直通進去,用於遊戲娛樂;Ubuntu 22.04 作為開發機。由於手頭的 mac 裝置記憶體不夠,所以所有環境都是透過 VS Code Remote SSH 到 開發機上進行工作。
公司網路
公司網路透過一個獨立路由器建立出來一個子網,實體機安裝了 Ubuntu 22.04 作為開發機,同樣透過 VS Code Remote SSH 到開發機上進行工作。
網路拓撲
搭建 WireGuard
為了方便管理,使用了 wg-easy
這個工具,具體的安裝和使用可以參考 wg-easy
CIDR 選擇了 192.168.3.0/24
compose.yaml
version: "3.8"
services:
wg-easy:
environment:
- WG_HOST=x.x.x.x
- PASSWORD=xxxx
- WG_PERSISTENT_KEEPALIVE=15
- WG_MTU=1420
- WG_DEFAULT_ADDRESS=192.168.3.x
- WG_ALLOWED_IPS=192.168.3.0/24
image: myHarbor/sonui/wg-easy
container_name: wg-easy
hostname: wg-easy
volumes:
- ./data:/etc/wireguard
ports:
- "51820:51820/udp"
- "127.0.0.1:51821:51821"
restart: unless-stopped
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1
- 注:如果選擇 Podman 作為容器執行時會出現無法連通的問題,猜測需要配置網路
測試
對各裝置分配固定 IP 及配置啟動後控制皮膚如下
在 MacBook 上配置好 SSH config
ssh dev
連線到家庭網路的開發機,檢視 session 資訊
連線成功,可以看到 IP 地址是 192.168.3.7
,說明
wg 組網成功