1 Linux docker wireguard 服务端
1.1 Docker 容器配置
docker run -d \
--name=wireguard \
--cap-add=NET_ADMIN \
--cap-add=SYS_MODULE \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Asia/Shanghai \
-e SERVERPORT=51820 `#optional` \
-e SERVERURL=服务端的域名或IP `#optional` \
-e INTERNAL_SUBNET=10.13.13.0 `#optional` \
-e PEERS=1 `#optional` \
-e PEERDNS=auto `#optional` \
-e ALLOWEDIPS=0.0.0.0/0 `#optional` \
-e LOG_CONFS=true `#optional` \
-p 51820:51820/udp \
-v /root/docker/container/wireguard/config:/config \
-v /lib/modules:/lib/modules \
--sysctl="net.ipv4.conf.all.src_valid_mark=1" \
--restart always \
linuxserver/wireguard
#说明:
`#optional` //参数可选
-e SERVERPORT=51820 // 服务器端口
-e INTERNAL_SUBNET=10.13.13.0 //子网掩码
-v /lib/modules:/lib/modules //指定模块地址安装地址系统自带则不会安装
-e ALLOWEDIPS=0.0.0.0/0 //允许的IPs
-v /root/docker/container/wireguard/config:/config //配置地址
1.2 获取服务端公钥
// 公钥配置文件 /root/docker/container/wireguard/config/server/publickey-server
// 如:AAAAAAAAAAAAAAA=
cat /root/docker/container/wireguard/config/server/publickey-server
2 Linux wireguard 客户端
2.1 安装wireguard
apt update
apt install wireguard
2.2 生成私钥/公钥
// 没有/etc/wireguard就创建
cd /etc/wireguard
wg genkey | tee privateKey | wg pubkey > publicKey
2.3 获取客户端私钥
// 配置文件/etc/wireguard/privateKey
// 如:BBBBBBBBBBBBBBB=
cat /etc/wireguard/privateKey
2.4 获取客户端公钥
// 配置文件/etc/wireguard/publicKey
// 如:CCCCCCCCCCCCCCC=
cat /etc/wireguard/publicKey
2.5 创建配置文件并写入 wg0.conf
cat << EOF > /etc/wireguard/wg0.conf
[Interface]
# 客户端分配的IP
Address = 10.13.13.3/32
# 客户端的私钥 BBBBBBBBBBBBBBB= ,见2.3
PrivateKey = 客户端的私钥
# 监听端口
ListenPort = 51820
# 配置DNS
DNS = 10.13.13.1
[Peer]
# 服务端的公钥 AAAAAAAAAAAAAAA= ,见1.2
PublicKey = 填入服务端的公钥
# 对端(即为服务端域名或IP)
Endpoint = 服务端域名或IP:51820
# 允许的IP地址
AllowedIPs = 0.0.0.0/0
EOF
2.6 启动
// 启动 wg0 即 wg0.conf 文件
wg-quick up wg0
// 其它命令如下:
// 停止
wg-quick down wg0
// 查看状态
wg
// 设置开机启动
systemctl enable wg-quick@wg0
// 取消开机启动
systemctl disable wg-quick@wg0
2.7 防火墙-如果需要(debian)
sudo ufw allow ssh
sudo ufw allow 51820/udp
3 再次配置服务端
3.1 配置客户端公钥
服务端下找到文件 /root/docker/container/wireguard/config/wg0.conf,添加如下
[Peer]
# 客户端配置
# 客户端公钥CCCCCCCCCCCCCCCC=
PublicKey = 填入客户端公钥,见2.4
# 客户端分配的IP,与2.4保持一直
AllowedIPs = 10.13.13.3/32
3.2 重新启动服务端
//方法1.docker 容器中
wg-quick down wg0
wg-quick up wg0
//方法2.重启容器
docker restart wireguard
4 结语
个人简单理解:
服务器好比路由器,客户端就是手机/电脑(linux/mac/win ...), 各个客户端之间通过服务器的转发相互通信.