
Руководство по настройке wireguard vpn в docker и настройке ваших клиентов wireguard vpn для безопасного доступа к вашей частной сети.
В этом руководстве я продемонстрирую, как настроить безопасную VPN с помощью Wireguard в Docker с помощью docker-compose, а затем мы будем использовать ПК с Windows для подключения к нашей Wireguard VPN с помощью клиента Wireguard для безопасного доступа к нашей частной сети.
Wireguard в Docker
Конфигурация Wireguard
Следующие конфигурации должны быть изменены в зависимости от ваших настроек:
TZ
— часовой поясSERVERURL
— здесь будет указано, к чему будет подключаться ваш клиентSERVERPORT
— это будет установлено в конфигурации вашего клиента (порт прослушивания жестко запрограммирован на 51820)PEERDNS
— это DNS-сервер, который будет настроен в конфигурации клиента (я использую PiHole для DNS, чтобы блокировать рекламу)PEERS
используется для создания конфигураций для ваших клиентовINTERNAL_SUBNET
— это необязательно, но именно эту подсеть будут использовать подключенные клиенты
Запустите сервер Wireguard
Создадим каталог Wireguard-on-docker и размести там наш файл docker-compose.yml:
mkdir Wireguard-on-docker && cd Wireguard-on-docker
Создадим файл
nano docker-compose.yml
Содержимое нашего docker-compose.yml :
version: '3.7'
services:
wireguard:
image: ghcr.io/linuxserver/wireguard
container_name: wireguard
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Netherlands
- SERVERURL=31.169.124.43
- SERVERPORT=51820
- PEERS=3
- PEERDNS=auto
- INTERNAL_SUBNET=10.64.1.0
- ALLOWEDIPS=0.0.0.0/0
volumes:
- ./config/wireguard:/config
- /lib/modules:/lib/modules
ports:
- 51820:51820/udp
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
restart: unless-stopped
Ctrl + X, после клавиша Y + Enter для выхода из nano.
Запустите wireguard с помощью docker compose:
$ docker-compose up -d
Результат установки должен выглядеть примерно так:
[+] Running 10/10 wireguard Pulled 5.8s 3c94960c6de1 Pull complete 1.3s e1cde46db0e1 Pull complete 1.4s af5d67be34a1 Pull complete 1.4s 0f92422730f8 Pull complete 1.4s d6f8d0f469cc Pull complete 1.5s 6849849dc9ce Pull complete 2.3s 094734419917 Pull complete 2.3s a7c6a8f0297c Pull complete 4.4s f724814663b6 Pull complete 4.5s [+] Running 2/2 Network wireguard-on-docker_default Created 0.2s Container wireguard Started
После запуска wireguard вы сможете просматривать журналы, чтобы увидеть исходные qr-коды для ваших клиентов, но у вас есть доступ к ним в каталоге конфигурации:
$ docker-compose logs -f wireguard
В каталоге конфигурации будут указаны конфигурация и qr-коды, как указано выше:
$ ls ./config/wireguard/peer_ruan
peer_ruan.conf peer_ruan.png privatekey-peer_ruan publickey-peer_ruan
Я использую mobaxterm, кроме терминала он позволяет просматривать и редактировать файлы, так, что можно открыть файл в нем.

Установите клиент Wireguard
Перейдите по ссылке https://www.wireguard.com/install / и установите клиент вашей операционной системы, в этом примере я буду использовать Windows для демонстрации настройки.
У меня уже есть пара настроенных туннелей, но ваш должен выглядеть примерно так:

Чтобы настроить новый туннель, в настройках нового туннеля выберите добавить пустой туннель:

Скопируйте содержимое из вашего каталога конфигурации, для демонстрации я покажу вам, как выглядит одна из моих одноранговых конфигураций:
$ cat ./config/wireguard/peer_ruan/peer_ruan.conf
[Interface]
Address = 10.64.1.2
PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ListenPort = 51820
DNS = 192.168.0.114
[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Endpoint = xxxxx.xxxxx.xxx:51820
AllowedIPs = 0.0.0.0/0
Затем вставьте содержимое конфигурации и назовите свой туннель:

Подключите Wireguard VPN
После подключения VPN вы должны увидеть что-то вроде этого:

Теперь подключенный клиент должен иметь доступ к частной сети через VPN, в которой работает Wireguard.
WireGuard в Docker с помощью wg-easy

compose.yaml
services:
wg-easy:
image: ghcr.io/wg-easy/wg-easy
container_name: wg-easy
environment:
LANG: ru
WG_HOST: '31.169.124.43' # Hostname or server white IP address
PASSWORD_HASH: $$2a$$12$$GtKQvLQYYy6.FwVmydfgdfgdfaRqdfgdfgdffcVIcdNq2OOaW
MAX_AGE: 15
volumes:
- ./wireguard:/etc/wireguard
ports:
- 51820:51820/udp
- 51821:51821/tcp
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv6.conf.all.disable_ipv6=0
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1
restart: unless-stopped
Важно:
WG_HOST
— внешний IP-адрес вашего сервера.PASSWORD_HASH
— зашифрованный пароль от веб-интерфейса WireGuard. Здесь нужно установить пароль созданный выше, без кавычек, но все знаки$
заменить на$$
(задвоить).
docker compose up -d
Проверим по адресу http://31.169.124.43:51821/
