安全

在 Docker 上用 WireGuard 搭建自己的 VPN

在 Docker 容器中运行 WireGuard,搭建属于自己的私有 VPN 服务器:安装 Docker 与 docker-compose、编写 docker-compose 文件、启动服务并向客户端分发配置文件。

· 2 分钟阅读 · 难度 中级 · 基于 docker-compose 1.29.1

我们一起来看看,如何用运行在 Docker 容器中的 WireGuard 轻松搭建属于自己的私有 VPN 服务器。我会一步步带您完成安装、配置,以及向您的 VPN 服务器添加客户端。

Illustration 1 — Créez votre propre VPN avec WireGuard sur Docker

在创建和启动容器之前,我们需要先安装 Docker 和 Docker-compose。如果您的服务器上已经安装了 docker 和 docker-compose,可以跳过这些步骤。

安装 Docker

curl -fsSL https://get.docker.com/ | sh

把一个用户加入 docker 组,以便执行 docker 命令

sudo usermod -aG docker username

安装 docker-compose

sudo curl -L https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

为 docker-compose 添加执行权限

sudo chmod +x /usr/local/bin/docker-compose
Illustration 2 — Créez votre propre VPN avec WireGuard sur Docker

创建 docker-compose 文件

接下来,我们需要创建一个 docker-compose 文件,以便方便地管理我们的 WireGuard 容器。为此,我使用来自 https://linuxserver.io 网站的 docker 镜像和模板。linuxserver.io 的团队十分投入,为 docker 社区维护着大量镜像。

首先,我们在 /opt 目录下新建一个名为 /opt/wireguard-server 的文件夹,并在该目录中创建一个新的 docker-compose.yaml 文件。您还需要把这个文件夹的所有权改为您的 Linux 用户。

sudo mkdir /opt/wireguard-server
nano /opt/wireguard-server/docker-compose.yaml

在这个文件中,我们将使用下面的模板,请参阅 linuxserver/wireguard 的文档:https://hub.docker.com/r/linuxserver/wireguard

version: "2.1"
services:
  wireguard:
    image: linuxserver/wireguard
    container_name: wireguard
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
      - SERVEURURL=wireguard.domain.com #optional
      - SERVERPORT=51820 #optional
      - PEERS=1 #optional
      - PEERDNS=auto #optional
      - INTERNAL_SUBNET=10.10.10.0 #optional
    volumes:
      - /opt/wireguard-server/config:/config
      - /lib/modules:/lib/modules
    ports:
      - 51820:51820/udp
    sysctls:
      - net.ipv4.conf.all.src_valid_mark=1
    restart: unless-stopped

请把 SERVEURURL 替换为您 WireGuard 服务器的域名或公网 IP 地址,因为您的客户端需要从本地网络之外连接进来。您也可以把它设置为 auto,docker 容器会自动确定您的公网 IP 地址,并在客户端配置中使用它。

启动您的 WireGuard 服务器

现在您可以用下面的命令启动 WireGuard 容器,客户端应该就能连接了。

cd /opt/wireguard-server
docker-compose up -d

向客户端分发配置文件

对于客户端计算机来说,最方便的做法是直接在系统上安装 WireGuard 应用程序。如果您想了解具体做法,也可以参阅我们的相关文章。

从 WireGuard 客户端连接时所需的 .cnf 文件,可以在 /opt/wireguard-server/config 文件夹中找到。每个 peer.cnf 都按其编号保存在名为 peer1、peer2、peer3 等的文件夹中……

cd /opt/wireguard-server/config/peer1

添加更多客户端

如果您想添加更多客户端,只需在 docker-compose.yaml 文件中调大 PEERS 参数即可。修改该值之后,您需要使用 –force-recreate 参数重启您的 Docker 容器。

docker-compose up -d --force-recreate

希望这篇文章对您有所帮助!我们在 Awoui 再会!