WireGuard — это новый, быстрый и эффективный протокол виртуальной частной сети (VPN), который обеспечивает защиту сетевых соединений. Он стал популярным благодаря своей простоте установки, высокой производительности и легкости настройки в сравнении с другими известными VPN-протоколами, такими как OpenVPN и IPSec. В этой статье мы рассмотрим процесс установки WireGuard на ваш сервер.
Требования к серверу
- Для установки ПО нет строгих требований. Прежде чем начинать, убедитесь, что ваш сервер соответствует следующим минимальным условиям:
- Операционная система. WireGuard можно устанавливать на большинство современных операционных систем. В данной статье будет рассмотрена установка на ОС семейства Linux, в частности, на Ubuntu 22.04. Также подходят другие системы на базе Debian, такие как Ubuntu 20.04 или Debian 12.
- Ресурсы сервера. Вам нужен виртуальный сервер с достаточными ресурсами для обработки VPN-трафика: как минимум одно ядро процессора и 512 МБ оперативной памяти.
- Доступ суперпользователя. Убедитесь, что у вас есть права sudo или доступ к учетной записи root на сервере, чтобы выполнить необходимые действия по установке и настройке.
- Сетевые требования. Проверьте, что ваш сервер имеет публичный IP-адрес и вам доступно редактирование правил брандмауэра для разрешения VPN-трафика. Убедитесь, что нет блокирующих правил на вышестоящем оборудовании. Рекомендуется, чтобы сетевой канал сервера имел скорость не менее 100 Мбит/сек.
Первый способ: через Docker-контейнер
Использование Docker для запуска WireGuard упрощает установку, а также снижает влияние на остальное ПО на сервере (устанавливается изолированно). Опишем необходимые шаги:
Установка Docker
Сначала убедитесь, что Docker установлен на вашем сервере. Если Docker не установлен, выполните команду:
apt update
apt install docker.io -y
apt install docker-compose -y
Создание и запуск контейнера с ПО в Docker
Предварительно создадим директорию, в которую будут помещаться конфигурационные файлы WireGuard командой:
mkdir -p /etc/wireguard/config
Для создания контейнера потребуется ввести следующую команду, в которой будет задаваться конфигурация контейнера:
docker run -d \
--name=wireguard \
--cap-add=NET_ADMIN \
--cap-add=SYS_MODULE \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Europe/Moscow \
-e SERVERURL=62.109.21.223 \
-e SERVERPORT=51820 \
-e PEERS=3 \
-e PEERDNS=auto \
-e INTERNAL_SUBNET=10.13.13.0 \
-p 51820:51820/udp \
-v /etc/wireguard:/config \
-v /lib/modules:/lib/modules \
--sysctl='net.ipv4.conf.all.src_valid_mark=1' \
--sysctl='net.ipv4.ip_forward=1' \
--restart unless-stopped \
linuxserver/wireguard
- Замените ip_вашего_VDS на IP вашего сервера.
- Настройте другие параметры, такие как TZ (часовой пояс) и PEERS (количество клиентов). В примере установлено PEERS=3, что означает, что к этому VPN смогут подключиться только 3 пользователя.
Проверка контейнера
После выполнения команды выше остается проверить состояние контейнера:
docker ps
Если контейнер запущен, при выполнении команды будет отображаться примерно так:

