差異處
這裏顯示兩個版本的差異處。
兩邊的前次修訂版 前次修改 下次修改 | 前次修改 | ||
tech:wireguard [2023/10/28 11:27] – [修改 Listen Port] jonathan | tech:wireguard [2024/04/12 20:53] (目前版本) – [host Alpine 升級到 3.19 之後啟動異常解決方法] jonathan | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== | + | ====== 在 Alpine 內安裝 WireGuard VPN (Docker) ====== |
* 安裝環境 | * 安裝環境 | ||
* VM : 1vCore / 1G RAM / 16G SSD | * VM : 1vCore / 1G RAM / 16G SSD | ||
- | * OS : Alpine 3.18 - alpine-standard-3.18.4-x86_64.iso | + | * OS : Alpine 3.18 - alpine-standard-3.18.4-x86_64.iso |
- | * 預計採用 [[https:// | + | |
* 先參考 [[tech/ | * 先參考 [[tech/ | ||
+ | |||
+ | ===== 採用 weejewel/ | ||
+ | * 採用 [[https:// | ||
+ | * 執行以下語法 <cli> | ||
+ | vi docker-compose.yml | ||
+ | </ | ||
+ | version: " | ||
+ | services: | ||
+ | wg-easy: | ||
+ | environment: | ||
+ | # Required: | ||
+ | # Change this to your host's public address | ||
+ | - WG_HOST=wgvpn.ichiayi.com | ||
+ | |||
+ | # Optional: | ||
+ | - PASSWORD=myPassword | ||
+ | - WG_PORT=51820 | ||
+ | - WG_DEFAULT_ADDRESS=10.13.12.x | ||
+ | - WG_DEFAULT_DNS=192.168.11.6 | ||
+ | # - WG_MTU=1420 | ||
+ | # - WG_ALLOWED_IPS=192.168.15.0/ | ||
+ | # - WG_PRE_UP=echo "Pre Up" > / | ||
+ | # - WG_POST_UP=echo "Post Up" > / | ||
+ | # - WG_PRE_DOWN=echo "Pre Down" > / | ||
+ | # - WG_POST_DOWN=echo "Post Down" > / | ||
+ | |||
+ | image: weejewel/ | ||
+ | container_name: | ||
+ | volumes: | ||
+ | - ./ | ||
+ | ports: | ||
+ | - " | ||
+ | - " | ||
+ | restart: unless-stopped | ||
+ | cap_add: | ||
+ | - NET_ADMIN | ||
+ | - SYS_MODULE | ||
+ | sysctls: | ||
+ | - net.ipv4.ip_forward=1 | ||
+ | - net.ipv4.conf.all.src_valid_mark=1 | ||
+ | </ | ||
+ | * 啟動服務 <cli> | ||
+ | docker compose up -d | ||
+ | </ | ||
+ | * 可以使用瀏覽器 http:// | ||
+ | * 詳細設定參數請參考 - https:// | ||
+ | |||
+ | ==== 修改 Listen Port ==== | ||
+ | * Exp. 將原本 Listen Port udp/51820 改成 udp/123 (預設 ntp port)< | ||
+ | vi docker-compose.yml | ||
+ | </ | ||
+ | : | ||
+ | - WG_PORT=51820 | ||
+ | : | ||
+ | ports: | ||
+ | - " | ||
+ | : | ||
+ | </ | ||
+ | |||
+ | ===== FAQ ===== | ||
+ | - host Alpine 升級到 3.19 之後啟動時 log 出現 <cli> | ||
+ | : | ||
+ | iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; | ||
+ | modprobe: can't change directory to '/ | ||
+ | modprobe: can't change directory to '/ | ||
+ | iptables v1.8.3 (legacy): can't initialize iptables table `nat': Table does not exist (do you need to insmod?) | ||
+ | Perhaps iptables or your kernel needs to be upgraded. | ||
+ | : | ||
+ | </ | ||
+ | * Ans : 需要在 host (Alpine 3.19) 執行以下指令< | ||
+ | modprobe ip_tables | ||
+ | echo ' | ||
+ | </ | ||
+ | * 參考 - https:// | ||
+ | |||
+ | ===== 採用 linuxserver/ | ||
+ | * 採用 [[https:// | ||
* 執行以下語法 <cli> | * 執行以下語法 <cli> | ||
vi docker-compose.yml | vi docker-compose.yml | ||
行 42: | 行 117: | ||
</ | </ | ||
- | ===== 修改 Listen Port ===== | + | ==== 修改 Listen Port ==== |
* Exp. 將原本 Listen Port udp/51820 改成 udp/123 (預設 ntp port)< | * Exp. 將原本 Listen Port udp/51820 改成 udp/123 (預設 ntp port)< | ||
vi docker-compose.yml | vi docker-compose.yml | ||
行 53: | 行 128: | ||
* 另外對於產生 peer 設定檔範本也需要修改 <cli> | * 另外對於產生 peer 設定檔範本也需要修改 <cli> | ||
vi data/ | vi data/ | ||
- | </ | + | </ |
: | : | ||
[Peer] | [Peer] | ||
: | : | ||
- | Endpoint = wgvpn.ichiayi.com:123 | + | Endpoint = ${SERVERURL}:123 |
: | : | ||
</ | </ | ||
- | ===== 建立指定 Client 的憑證 | + | ==== 建立指定 Client 的憑證 ==== |
* Exp. 將原本 environment 的 PEERS=1 改成要建立 Client 的 id 清單, Exp. jonathan, | * Exp. 將原本 environment 的 PEERS=1 改成要建立 Client 的 id 清單, Exp. jonathan, | ||
vi docker-compose.yml | vi docker-compose.yml | ||
行 78: | 行 153: | ||
coredns | coredns | ||
</ | </ | ||
- | * 提供給 Client | + | * 提供給 Client |
+ | - 連線檔案方式 < | ||
+ | wgvpn:~# cat ./ | ||
+ | </ | ||
+ | - QRCode 的方式<cli> | ||
wgvpn:~# docker exec -it wireguard / | wgvpn:~# docker exec -it wireguard / | ||
</ | </ | ||
+ | ==== 刪除特定 Client 的憑證 ==== | ||
+ | * Exp. 將原本 environment 的 PEERS= 將特定 Client 的 id 刪除, Exp. 刪除 lin2 : PEERS=jonathan, | ||
+ | vi docker-compose.yml | ||
+ | </ | ||
+ | : | ||
+ | environment: | ||
+ | : | ||
+ | - PEERS=jonathan, | ||
+ | : | ||
+ | </ | ||
+ | * 重新啟動 docker compose 之後, lin2 就無法使用 | ||
+ | * 如果誤刪除直接加回 lin2 重啟 docker compose 之後, lin2 就可以恢復使用, | ||
+ | * 如果確定要將 lin2 憑證移除, | ||
+ | rm -rf ./ | ||
+ | </ | ||
+ | |||
+ | ==== 顯示目前 Client 憑證與連線狀態 ==== | ||
+ | * 主要是使用 wg 這命令來查詢 Exp. <cli> | ||
+ | wgvpn:~# docker exec -it wireguard wg | ||
+ | interface: wg0 | ||
+ | public key: h6hkpJqDrUhS5Zw4tLGnzd/ | ||
+ | private key: (hidden) | ||
+ | listening port: 51820 | ||
+ | |||
+ | peer: 2e2goKlqaJ05iCLA5MR3WyD/ | ||
+ | preshared key: (hidden) | ||
+ | endpoint: 39.9.230.151: | ||
+ | allowed ips: 10.13.13.7/ | ||
+ | latest handshake: 4 minutes, 41 seconds ago | ||
+ | transfer: 1.68 MiB received, 8.01 MiB sent | ||
+ | |||
+ | peer: H1n/ | ||
+ | preshared key: (hidden) | ||
+ | allowed ips: 10.13.13.3/ | ||
+ | |||
+ | peer: Y+/ | ||
+ | preshared key: (hidden) | ||
+ | allowed ips: 10.13.13.2/ | ||
+ | |||
+ | peer: SNh3eIl8s76oIicaTDnW0C8McuRqL+jS8kxAo0NgYRs= | ||
+ | preshared key: (hidden) | ||
+ | allowed ips: 10.13.13.5/ | ||
+ | |||
+ | peer: rOiBsv7yGMm5UtC+zLLj0a2fyWYTssaYMygSgKFmTzQ= | ||
+ | preshared key: (hidden) | ||
+ | allowed ips: 10.13.13.4/ | ||
+ | |||
+ | peer: GLr/ | ||
+ | preshared key: (hidden) | ||
+ | allowed ips: 10.13.13.6/ | ||
+ | </ | ||
+ | |||
+ | <note important> | ||
+ | * 目前由修改 docker-compose.yml 用重啟 docker compose 命令的維運方式要注意: | ||
+ | - 新增刪除 Client 修改 docker-compose.yml 都需要重啟 docker compose 才能生效 | ||
+ | - 重啟過程的這幾秒鐘 WireGuard 會斷線無法提供服務 | ||
+ | </ | ||
+ | |||
+ | ==== 後續須持續了解項目 ==== | ||
+ | * WireGuard Web UI 方案 - https:// | ||
+ | * Client 端設為 [[https:// | ||
===== 參考網址 ===== | ===== 參考網址 ===== | ||
* https:// | * https:// | ||
+ | * https:// | ||
{{tag> | {{tag> | ||