Содержание

3 лучших решения для установки и управления WireGuard на VPS

Изначально я подготовил подробное пошаговое руководство по установке и настройке сервера WireGuard. Однако в процессе использования стало ясно, что WireGuard не идеально подходит для сложных конфигураций, его часто блокируют провайдеры интернета, и он не поддерживает TCP. WireGuard легко обнаруживается провайдерами, поскольку изначально не предназначался для обхода блокировок. В то же время, для простых задач, таких как пробивка фаервола в корпоративной сети или создание личного VPN-сервера, WireGuard отлично подходит благодаря своей простоте настройки.

Для установки сервера WireGuard требуется ручное создание ключей, выбор подсети и задание нескольких параметров. Также необходимо создавать ключи и конфигурационные файлы для каждого клиента, что неудобно при большом числе пользователей или необходимости часто изменять состав клиентов.

Как говорится прежде чем делать самому, посмотри, что уже сделали до тебя. Задачу автоматизации этих действий можно решить с помощью специальных программ. После анализа доступных решений в интернет для установки сервера Wireguard, я выделил для себя 3 автоматических решения для установки сервера WireGuard.

Что такое WireGuard

WireGuard — это современный VPN-протокол, отличающийся высокой скоростью и использованием передовых криптографических алгоритмов. В сравнении с IPsec и OpenVPN, он проще в настройке и более универсальный, что позволяет его широкое применение в различных сценариях. Разработчики описывают WireGuard как простой и быстрый VPN современного уровня без излишней сложности. WireGuard стремится быть более быстрым, компактным и эффективным по сравнению с IPsec (трудно создать что-то хуже IPsec) и OpenVPN, нацеленным на высокую производительность.

Wireguard — это одноранговая VPN, то есть он не использует модель клиент-сервер. В зависимости от конфигурации одноранговый узел может действовать как традиционный сервер или клиент. Он работает путем создания сетевого интерфейса на каждом одноранговом устройстве, которое действует как туннель. Одноранговые узлы аутентифицируют друг друга, обмениваясь и проверяя открытые ключи, имитируя модель SSH. Открытые ключи сопоставляются со списком IP-адресов, разрешенных в туннеле. Трафик VPN инкапсулируется в UDP.

Шифрование WireGuard основано на открытых и закрытых ключах, позволяющих одноранговым узлам устанавливать зашифрованный туннель между собой. Каждая версия WireGuard использует определенный набор криптографических шифров, чтобы обеспечить простоту, безопасность и совместимость с одноранговыми узлами. Для сравнения, другое программное обеспечение VPN, такое как OpenVPN и IPSec, использует безопасность транспортного уровня (TLS) и сертификаты для аутентификации, что делает настройку VPN, использующей TLS, более трудоемкой, сложной и подверженной ошибкам.

Преимущества и Недостатки VPN от WireGuard

Преимущества:

Недостатки:

Необходимые требования: выбор VPS

Для выбора провайдера VPS под VPN сервер важно учитывать несколько ключевых критериев: доступность локаций серверов по всему миру, поддержка IPv6 и высокая скорость соединения. Компании, такие как Aéza, Digital Ocean и PQ hosting, предлагают большой выбор географических регионов для размещения серверов, что позволяет оптимизировать соединение для пользователей в разных частях мира. Поддержка IPv6 важна для обеспечения современных сетевых стандартов.

Чтобы следовать этому руководству, вам понадобятся:

Решение 1: WireGuard installer для личного использования без веб

На первом месте автоустановщик WireGuard installer от angristan, потому что он доказал свой профессионализм создав ранее скрипт для развертывания OpenVPN, мы его рассматривали в статье OpenVPN для домохозяек за 5 минут в любом Linux.

Плюсы:

Минусы:

Загрузите и выполните скрипт. Ответьте на вопросы, заданные сценарием, а он позаботится обо всем остальном.

curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh
chmod +x wireguard-install.sh
./wireguard-install.sh
Welcome to the WireGuard installer!
The git repository is available at: https://github.com/angristan/wireguard-install
 
I need to ask you a few questions before starting the setup.
You can keep the default options and just press enter if you are ok with them.
 
IPv4 or IPv6 public address: xxx.xxx.xxx.xxx
Public interface: ens3
WireGuard interface name: wg0
Server WireGuard IPv4: 10.66.66.1
Server WireGuard IPv6: fd42:42:42::1
Server WireGuard port [1-65535]: 50245
First DNS resolver to use for the clients: 1.1.1.1
Second DNS resolver to use for the clients (optional): 1.0.0.1
 
WireGuard uses a parameter called AllowedIPs to determine what is routed over the VPN.
Allowed IPs list for generated clients (leave default to route everything): 0.0.0.0/0,::/0
 
Press any key to continue...

Управление после установки скрипта через вызов в консоли этого же файла wireguard-install.sh. Чтобы добавить нового пользователя следуйте подсказкам псевдоменю:

./wireguard-install.sh
 
What do you want to do?
   1) Add a new user
   2) List all users
   3) Revoke existing user
   4) Uninstall WireGuard
   5) Exit
Select an option [1-5]:

Конфигурационный файл с префиксом wg0-client для клиента будет создан рядом с запускаемым файлом wireguard-install.sh. QR код отображается в консоли сразу после создания клиента.

Для повторного создания QR кода существующего клиента, используйте утилиту qrencode. В команде ниже заменить название файла wg0-client-test1.conf на нужный вам клиентский файл:

qrencode -t ansiutf8 -l L < wg0-client-test1.conf

Всё! У вас рабочий VPN сервер на основе WireGuard.

Решение 2: WireGuard-UI для личного использования с веб-интерфейсом

WireGuard-UI — это веб-интерфейс для управления WireGuard, который упрощает настройку и администрирование VPN-сервера WireGuard. Этот интерфейс позволяет пользователям без глубоких знаний командной строки легко настраивать и управлять сервером WireGuard.

Основные функции WireGuard-UI:

Решение 3: Firezone для корпоративного использования

Firezone — это мощный инструмент для управления VPN-серверами, предназначенный для корпоративного использования. Он упрощает развертывание и управление WireGuard VPN через удобный веб-интерфейс.

Основные характеристики Firezone:

Firezone собирает телеметрию для улучшения разработки, но это можно отключить при установке или позже через переменную окружения TELEMETRY_ENABLED.

Настройка клиентов Wireguard

Для всех инструкций вам потребуется конфигурационный файл или QR код от администратора WireGuard сервера. Скачать клиентов WireGuard для любой поддерживаемой платформы можно по адресу: https://wireguard.com/install/.

Конфигурационный файл содержит настройки для подключения к серверу. Этот файл удобен тем, что его можно просто импортировать в приложение, и оно автоматически настроится.

Рекомендуется иметь отдельный конфигурационный файл для каждого устройства. Если использовать один и тот же конфиг для подключения с нескольких устройств, может возникнуть конфликт, из-за которого как минимум одно из устройств не сможет подключиться.

Windows

  1. Загрузите и установите пакет для Windows с веб-сайта WireGuard.
  2. После установки откройте приложение WireGuard и нажмите “Import tunnel(s) from file” и выберите файл с конфигурацией.
  3. Проверьте, что в вашем конфиге есть настройка DNS. Без этого туннель в Windows не будет нормально работать. В Wireguard приложении нажмите кнопку "Edit", и в блоке Interface должен быть параметр DNS. Если он есть, ничего менять не нужно. Если нет, то после строки Address добавьте строку DNS = 8.8.8.8, 1.1.1.1

Linux Ubuntu Debian

sudo apt install wireguard

После этого создайте файл конфигурации клиента

nano /etc/wireguard/wg0.conf

Для запуска соединения введите следующую команду:

sudo wg-quick up wg0