Теперь вы можете получить доступ к конфигурационным файлам в папке /etc/wireguard/config, которые будут содержать ключи клиента и сервера.
Второй способ: С помощью скрипта
Установка скриптом — один из самых быстрых способов установки и настройки WireGuard. Существует несколько популярных скриптов, например, WireGuard Manager. Ниже приведен пример использования простого скрипта, производящего стандартную установку ПО:
Запуск скрипта
Выполните следующую команду, чтобы загрузить и запустить сценарий установки WireGuard:
wget https://git.io/wireguard -O wireguard-install.sh && bash wireguard-install.sh
Пункты установки в скрипте
Скрипт запросит у вас такие данные, как IP-адрес вашего сервера, желаемый VPN-порт (по умолчанию 51820) и количество конфигураций клиентов, которые вы хотите сгенерировать (сколько пользователей могут подключаться). Скрипт автоматически выполнит установку, настройку и генерацию ключей.
Завершение установки
После завершения работы, скрипт создаст конфигурационные файлы для сервера и клиентов, которые обычно хранятся в папке `/etc/wireguard/`. Вы можете загрузить эти файлы на клиенты (устройства), с которых хотите подключаться к VPN.
Третий способ: Ручная установка (на примере ОС Ubuntu)
Ручная установка дает вам больше контроля над процессом. Рассмотрим необходимые шаги для этого:
Обновление пакетов в системе
apt update
Установка ПО
WireGuard возможен для установки из официальных репозиториев Ubuntu, поэтому команда будет следующей:
apt install wireguard -y
Генерация приватного и публичного ключей сервера
WireGuard использует шифрование с публичным ключом для аутентификации. Вам необходимо сгенерировать приватный ключ и соответствующий публичный ключ для сервера следующей командой:
wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey
Генерация клиентских ключей
Для каждого клиентского устройства необходимо на сервере сгенерировать приватный и публичный ключи:
wg genkey | tee /etc/wireguard/peer_<i>_privatekey | wg pubkey | tee /etc/wireguard/peer_<i>_publickey
где вместо <i>
укажите порядковый номер учетной записи, с которой будет подключаться определенное устройство. В нашем примере создадим 3 пары ключей для 3 устройств соответственно:
wg genkey | tee /etc/wireguard/peer_1_privatekey | wg pubkey | tee /etc/wireguard/peer_1_publickey
wg genkey | tee /etc/wireguard/peer_2_privatekey | wg pubkey | tee /etc/wireguard/peer_2_publickey
wg genkey | tee /etc/wireguard/peer_3_privatekey | wg pubkey | tee /etc/wireguard/peer_3_publickey
Настройка WireGuard
Создайте файл конфигурации WireGuard для VPN-подключения (например, /etc/wireguard/wg0.conf) и наполните следующим содержимым:
[Interface]
PrivateKey = <server_private_key>
Address = 10.13.13.1/24
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 51820
[Peer]
#peer_1
PublicKey = <client_public_key(peer_1_publickey)>
AllowedIPs = 10.13.13.2/32
[Peer]
#peer_2
PublicKey = <client_public_key(peer_2_publickey)>
AllowedIPs = 10.13.13.3/32
[Peer]
#peer_3
PublicKey = <client_public_key(peer_3_publickey)>
AllowedIPs = 10.13.13.4/32
- Замените
<server_private_key>
на приватный ключ сервера из предыдущего шага (в нашем примере это файл/etc/wireguard/privatekey
). - Добавьте клиентские публичные ключи вместо
<client_public_key>
соответственно количеству устройств и созданных для них ключевых пар (в нашем примере это 3 устройства и в скобках указаны имена файлов, располагающиеся в директории/etc/wireguard
). - Для каждого устройства в секции
[Peer]
обязательно укажите разные адреса из выделенной подсети в секции[Interface]
. В нашем примере выделена подсеть10.13.13.1/24
и выделены адреса для устройств —10.13.13.2, 10.13.13.3, 10.13.13.4
соответственно.
Создание конфигурационных файлов для клиентов
Чтобы впоследствии было удобнее передавать файл настройки подключения на устройства, сразу сформируем необходимые для них конфигурационные файлы. В примере выше мы уже обозначили 3 устройства и пары ключей для них. Создадим для них конфигурационные файлы и заполним необходимым содержимым, рассматривать будем на примере 1-го устройства (файл peer_1.conf).
Открываем для редактирования файл (тем самым его создавая):
nano /etc/wireguard/peer_1.conf
Вносим туда следующее содержимое:
[Interface]
Address = 10.13.13.2/32
PrivateKey = <client1_private_key(/etc/wireguard/peer_1_privatekey)>
DNS = 1.1.1.1
[Peer]
PublicKey = <server_public_key(/etc/wireguard/publickey)>
Endpoint = <server-ip>:51820
AllowedIPs = 0.0.0.0/0, ::/0
- Замените
<client1_private_key>
на приватный ключ 1-го устройства из 4-го шага (в нашем примере это файл/etc/wireguard/peer_1_privatekey
). - Добавьте публичный ключ сервера вместо
<server_public_key>
из 3-го шага (в нашем примере это файл/etc/wireguard/publickey)
- В секции
[Interface]
в параметреAddress
должен быть указан соответствующий адрес из секции[Peer]
, который указывали в 5-м шаге в файле/etc/wireguard/wg0.conf
. - Вместо
<server-ip>
укажите публичный адрес сервера. - В секции
[Peer]
в параметреAllowedIPs
укажите адреса, с которых должен быть доступ к VPN-серверу. В нашем примере разрешен доступ для любых адресов, в том числе и дляIPv6
, поэтому указано как0.0.0.0/0, ::/0
.
Аналогичным образом сделайте конфигурационные файлы и для остальных устройств. В нашем примере нужно создать еще конфигурационные файлы /etc/wireguard/peer_2.conf
и /etc/wireguard/peer_3.conf
, указывая в них соответственные IP-адреса и соответственные приватные ключи (10.13.13.3
и/etc/wireguard/peer_2_privatekey
, 10.13.13.4
и /etc/wireguard/peer_3_privatekey
)
Включение переадресации IP
Для работы VPN, необходимо включить форвардинг IP-адресов, это можно сделать следующей командой:
sysctl -w net.ipv4.ip_forward=1
Команда sysctl -w
изменяет параметры временно, только до перезагрузки системы. Чтобы изменить параметр на постоянной основе, нужно добавить в файл /etc/sysctl.conf следующую строку:
net.ipv4.ip_forward = 1
При этом после добавления строки в файл, параметр применится только после перезагрузки, если вы ранее не выполнили команду sysctl -w net.ipv4.ip_forward=1
Запуск WireGuard
Теперь можно запускать ПО и добавить его в автозапуск при старте системы следующими командами:
wg-quick up wg0
systemctl enable wg-quick@wg0
Настройка фаервола
Проверьте настройки фаервола в вашей системе на сервере, чтобы не был запрещен трафик WireGuard через порт 51820 (или заданный вами порт). На чистой системе по умолчанию правила фаервола не имеют запрещающих правил.
Настройка клиента WireGuard
После установки и настройки WireGuard на сервере вам нужно будет настроить клиенты (устройства, с которых будете подключаться вы и ваши пользователи — например, ноутбуки, телефоны) для подключения к VPN.
Опишем необходимые шаги для разных ОС:
Установка клиентского приложения WireGuard
На ОС семейства Linux (Debian-based):
sudo apt install wireguard
Для Windows, macOS, десктопных Linux (с GUI) или мобильных устройств (iOS/Android) достаточно скачать официальное приложение WireGuard с сайта.
Получение клиентских конфигурационных файлов
Если пользовались первым и вторым способами установки (через Docker-контейнер или с помощью скрипта), то все необходимые ключи и файлы конфигураций были сформированы автоматически в заданной при установке директории. Например, в приведенном выше руководстве по установке через Docker мы задавали директорию /etc/wireguard/conf
, соответственно, для подключения можно взять готовый конфигурационный файл по расположению /etc/wireguard/config/peer<i>/peer<i>.conf
, где вместо <i> необходимо указать порядковый номер пользователя (в нашем примере было только 3 возможных пользователя – peer1, peer2 и peer3).
В третьем способе мы формировали конфигурационные файлы вручную и размещали их в директории /etc/wireguard/peer_<i>.conf
, где вместо <i>
необходимо указать порядковый номер пользователя (в нашем примере было только 3 возможных пользователя – peer_1, peer_2 и peer_3).
Скачайте эти файлы с сервера или скопируйте содержимое этих файлов на устройство в конфигурационный файл.
Подключение к VPN
На ОС семейства Linux (Debian-based):
sudo wg-quick up peer_1.conf
Вместо peer_1.conf
укажите полный путь до файла конфигурации клиента именно для того устройства, которое требуется. Нельзя указать на двух устройствах один и тот же файл конфигурации, на условном устройстве_1 из нашего примера мы укажем файл peer_1.conf
, а на условном устройстве_2 — peer_2.conf.
Для десктопных приложений (Windows, Linux, MacOS) запуск проводится аналогично через подключение конфигурационного файла (в нашем случае peer_<i>.conf
, где вместо <i>
– порядковый номер устройства) через интерфейс приложения. Скриншот на примере приложения для ОС Windows:


На мобильных приложениях подключение из файла производится аналогичным образом:

На этом всё!