*К сожалению, ввиду простоты, протоколы WireGuard и OpenVPN могут быть заблокированы с помощью ТСПУ. В результате блокировок, на некоторых провайдерах данные протоколы могут не работать. При блокировке наблюдается следующая ситуация: UDP-соединения устанавливаются, но никакой трафик не передается. TCP-соединения соединяются и разъединяются через несколько секунд. Можем предложить рассмотреть вариант использования протоколов L2TP или IKEv2/IPSec. Для вашего удобства, у нас уже есть готовые шаблоны на маркетплейсе, имеющие все необходимые для работы настройки.
WireGuard – это современный протокол виртуальной частной сети (VPN), разработанный для обеспечения безопасного и эффективного соединения между устройствами через интернет. Он известен своей простотой, эффективностью и скоростью. В отличие от некоторых других VPN-протоколов, таких как OpenVPN или IPSec, WireGuard обладает более компактным и прозрачным кодом, что облегчает его аудит и развёртывание.
В статье разберём процесс настройки VPN с использованием WireGuard на виртуальном выделенном сервере, работающем под управлением Ubuntu 22.04.
Предварительная настройка сервера
Для того, чтобы установить и настроить WireGuard, подключитесь к виртуальному серверу по SSH с использованием учётной записи, обладающей полномочиями администратора и обновите списки пакетов:
$ sudo apt update
После чего установите утилиту для управления правилами брандмауэра iptables:
$ sudo apt install iptables
Затем перейдите в каталог /etc/ и при помощи текстового редактора nano внесите изменения в файл sysctl.conf:
$ cd /etc/
$ sudo nano sysctl.conf
А именно, найдите и раскомментируйте строку, содержащую следующий текст:
net.ipv4.ip_forward=1
Это необходимо сделать, чтобы включить пересылку IPv4-пакетов через систему. Для применения внесённых изменений, выполните следующую команду:
$ sudo sysctl -p
Вывод данной данной команды должен содержать строку net.ipv4.ip_forward=1:

Установка и настройка сервера WireGuard
Пакет WireGuard доступен для установки из стандартного репозитория Ubuntu. Исходя из этого, непосредственно для запуска инсталляции выполните команду:
$ sudo apt install wireguard
Для настройки WireGuard после того, как установка завершится, временно переключитесь в режим суперпользователя при помощи команды:
$ sudo su
Для проведения работ по настройке VPN-сервера перейдите в каталог, в котором будут находиться конфигурационные файлы сервера и клиентов WireGuard. Это – директория /etc/wireguard:
# cd /etc/wireguard
И следующей командой сгенерируйте пару ключей (открытый и секретный) для сервера:
# wg genkey | tee privatekey | wg pubkey | tee publickey
Обратите внимание, что при проведении данной процедуры создаются файлы открытого и секретного ключей. В нашем случае это – publickey и privatekey. Если вы запускаете команду не находясь в каталоге /etc/wireguard/, то следует указать путь до создаваемых файлов, например:
# wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey
На следующем шаге создайте конфигурационный файл сервера WireGuard:
# nano wg0.conf
В него необходимо вставить следующий текст:
[Interface]
PrivateKey = Your-Server-Private-Key
Address = 10.10.10.1
ListenPort = 51820
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
В данном случае:
Your-Server-Private-Key– секретный ключ сервера;10.10.10.1– IP-адрес сервера, который он будет иметь в создаваемой VPN-сети;51820– порт, который будет использоваться для подключения к VPN-сети;- следующие две строки – это команды, которые будут выполняться при подключении к сетевому интерфейсу
wg0и отключении от него.
IP-адрес сервера VPN вы можете указать по своему усмотрению, но учитывайте, что клиентам вашего VPN нужно будет присваивать IP-адреса из этой же подсети. Номер порта в WIreGuard по умолчанию – 51820, что, естественно, не мешает изменить его на более приемлемый в ваших конкретных условиях.
Что касается секретного ключа вашего сервера, то его можно найти в файле /etc/wireguard/privatekey. Чтобы посмотреть его содержимое, находясь в директории /etc/wireguard/ запустите команду:
# cat privatekey
Строку, которую выведет данная команда, вам нужно будет вставить в файл wg0.conf в качестве значения параметра PrivateKey.
Далее, для включения автоматического запуска службы WireGuard при загрузке системы выполните команду:
# systemctl enable wg-quick@wg0.service
После чего запустите службу:
# systemctl start wg-quick@wg0.service
Чтобы проверить, что сервис запустился и функционирует корректно, выполните команду:
# systemctl status wg-quick@wg0.service