Если нужно, чтобы подключение по WireGuard устанавливалось автоматически при запуске системы, добавьте wg-quick в автозагрузку:

systemctl enable wg-quick@wg0.service

В большинстве решений в создаваемых конфигах есть строка с DNS-серверами

DNS = $DNS1, $DNS2

Эта строка обязательна для MacOS, iOS и Windows и работает там без проблем. А вот в Linux всё не так просто. Проблема в том, что wg-quick использует resolvconf для управления DNS и не поддерживает systemd-resolved, который используется почти везде. Для решения этой проблемы вы можете удалить эту строку DNS из клиентского конфигурационного файла. В этом случае будет использоваться DNS системы, например DNS-сервер на вашем домашнем роутере.

Android

  1. Скачать приложение Wireguard из Google Store, оно также есть в F-Droid.
  2. Теперь нужно открыть приложение и добавить конфиг. В приложении нажмите на кнопку с плюсом и выберите вариант “Сканировать QR код” или "Импорт из файла или архива"

Mikrotik

С настройкой Настройка MikroTik RB2011UiAS-2HnD-IN, Mikrotik RB750 как всегда полная жесть:(( Нашел для вас видео ибо если писать это текстом:( И так видео, как настроить клиента Wireguard на Mikrotik.

FAQ 1: Как ограничить количество подключений на один ключ в WireGuard сервере?

Ограничение делается при помощи ip адресов при помощи беcклассовой адресации CIDR.

Конфиг wg0.conf на сервере:

[Peer]
PublicKey = <publickey peer1>
AllowedIPs = 10.0.0.2/30

Вместо AllowedIPs = 10.0.0.2/32 можно сделать AllowedIPs = 10.0.0.2/30. В конфиге клиента прописать:

[Interface]
PrivateKey = <privatekey peer 1>
Address = 10.0.0.2/30

В этом примере разрешено подключение 4 устройств.

FAQ 2: Wireguard debug

wg show all dump

FAQ 3: Какие настройки ядра Linux нужны для сервера Wireguard

Если вы устанавливаете Wireguard скриптами описанными выше, то они сами добавляют нужные настройки в файл /etc/sysctl.conf. Для оптимальной работы WireGuard на сервере Linux могут потребоваться определенные настройки ядра, которые обеспечат поддержку необходимых сетевых функций и улучшат производительность. Вот основные настройки, которые следует учесть:

  1. Включение IP-переадресации (IP Forwarding). WireGuard требует включения IP-переадресации для маршрутизации трафика между клиентами и сервером.
    net.ipv4.ip_forward = 1
    net.ipv6.conf.all.forwarding = 1
  2. Защита от DoS-атак и улучшение безопасности. Настройки для ограничения SYN-флуд атак. Если ваш VPN сервер работает нормально, нагрузка на сервер не высока - отключите net.ipv4.tcp_syncookies задав параметр 0.
    net.ipv4.tcp_syncookies = 1

Весь список возможных настроек ядра Linux:

kernel.apparmor_restrict_unprivileged_userns = 1
kernel.printk = 4 4 1 7
net.ipv6.conf.all.use_tempaddr = 2
net.ipv6.conf.default.use_tempaddr = 2
kernel.kptr_restrict = 1
kernel.sysrq = 176
vm.max_map_count = 1048576
net.ipv4.conf.default.rp_filter = 2
net.ipv4.conf.all.rp_filter = 2
kernel.yama.ptrace_scope = 1
vm.mmap_min_addr = 65536
kernel.pid_max = 4194304
fs.protected_fifos = 1
fs.protected_hardlinks = 1
fs.protected_regular = 2
fs.protected_symlinks = 1
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_congestion_control = bbr
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
net.ipv4.tcp_congestion_control = bbr

FAQ 4: Может ли WireGuard обойти брандмауэры?

Протокол WireGuard обычно должен обходить брандмауэры, но есть одна проблема — поскольку протокол использует только протокол передачи UDP (сложно сказать, какой именно порт, хотя это может быть порт 51820), есть вероятность, что он может быть заблокирован брандмауэрами или сетевыми администраторами, которые вообще отключают UDP и разрешают только трафик TCP.

Если у вас есть время и желание, рекомендуется изучить такие инструменты, как Shadowsocks и XRay (или другие решения, маскирующиеся под HTTPS). Вы можете установить их вместе с WireGuard для повышения гибкости и безопасности.

FAQ 5: Как в WireGuard пробросить сеть ip адресов за клиентом?

Если вы хотите, чтобы устройства за клиентом могли использовать VPN-соединение для доступа к серверным ресурсам, вам нужно сделать проброс сетей. Чтобы пробросить сеть IP-адресов за клиентом в WireGuard, вам нужно настроить маршрутизацию трафика через клиентский интерфейс.

Предположим, что за клиентом находится сеть 192.168.2.0/24 и нам нужно сделать ее доступной для других IP входящих в нашу WireGuard сеть.

Предварительно пояснение

В случае проброса "серых" IP-адресов (приватных IP-адресов), MASQUERADE на клиенте может быть излишним, если все устройства и маршруты правильно настроены. В этом случае достаточно настроить правильные маршруты на сервере и клиенте WireGuard.

Настройка сервера WireGuard:

  1. Откройте конфигурационный файл сервера WireGuard. Добавьте сеть 192.168.2.0/24 клиента в секцию [Peer], строка AllowedIPs:
    sudo nano /etc/wireguard/wg0.conf
     
    [Interface]
    PrivateKey = <серверный_приватный_ключ>
    Address = 10.0.0.1/24
    ListenPort = 51820
     
    [Peer]
    PublicKey = <публичный_ключ_клиента>
    AllowedIPs = 10.0.0.2/32, 192.168.2.0/24
  2. Настройка маршрутизации на сервере. Проверьте что у вас появился новый маршрут на сервере или добавьте его в вручную. Добавьте маршрут к сети за клиентом:
    sudo ip route add 192.168.2.0/24 dev wg0

Настройка клиента WireGuard:

  1. Откройте конфигурационный файл клиента WireGuard. Добавьте маршрут к сети за клиентом:
    [Interface]
    PrivateKey = <клиентский_приватный_ключ>
    Address = 10.0.0.2/24
     
    [Peer]
    PublicKey = <публичный_ключ_сервера>
    Endpoint = <серверный_адрес>:51820
    AllowedIPs = 10.0.0.0/24, 0.0.0.0/0

    В данном случае 0.0.0.0/0 означает, что весь трафик будет направляться через VPN. Если нужно только пробросить определенные сети, укажите их в AllowedIPs.

  2. Настройка маршрутизации на клиенте. Включите IP-переадресацию на клиенте, пример для Linux:
    sudo sysctl -w net.ipv4.ip_forward=1
  3. Настройте правила iptables на клиенте для проброса трафика:
    sudo iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o wg0 -j MASQUERADE

Эти шаги помогут настроить проброс сети IP-адресов за клиентом в WireGuard, обеспечивая возможность маршрутизации трафика через VPN для устройств за клиентом.

Заключение

Несмотря на некоторые ограничения, такие как отсутствие поддержки TCP и возможность блокировки провайдерами, WireGuard остается отличным выбором для личного использования и простых корпоративных задач. Благодаря своей скорости, легкости и использованию передовых криптографических алгоритмов, WireGuard становится все более популярным в сообществе ИТ-профессионалов.

Использование автоматизированных решений для установки и управления WireGuard может существенно упростить процесс и сэкономить время, особенно в случаях, когда требуется управление большим количеством клиентов. Рекомендуем ознакомиться с нашим каталогом VPN провайдеров. Надеемся, что предоставленные рекомендации и инструменты помогут вам эффективно настроить и использовать WireGuard VPN в вашей сети. По мере использования статья будет обновляться, добавьте себе ее в закладки.