Docker 安装 WireGuard 服务端

虽然手动操作略显复杂,但有助于掌握整体配置流程

使用场景推荐:

推荐使用 Docker 安装 WireGuard

  • 如果你希望在多个服务之间进行隔离,或快速部署和管理多个 虚拟局域网 实例,Docker 是一个不错的选择。
  • 适合于实验、开发或轻量级生产环境中使用 Docker 来简化 WireGuard 的管理。

不推荐使用 Docker 安装 WireGuard

  • 如果你对性能有较高的要求,或需要非常灵活的网络控制(例如复杂的路由或 NAT 配置),建议直接在主机上安装 WireGuard,而非通过 Docker。
  • 对于新手或不熟悉 Docker 网络配置的人,直接在主机上安装 WireGuard 可能更简单。

Docker 安装 WireGuard

获取 Docker 镜像
使用官方的 WireGuard Docker 镜像或社区提供的镜像:

docker pull linuxserver/wireguard

运行容器
配置好 虚拟局域网 网络(如端口、IP 地址等)并启动容器:

docker run -d \
  --name=wireguard \
  --restart unless-stopped \
  --cap-add=NET_ADMIN \
  --cap-add=SYS_MODULE \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Asia/Shanghai \
  -e SERVERURL=<你的公网IP或域名> \
  -e SERVERPORT=51820 \
  -e PEERS=20 \
  -e PEERDNS=8.8.8.8 \
  -e INTERNAL_SUBNET=10.2.0.0/24 \
  -e ALLOWEDIPS=10.2.0.0/24 \
  -p 51820:51820/udp \
  -v /opt/wireguard/config:/config \
  --sysctl="net.ipv4.ip_forward=1" \
  linuxserver/wireguard

注意

生成的客户端配置

[Interface]
Address = 10.2.0.2
PrivateKey = QLnbLECZM8vjxLkw3wsA2LNWBDEF9WS9Up7e7XnC+3w=
ListenPort = 51820
DNS = 8.8.8.8

[Peer]
PublicKey = iTzdJg0jGwne2zzba1NAFXrUbfLBLb4Y677XTgiRElg=
PresharedKey = eYnbtDFD9Gb4m7vhOyDujlFj/KXyK+ag3CgNFvHMO2k=
Endpoint = <你的公网IP或域名>:51820
AllowedIPs = 10.2.0.0/24

生成配置中可能缺少 /32,需要加上

生成的配置缺少 心跳保活机制的时间,需要加上

[Interface]
Address = 10.2.0.2/32    # 这里加上/32
PrivateKey = QLnbLECZM8vjxLkw3wsA2LNWBDEF9WS9Up7e7XnC+3w=
ListenPort = 51820
DNS = 8.8.8.8

[Peer]
PublicKey = iTzdJg0jGwne2zzba1NAFXrUbfLBLb4Y677XTgiRElg=
PresharedKey = eYnbtDFD9Gb4m7vhOyDujlFj/KXyK+ag3CgNFvHMO2k=
Endpoint = <你的公网IP或域名>:51820
AllowedIPs = 10.2.0.0/24
PersistentKeepalive = 25  # 心跳保活机制的时间

如果想自定义生成的静态地址,需要手动进入容器修改 vi /etc/wireguard/wg0.conf

docker exec -it wireguard /bin/bash
vi /etc/wireguard/wg0.conf
exit
docker restart wireguard
docker rm -f wireguard
[Interface]
Address = 10.2.0.1
ListenPort = 51820
PrivateKey = gL/euimFOm25l+B33prZlWDkqIggweKrS2FJY4z+UFs=
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth+ -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth+ -j MASQUERADE

[Peer]
# peer1
PublicKey = gG3XUavlH8jATzsHuwMxEMPNazOlCKp5FjfAt4GcWxY=
PresharedKey = eYnbtDFD9Gb4m7vhOyDujlFj/KXyK+ag3CgNFvHMO2k=
AllowedIPs = 10.2.0.2/32

[Peer]
# peer2
PublicKey = hTL5qcOQK9AP9eK+wLlDix2oQOCFiWjpc7mipyKdj1Q=
PresharedKey = 7XD4pE9SecOS5nfDQB0tlEdKogksOPCIUBVQfRndv0c=
AllowedIPs = 10.2.0.3/32

[Peer]
# peer3
PublicKey = TB4YtHLemTPzoK2dALdKmGg4hIl/76RBOU4BDXRinTc=
PresharedKey = R3kOr2ahJPCxeqwYhVP3CtHRkTIgo5TcfnvirUzS3w8=
AllowedIPs = 10.2.0.4/32

增加对等点

可以通过 Docker 重新启动容器时指定新的 PEERS 环境变量值来添加多个对等点。

例如,如果之前是 PEERS=20,想再添加一个对等点,直接将其增加到 PEERS=50

步骤如下:

停止并移除当前容器(这一步不会影响 config 文件中的已有对等点信息):

docker rm -f wireguard

重新启动容器,增加 PEERS 数量(如从 20 增加到 50):

docker run -d \
  --name=wireguard \
  --restart unless-stopped \
  --cap-add=NET_ADMIN \
  --cap-add=SYS_MODULE \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Asia/Shanghai \
  -e SERVERURL=<公网IP> \
  -e SERVERPORT=51820 \
  -e PEERS=50 \   # 更新此值
  -e PEERDNS=8.8.8.8 \
  -e INTERNAL_SUBNET=10.2.0.0/24 \
  -e ALLOWEDIPS=10.2.0.0/24 \
  -p 51820:51820/udp \
  -v /opt/wireguard/config:/config \
  --sysctl="net.ipv4.ip_forward=1" \
  linuxserver/wireguard

增加后的对等点信息文件会自动生成在 /opt/wireguard_wcq/config 目录中,新对等点可以直接使用生成的配置文件加入网络。

posted @ 2026-04-17 10:31  ioufev  阅读(577)  评论(0)    收藏  举报