基础概念
WireGuard 是一款高性能的VPN协议,通过UDP协议传输,适用于建立安全的内网穿透隧道。如果你想在不同网络,不同设备之间自由访问,并且通过内网保证隐私安全性,WireGuard 是个不错的选择。
服务端配置
对于服务端的要求是一个拥有公网IP的系统,可以开一个便宜的云服务器,然后安装使用 docker-compose 部署服务端。
services:
wireguard:
image: linuxserver/wireguard # 使用 LinuxServer 维护的 WireGuard 镜像
container_name: wg # 指定容器名为 wg
hostname: wireguard # 设置容器主机名
restart: unless-stopped # 异常退出时自动重启
environment:
- TZ=Asia/Shanghai # 时区设置
- SERVERPORT=51820 # 【容器内部】监听的 WireGuard 端口(必须与下方 ports 映射的右侧端口一致)
- ALLOWEDIPS=123.123.9.0/24 # 允许通过 VPN 访问的客户端 IP 段
- PUID=1000 # 文件权限用户 ID
- PGID=1000 # 文件权限组 ID
- SERVERURL=oak.xxywithpq.cn # 服务器公网域名/地址(需解析到公网IP)
- PEERS=10 # 自动生成 10 个客户端配置(peer1~peer10)
- PEERDNS=auto # 客户端自动获取 DNS
- INTERNAL_SUBNET=123.123.9.0 # VPN 内部子网地址
volumes:
- /home/ubuntu/wireguard/config:/config # 配置存储目录(含服务端/客户端配置)
- /home/ubuntu/wireguard/modules:/lib/modules # 内核模块映射(需内核支持)
ports:
- "54444:51820/udp" # 端口映射(宿主端口:容器端口)
cap_add: # 必需权限
- NET_ADMIN # 网络管理权限
- SYS_MODULE # 内核模块加载权限
防火墙设置
主机防火墙开放 54444/UDP
生成的文件结构
/home/ubuntu/wireguard/config/
├── wg0.conf # 服务端主配置文件
├── peer1/ # 客户端1配置目录
│ ├── peer1.conf # 客户端配置文件
│ ├── peer1.png # 二维码连接图
│ └── peer1_private.key # 客户端私钥
└── ... # 其他 peer 目录
客户端配置(以Windows为例)
安装客户端
根据客户端系统下载对应客户端
官网下载:https://www.wireguard.com/install/
配置peer
前面服务端生成了10个peer,任选一个peer,比如 peer2.conf ,导入到客户端中(配置名个人原因改成oak-peer2)。
如果接收和发送都有流量,基本上客户端就已经加入到局域网中,该客户端在局域网中的地址为 123.123.9.3
。
验证连通性
假设另一台 123.123.9.2
已经加入局域网,通过ping
可知,两台客户端已经能够相互访问。