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
Преимущества:
- Встроен в ядро Linux.
- Очень быстрый протокол WireGuard vs OpenVPN
- Кроссплатформенный: Windows, macOS, BSD, iOS, Android.
- Поддержка IPv4 и IPv6
- Не использует TLS, вместо него шифрование с открытым ключом.
Недостатки:
- Поддержка только UDP (тот же OpenVPN поддерживает и UDP и TCP). При любом запуске хостинг провайдером Anti-DDoS процедур ваш сервер WireGuard умрет. То есть существует вероятность, что протокол WireGuard может быть заблокирован сетевыми администраторами, которые вообще отключают UDP и разрешают только трафик TCP.
- Сохранения логов. OpenVPN, IKEv2 присваивают IP-адреса динамически. Это значит, что ваш VPN присваивает вам новый IP-адрес при каждом новом подключении. WireGuard не способен присваивать IP-адреса динамически. Вместо этого, вы получаете один и тот же статический IP-адрес при каждом подключении. Для выдачи одного и того же адреса при каждом подключении, WireGuard должен сохранять и хранить информацию о вашем настоящем IP-адресе и временных метках, что нарушает политику конфиденциальности большинства VPN-сервисов. Многие сервисы заявили, что не будут использовать WireGuard до устранения этого недостатка.
Необходимые требования: выбор VPS
Для выбора провайдера VPS под VPN сервер важно учитывать несколько ключевых критериев: доступность локаций серверов по всему миру, поддержка IPv6 и высокая скорость соединения. Компании, такие как Aéza, Digital Ocean и PQ hosting, предлагают большой выбор географических регионов для размещения серверов, что позволяет оптимизировать соединение для пользователей в разных частях мира. Поддержка IPv6 важна для обеспечения современных сетевых стандартов.
Чтобы следовать этому руководству, вам понадобятся:
- Один сервер Ubuntu 24.04 LTS или выше с доступом root (команды указаны без использования sudo).
- Клиентский компьютер или смартфон, который вы будете использовать для подключения к вашему серверу WireGuard.
- Чтобы использовать WireGuard с IPv6, вам необходимо предварительно убедиться, что ваш сервер настроен на его поддержку.
Решение 1: WireGuard installer для личного использования без веб
На первом месте автоустановщик WireGuard installer от angristan, потому что он доказал свой профессионализм создав ранее скрипт для развертывания OpenVPN, мы его рассматривали в статье OpenVPN для домохозяек за 5 минут в любом Linux.
Плюсы:
- ENDPOINT $IP вместо ip адреса можно прописать домен,
- поддержка IPv6 из коробки,
- QR код (можно посмотреть в консоли Linux).
- Поддержка ОС: AlmaLinux >= 8, Arch Linux, CentOS Stream >= 8, Debian >= 10, Fedora >= 32, Oracle Linux, Rocky Linux >= 8, Ubuntu >= 18.04.
Минусы:
- Управление пользователями через командную строку, что не всегда удобно.
Загрузите и выполните скрипт. Ответьте на вопросы, заданные сценарием, а он позаботится обо всем остальном.
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:
- Предоставляет интуитивно понятный веб-интерфейс для настройки и управления WireGuard.
- Упрощает добавление, удаление и управление клиентскими конфигурациями.
- Генерация и предоставление QR-кодов для быстрой настройки клиентов на мобильных устройствах.
- Управление параметрами сервера, такими как IP-адреса, порты и ключи шифрования.
- Визуализация статистики использования, таких как объем переданных данных и активные сессии.
Решение 3: Firezone для корпоративного использования
Firezone — это мощный инструмент для управления VPN-серверами, предназначенный для корпоративного использования. Он упрощает развертывание и управление WireGuard VPN через удобный веб-интерфейс.
Основные характеристики Firezone:
- Идеально подходит для компаний, обеспечивая безопасное и масштабируемое управление VPN.
- Все компоненты, включая WireGuard, запускаются в контейнерах Docker, что упрощает установку и обслуживание.
- Использует Caddy для автоматической настройки HTTPS, что обеспечивает безопасное соединение с веб-интерфейсом.
- Поддержка IPv6 из коробки, что делает Firezone актуальным для современных сетей.
- Нет необходимости вручную создавать конфигурационные файлы для каждого пользователя. Администратор может создать учетную запись пользователя, и сам пользователь сможет сгенерировать свои конфигурации через веб-интерфейс.
Firezone собирает телеметрию для улучшения разработки, но это можно отключить при установке или позже через переменную окружения TELEMETRY_ENABLED.
Настройка клиентов Wireguard
Для всех инструкций вам потребуется конфигурационный файл или QR код от администратора WireGuard сервера. Скачать клиентов WireGuard для любой поддерживаемой платформы можно по адресу: https://wireguard.com/install/.
Конфигурационный файл содержит настройки для подключения к серверу. Этот файл удобен тем, что его можно просто импортировать в приложение, и оно автоматически настроится.
Рекомендуется иметь отдельный конфигурационный файл для каждого устройства. Если использовать один и тот же конфиг для подключения с нескольких устройств, может возникнуть конфликт, из-за которого как минимум одно из устройств не сможет подключиться.
Windows
- Загрузите и установите пакет для Windows с веб-сайта WireGuard.
- После установки откройте приложение WireGuard и нажмите “Import tunnel(s) from file” и выберите файл с конфигурацией.
- Проверьте, что в вашем конфиге есть настройка 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
- Скачать приложение Wireguard из Google Store, оно также есть в F-Droid.
- Теперь нужно открыть приложение и добавить конфиг. В приложении нажмите на кнопку с плюсом и выберите вариант “Сканировать 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 могут потребоваться определенные настройки ядра, которые обеспечат поддержку необходимых сетевых функций и улучшат производительность. Вот основные настройки, которые следует учесть:
- Включение IP-переадресации (IP Forwarding). WireGuard требует включения IP-переадресации для маршрутизации трафика между клиентами и сервером.
net.ipv4.ip_forward = 1 net.ipv6.conf.all.forwarding = 1
- Защита от 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:
- Откройте конфигурационный файл сервера 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
- Настройка маршрутизации на сервере. Проверьте что у вас появился новый маршрут на сервере или добавьте его в вручную. Добавьте маршрут к сети за клиентом:
sudo ip route add 192.168.2.0/24 dev wg0
Настройка клиента WireGuard:
- Откройте конфигурационный файл клиента 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.
- Настройка маршрутизации на клиенте. Включите IP-переадресацию на клиенте, пример для Linux:
sudo sysctl -w net.ipv4.ip_forward=1
- Настройте правила 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 в вашей сети. По мере использования статья будет обновляться, добавьте себе ее в закладки.
📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Китайский VPN Shadowsocks простая установка и настройка
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах