Перейти к содержимому

Протокол WireGuard VPN — как установить и настроить

Система анонимного подключения при помощи VPN постоянно совершенствуется. Одним из шагов в повышении надежности, скорости связи стало внедрение протокола WireGuard. Он представляет собой современную альтернативу более известным OpenVPN и IPSec. В нем применили семейство ассиметричных ключей Curve25519, обеспечивающее повышенный уровень безопасности связи по сравнению со стандартами AES и RSA. Разберём процесс установки протокола WireGuard на Ubuntu, через Docker на мобильных устройствах и ПК.

WireGuard: преимущества и особенности

Изначально WireGuard выпустили для ядра Linux, но постепенно его сделали кроссплатформенным и перенесли на MacOS, Windows, iOS, Android, BSD. Популярность объяснима – рост безопасности в протоколе совместили с высокой производительностью. Он потребляет меньше ресурсов, поэтому и стал нормой для оснащения VPN мобильных устройств любой мощности, роутеров, IoT-устройств различного назначения.

протокол wireguard

Преимущества протокола WireGuard:

  1. Открытый исходный код – это упрощает интеграцию в собственные разработки.
  2. Компактная кодовая база – код пишется быстро, занимает минимум места на накопителе.
  3. Простота проверки программы – отладка занимает мало времени (связано с размером кода).
  4. Современная криптография – снижены риски взлома за счет новых алгоритмов.

Стоит отметить и недостатки. Например, при настройке офисной сети WireGuard может оказаться заблокирован администратором. Основной код еще продолжают разрабатывать, а это указывает на возможность обнаружения «дыр», которые и пытаются «прикрыть». Система скорее предназначена для разработчиков, на кого и возлагается задача «полировки» согласно четкой и проработанной спецификации.

Наиболее интересная особенность WireGuard – это мобильность. Протокол свободно работает на смартфонах, планшетах и прочих мобильных устройствах. И быстро адаптируется к разнообразным сетевым условиям. Например, при переключении на Wi-Fi сети вместо мобильной или наоборот. Криптографические протоколы ChaCha20, Poly1305, Blake2 обеспечат надежную защиту от попыток взлома. Открытый же код позволит выполнять оперативные аудиты безопасности.

Установка WireGuard на Ubuntu

Процесс установки WireGuard на Ubuntu состоит из нескольких шагов. Последнюю версию софта можно взять из официального репозитория. Если на компьютере установлена устаревший релиз, то рекомендуется сначала обновить PPA (Personal Package Archive).

Запустите команду:

sudo add-apt-repository ppa:wireguard/wireguard

Она обновит список пакетов до актуального состояния. Теперь можно инсталлировать сам софт, это можно сделать по команде:

sudo apt install wireguard

Оба шага необходимо выполнить на сервере и на клиентской машине. Все остальные действия будут иметь отношение только к серверу. Так, первым делом нужно разрешить системе перенаправление сетевых пакетов на уровне ядра. Откройте конфигурационный файл: sudo vi /etc/sysctl.conf, внесите в него следующие изменения:

net.ipv4.ip_forward = 1

net.ipv6.conf.default.forwarding = 1

net.ipv6.conf.all.forwarding = 1

net.ipv4.conf.all.rp_filter = 1

net.ipv4.conf.default.proxy_arp = 0

net.ipv4.conf.default.send_redirects = 1

net.ipv4.conf.all.send_redirects = 0 Выйдите из редактора с сохранением и перезапустите Ubuntu командой: sysctl -p. Она перечитает конфигурацию и будет готова работать в новом формате. Теперь перейдем к генерации уникальных ключей, которые в дальнейшем обеспечат приватность канала.

Сгенерируйте ключи сервера:

wg genkey | sudo tee server_private.key | wg pubkey | sudo tee server_public.key

Система запишет их в файл с указанным именем и параллельно выведет на экран компьютера. Для создания клиентских ключей используем ту же команду:

wg genkey | sudo tee client_private.key | wg pubkey | sudo tee client_public.key

Теперь нужно вручную прописать их в конфигурационных файлах. Откроем сначала серверный – sudo vi /etc/wireguard/wg0.conf. В него нужно внести данные о ключе в таком формате:

[Interface]

Address = <IP адрес сервера в сети VPN>

ListenPort = <порт подключения>

PrivateKey = <взять из сгенерированного файла>

PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o enp0s8 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o enp0s8 -j MASQUERADE

PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o enp0s8 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o enp0s8 -j MASQUERADE

[Peer]

PublicKey = <<взять из сгенерированного файла>>

AllowedIPs = <IP адрес клиента сети VPN>

Вместо поддержки MASQERADE для интерфейса enp0s8 и разрешения на прием пакетов на wg0 можно указать «свои» данные. Секций Peer может быть две и более, если предполагается работа с несколькими клиентами одновременно. После сохранения изменений можно переключиться на файл для клиентской машины – vi client.conf.

Там все будет аналогично:

[Interface]

PrivateKey = <взять из сгенерированного файла>

Address = <IP адрес клиента сети VPN>

DNS = <прокси, через который планируется выполнять соединение>

[Peer]

PublicKey = <взять из сгенерированного файла>

Endpoint = <IP адрес сервера, где установлен WireGuard>

AllowedIPs = 0.0.0.0/0,::/0

После сохранения изменений клиентский файл с именем /etc/wireguard/wg0.conf нужно скопировать на компьютер, откуда предстоит подключаться к серверу. Остается запустить его командой:

sudo wg-quick up wg0

Чтобы избежать блокировки брандмауэром, принудительно разрешим подключение:

sudo ufw allow <номер порта, указанный в конфигурации>/udp

Все, установка и настройка WireGuard завершена. Подключиться к серверу можно командой:

sudo wg-quick up wg0

Чтобы проверить подключение, выполните PING IP-адреса сервера, где установлен WireGuard. Он должен быть доступен и позволять передавать пакеты данных.

WireGuard vs OpenVPN: сравнение

Проведем небольшое сравнение протокола WireGuard и OpenVPN. Например, система шифрации у них отличается изначально и довольно кардинально – в первом используется фиксированный набор алгоритмов (код занимает 4 000 строк), во второй входит перечень, встроенный в библиотеку OpenSSL (код включает более 70 000 строк). Оба варианта легко проходят независимые аудиты, но OpenVPN считается лучшим вариантом для корпоративного VPN.

Сравнение основных характеристик WireGuard и OpenVPN

ПараметрOpenVPNWireGuard
Система защиты данныхPFS, Perfect Forward SecrecyPFS, Perfect Forward Secrecy
Протокол транспортного уровняUDP, TCPUDP
Протокол работы с ключамиRSA, DSA, X25519, Ed25519, SM2HKDF, Curve25519
ХешированиеMD5, MD4, SHA-1, SHA-2, MDC-2, Blake2Blake2, SipHash24
Шифрование и аутентификацияAES, Blowfish, Camellia, ChaCha20, Poly1305, DES, Triple DES, ГОСТ 28147-89ChaCha20, Poly1305

Из таблицы заметен «более скромный» набор инструментов, встроенный в WireGuard. Но это дает существенное повышение скорости, снижение нагрузки на аппаратную часть. Из плюсов «новинки» можно также заострить внимание на совместимости со всеми мобильными устройств. OpenVPN не столь универсален, т.к. поддерживает только Solaris, QNX, Maemo, FreeBSD, ChromeOS и Linux. Из-за такой особенности ее часто встраивают в маршрутизаторы, брандмауэры.

Протокол же WireGuard хорош для пользовательских устройств. Технология дорабатывается, а это дает перспективы расширения совместимости с различными платформами. Единственный минус заключается в том, что настройки WireGuard содержат IP-адреса всех пользователей (в отличие от OpenVPN). Это потенциально снижает уровень безопасности, позволяет отследить точки, откуда инициировано соединение.

wireguard настройка

Еще отметим скорость передачи данных. В WireGuard она по сравнению с OpenVPN выше более чем на 50% при обмене между географически близкими VPN-серверами. Такая разница объяснима – первый изначально разрабатывали для функционирования на уровне ядра операционной системы, а не в пользовательском пространстве. В OpenVPN это отчасти компенсируется универсальностью, т.к. протокол подходит для любых видов туннелирования, а не только для VPN.

Настройка WireGuard через Docker

При развертывании собственного сервера VPN можно использовать популярную платформу Docker (упрощает управление приложениями). Технология появилась еще в 2013 году – она предполагает запуск софта в изолированных «контейнерах», наподобие мини-виртуальных машин. Это актуально для облачной инфраструктуры, т.к. система требует меньше ресурсов. Рассмотрим инсталляцию и настройку при помощи Docker, например, на том же Ubuntu.

Сначала обновите кэш репозиториев (сначала настраиваем сервер):

apt update && apt upgrade -y

Следом установите саму платформу:

apt install docker.io

и docker-compose:

apt install docker-compose

Чтобы не путаться, создайте домашний каталог под названием ~/wireguard, а в ней директорию для конфигурационных файлов – ~/wireguard/config. После этого перейдите в папку config:

mkdir -p ~/wireguard/config

и внутри создайте файл docker-compose.yml:

vim ~/wireguard/docker-compose.yml

Откройте его на редактирование и замените следующие строки:

  1. SERVERURL – проставьте значение auto или IP-адрес вашего сервера.
  2. PEERS – укажите количество клиентов, сколько может подключаться к VPN одновременно.
  3. VOLUME – замените каталог «по умолчанию» на свой, ~/wireguard/config.

Конфигурирование завершено, можно запускать WireGuard в Docker. Для этого сначала создадим контейнер:

cd ~/wireguard

docker-compose up -d

Подождите пока качается образ и запустится контейнер. В итоге проверьте запущен ли он командой – docker ps. На этом настройка сервера завершена, приступаем к клиентской машине.

Как настроить WireGuard на мобильных устройствах

Проще всего разобраться, как настроить WireGuard на Андроид. Все, что нужно пользователю, это установить клиент из стандартного Магазина приложений Google Play. Приложение предложит добавить туннель по нажатию на кнопку <+>. Всего доступно три варианта: импортировать из файла или архива, сканирование QR-кода и создание с нуля. Второй проще всего, т.к. достаточно ввести команду на сервере:

docker exec -it wireguard /app/show-peer <номер клиента в рамках числа из поля PEERS в файле docker-compose.yml>

Приложение запросит разрешение на использование камеры, его надо предоставить. Наименование соединения пользователь выбирает самостоятельно. При доступности сервера появится ползунок, которым можно включить защищенное соединение. Те же действия предстоит сделать, если нужно разобраться, как настроить WireGuard на Айфон. В AppStore доступно такое же приложение, с тем же набором параметров.

Туннелирование с WireGuard

Туннели для WireGuard настраивают преимущественно при взаимодействии двух «одинаковых» сегментов сети. Например, для обмена информацией между офисами/филиалами, для объединения двух и более серверов, выполняющих одни и те же задачи в распределенном режиме. Или стоящих в территориально распределенных серверных, но принадлежащих одной организации. По желанию можно создать туннель и выходить в интернет только через него.

wireguard vpn

Оптимальный вариант применения туннеля – настроить его на роутере. Здесь важно приобрести тот аппарат, который поддерживает WireGuard. Бренд и модель непринципиальна, главное, чтобы он работал на Mikrotik RouterOS версии 7.1 и выше, Zyxel KeeneticOS 3.3 и выше или OpenWRT. В них поддержка встроена «по умолчанию. Процедура настройки идентичная приведенной выше, только в качестве клиента выступает роутер.

Все устройства, подключаемые к нему, будут автоматически работать через созданный туннель. Его не понадобится каждый раз активировать «вручную». Сервер работает круглосуточно, как и роутер, достаточно подключиться к последнему через Wi-Fi или по кабельной линии как обычно делается для доступа в интернет. Единственное ограничение такого способа – настройки вносить придется вручную, QR-коды роутерами не поддерживаются.

Советы по эффективному использованию WireGuard

После настройки сервера/туннеля остается одна задача – научить, как пользоваться WireGuard сотрудников или домочадцев. Здесь в полной мере проявляется преимущество, которое заключается в поддержке всех популярных операционных систем: Windows, MacOS. Android, iOS. Фактически пользователи могут оставаться в привычной рабочей среде, лишь дооснастив ее софтом для работы с протоколом VPN.

Рекомендации:

  1. Безопасный выход в интернет можно организовать через VPN на базе WireGuard. Вполне достаточно организовать защищенный тоннель, через который и пойдет весь трафик.
  2. Развернуть собственную «точку» проще на арендованном VPS (виртуальном сервере), где легко инсталлировать любую операционку.
  3. Провайдеры нередко предлагают предустановленные системы, которые остается только настроить под свои нужды.
  4. Протокол WireGuard поддерживает разные режимы – точка-точка, звезда и mesh-сеть. Это делает его универсальным инструментом.

Чтобы превратить свой сервер в шлюз необходимо включить NAT. Это возможно несколькими способами, включая применение, например, приложения Iptables. В его конфигурационный файл достаточно внести следующие параметры (в секцию Interface):

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE

PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE

где ens3 – это ваш сетевой интерфейс, имеющий белый IP-адрес. Вместо режима MASQUERADE можно использовать другие методы NAT. Передать настройки сервера на мобильное устройство можно и без графического режима. Просто создайте файл конфигурации и отобразите его в виде QR-кода в консоли при помощи команды qrencode. Возможно, ее придется сначала установить при помощи команды:

qrencode -t ansiutf8 < wg-client.conf

Здесь wg-client.conf – это имя конфигурационного файла, который затем передается на устройство пользователя (на клиентскую машину).

VPN со встроенным протоколом WireGuard

Популярность WireGuard подогревает его дотупность в VPN-сервисах. Пользователь вправе выбирать, какую именно технологию использовать при создании защищенных соединений. Иногда компании встраивают собственные разработки, основанные на открытом коде «оригинала».

Провайдеры, поддерживающие в своих разработках протокол WireGuard:

  1. Planet Free VPN
  2. Surfshark
  3. ExpressVPN
  4. CyberGhost
  5. PIA (Private Internet Access).

Решения интересны тем, что в рамках одного предоплаченного тарифа можно протестировать два и более варианта подключения. И выбрать наиболее подходящее для решения конкретных задач: или совместимое с настройками локальной сети, или максимально скоростное.Из перечисленных ВПН, PIA и ExpressVPN надёжно работают в России

Заключение

Разобрались как настроить WireGuard, в чем преимущество перед основным конкурентом в виде протокола OpenVPN. Относительно новая система продолжает развиваться, поэтому стоит ожидать и расширения функционала. Все больше производителей встраивает ее поддержку в те же роутеры на «аппаратном уровне». Идея минимизировать код удалась на славу – он работает быстро, легко адаптируется к различным платформам.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *