差異處
這裏顯示兩個版本的差異處。
兩邊的前次修訂版 前次修改 下次修改 | 前次修改 | ||
tech:wireguard [2023/10/28 12:10] – [刪除特定 Client 的憑證] 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 | ||
行 61: | 行 136: | ||
</ | </ | ||
- | ===== 建立指定 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 | ||
行 86: | 行 161: | ||
</ | </ | ||
- | ===== 刪除特定 Client 的憑證 | + | ==== 刪除特定 Client 的憑證 ==== |
* Exp. 將原本 environment 的 PEERS= 將特定 Client 的 id 刪除, Exp. 刪除 lin2 : PEERS=jonathan, | * Exp. 將原本 environment 的 PEERS= 將特定 Client 的 id 刪除, Exp. 刪除 lin2 : PEERS=jonathan, | ||
vi docker-compose.yml | vi docker-compose.yml | ||
行 102: | 行 177: | ||
</ | </ | ||
- | ===== 顯示目前 Client 憑證與連線狀態 | + | ==== 顯示目前 Client 憑證與連線狀態 ==== |
* 主要是使用 wg 這命令來查詢 Exp. <cli> | * 主要是使用 wg 這命令來查詢 Exp. <cli> | ||
wgvpn:~# docker exec -it wireguard wg | wgvpn:~# docker exec -it wireguard wg | ||
行 137: | 行 212: | ||
allowed ips: 10.13.13.6/ | 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> | ||