Создание конфигурации клиентов WireGuard
Теперь в качестве примера мы создадим двух абонентов (пиров), которые будут подключены к нашему VPN.
В нашем примере абоненты будут называться peer1 и peer2. Для создания первого из них запустите команду, находясь в каталоге /etc/wireguard/:
# wg genkey | tee peer1_privatekey | wg pubkey | tee peer1_publickey
Аналогично для второго пира:
# wg genkey | tee peer2_privatekey | wg pubkey | tee peer2_publickey
Затем откройте для редактирования файл wg0.conf:
# nano wg0.conf
И добавьте в него информацию о только что созданных клиентах:
[Peer]
PublicKey = Your-Peer1-Public-Key
AllowedIPs = 10.10.10.2/32
[Peer]
PublicKey = Your-Peer2-Public-Key
AllowedIPs = 10.10.10.3/32
В данном случае:
Your-Peer1-Public-Key– открытый ключ клиента;10.10.10.2/32– IP-адрес клиента с маской подсети255.255.255.255.
Обратите внимание, что IP-адрес для клиентов вашего VPN необходимо назначать из той же подсети, из которой назначен IP-адрес сервера. Естественно, в пределах данной сети каждый клиент должен обладать уникальным IP-адресом.
Открытые ключи клиентов, которые мы сгенерировали ранее, в нашем примере находятся в файле peer1_publickey для первого клиента и peer2_publickey для второго. Для вывода ключа на экран используйте команду cat:
# cat peer1_publickey
# cat peer2_publickey
Строки, выведенные на экран, скопируйте и вставьте в файл wg0.conf в качестве значений для параметра PublicKey каждого из клиентов.
Затем следующей командой перезагрузите конфигурацию службы WireGuard:
# systemctl restart wg-quick@wg0
Теперь мы создадим конфигурационные файлы для клиентов нашего VPN. Они будут нужны для настройки непосредственно клиентского приложения каждого из пиров.
Файлы конфигурации наших клиентов будут называться peer1.conf и peer2.conf. Для создания первого из них используйте редактор nano:
# nano peer1.conf
Внесите в созданный файл следующее содержимое:
[Interface]
PrivateKey = Your-Peer1-Private-Key
Address = 10.10.10.2/32
DNS = 8.8.8.8
[Peer]
PublicKey = Your-Server-Public-Key
Endpoint = Your-Server-IP-Address:51820
AllowedIPs = 10.10.10.0/24
PersistentKeepalive = 20
Здесь:
Your-Peer1-Private-Key– секретный ключ клиента;10.10.10.2/32– IP-адрес клиента с маской подсети255.255.255.255;8.8.8.8– IP-адрес DNS-сервера, который будет использоваться клиентом при подключении к VPN;Your-Server-Public-Key– открытый ключ сервера;Your-Server-IP-Address:51820– IP-адрес сервера и номер используемого порта (по умолчанию и в нашем примере – 51820).
Секретный ключ клиента находится в файле peer1_privatekey. При помощи команды cat выведите содержимое файла на экран, скопируйте выведенную строку и внесите её в файл peer1.conf вместо Your-Peer1-Private-Key.
Параметр AllowedIPs в файле конфигурации указывает на то, какие IP-адреса клиентской машины будут маршрутизироваться через VPN-туннель. В данном случае 10.10.10.10/24 означает, что все пакеты с исходящими или конечными адресами в диапазоне 10.10.10.0/24 будут направляться через VPN-туннель.
Строка PersistentKeepalive = 20 означает, что клиент будет отправлять keepalive-сообщения каждые 20 секунд, даже если между клиентом и сервером нет активного обмена данными. Это помогает поддерживать соединение открытым, предотвращая его разрыв из-за неактивности.
Аналогично внесите изменения в конфигурационный файл нашего второго клиента:
# nano peer2.conf
[Interface]
PrivateKey = Your-Peer2-Private-Key
Address = 10.10.10.3/32
DNS = 8.8.8.8
[Peer]
PublicKey = Your-Server-Public-Key
Endpoint = Your-Server-IP-Address:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 20
Подключение клиента на Windows
Для подключения клиента, работающего на Windows, необходимо использовать соответствующее приложение. Загрузить установщик можно на официальной странице WireGuard. Здесь кликните на Download Windows Installer.

По окончании загрузки запустите установщик и после того, как установка завершится, откройте проинсталлированное приложение.
В приложении нажмите Add Tunnel, затем Add empty tunnel...

В основное окно вставьте содержимое файла peer1.conf, если этот компьютер будет в вашей сети клиентом peer1. Затем в строку Name введите имя создаваемого туннеля, например, wg. После чего нажмите Save.

Для того, чтобы подключить данную рабочую станцию к VPN, нажмите Activate. Увидеть статистику текущего подключения можно либо в основном окне клиентского приложения, либо на сервере при помощи команды:
$ sudo watch wg show

Поправьте:
# systemctl reload wg-quick@wg0
надо *restart и @wg0.service
В peer1
2024-09-27 at 09:02AllowedIPs = 0.0.0.0 вместо 10.10.10.0
systemctl restart поправили, благодарим за внимательность!
В peer1 Вы пытаетесь разрешить все IP адреса, что данном случае избыточно.
2025-02-03 at 15:051) После команды # systemctl status wg-quick@wg0.service не понятно, как вернуться к вводу других команд, пришлось перезапускать программу.
2024-10-16 at 13:592) В команде # systemctl reload wg-quick@wg0 должно быть restart, reload не работает.
3) Про то, что в каких-то файлах понадобятся ключи из других файлов, лучше написать заранее, прежде чем советовать открыть те файлы, в которых они нужны.
1) Команда systemctl status действительно иногда может заблокироваться. Ctrl+C должен помочь.
2025-02-03 at 15:002) Поправили статью. Благодарим за внимательность.
3) Неодобство может решаться, например, несколькими подключениями SSH или использованием оконных меннеджеров screen, tmux и т. п.
Плохо понятно, что делать на сервере и что на клиентах. Всё в кучу.
2025-02-19 at 11:55Настройка VPN в принципе может потребовать некоторых усилий и иногда требуется время чтобы разобраться в деталях.
2025-02-24 at 18:29