Протокол шифрования WireGuard: принцип работы, преимущества и особенности

Краткая информация о протоколе шифрования WireGuard и его преимущества
WireGuard – это современный и эффективный протокол шифрования, использующийся для защиты сетевого трафика. Он был разработан с целью создания более безопасного и быстрого протокола VPN, чем существующие решения, такие как OpenVPN и IPSec.
WireGuard использует семейство асимметричных ключей Curve25519, обеспечивающие более высокий уровень безопасности, чем ключи RSA и AES, используемые в других протоколах VPN. Благодаря асимметричной криптографии, WireGuard не требует ресурсоемких операций, используемых в других протоколах.
WireGuard также имеет несколько преимуществ перед другими VPN-протоколами. Он является очень “лёгким” – он потребляет меньше системных ресурсов, что делает его использование идеальным на устройствах с небольшими мощностями, таких как мобильные устройства, роутеры и IoT-устройства.
Протокол WireGuard обеспечивает быстрое VPN-соединение благодаря режиму работы ядра, который работает намного быстрее, чем пользовательский режим, в котором работают другие протоколы.
WireGuard является относительно новым протоколом, уже заявившим о себе благодаря простоте, безопасности и производительности. Он предоставляет пользователям более безопасный и быстрый способ подключения к VPN, что делает его лучшим выбором у ценителей безопасности и надежности.
Принцип работы WireGuard
WireGuard работает по принципу пакетной передачи данных через интернет и шифрует все пакеты данных с помощью симметричного шифрования ChaCha20 и аутентификационного протокола Poly1305.
WireGuard ориентирован на работу в ядре операционной системы, что позволяет обеспечивать высокую производительность и уменьшать задержки данных. Это делает WireGuard идеальным для использования на мобильных устройствах и IoT-устройствах, где производительность и энергоэффективность являются одними из основных приоритетов.
Система управления ключами протокола очень удобна и обеспечивает простоту настройки и использования сервиса. Ключи создаются автоматически и используются только для соединения двух конкретных устройств. Это означает, что теоретически никогда не происходит централизованного хранения ключей, которое может создать уязвимость в системе.
Сравнение WireGuard с OpenVPN, IPSec, L2TP, IKEv2
WireGuard отличается от других протоколов VPN, таких как OpenVPN, IPSec, L2TP, IKEv2 в том, что использует меньше кода и одновременно более безопасен и производительней. WireGuard работает с более простым и гибким API для создания VPN-конфигураций, значительно упрощая настройку. WireGuard также использует асимметричные ключи длиной 256 бит, что делает его безопаснее и уменьшает нагрузку на процессор. Сочетание базовой функциональности и новых технологий делает WireGuard более простым, более надежным и эффективным в сравнении с другими протоколами VPN.
| PPTP | L2TP/IPsec | IKEv2/IPsec | OpenVPN | WireGuard | |
|---|---|---|---|---|---|
| Компания-разработчик | Microsoft | L2TP — совместная разработка Cisco и Microsoft, IPsec — The Internet Engineering Task Force | IKEv2 — совместная разработка Cisco и Microsoft, IPsec — The Internet Engineering Task Force | OpenVPN Technologies | Джейсон Доненфельд |
| Лицензия | Проприетарная | Проприетарная | Проприетарная + открытый исходный код | GNU GPL | GNU GPL |
| Поддержка ОС | Windows, macOS, iOS, GNU/Linux | Windows, macOS X, Linux, iOS, Android | Windows 7+, macOS 10.11+ и большинство мобильных ОС имеют встроенную поддержку | Windows, macOS, GNU/Linux, Apple iOS, Android и маршрутизаторы | Windows, macOS, GNU/Linux, Apple iOS, Android |
| Шифрование | Microsoft Point-to-Point Encryption (MPPE) + RSA RC4 с максимум 128-битными сеансовыми ключами | 3DES или AES | Реализует большое количество криптографических алгоритмов, включая AES, Blowfish, Camellia | Использует библиотеку OpenSSL (реализует большинство популярных криптографических стандартов) | Обмен ключами по 1-RTT, Curve25519 для ECDH, RFC7539 для ChaCha20 и Poly1305 для аутентификационного шифрования, и BLAKE2s для хеширования |
| Порты | TCP-порт 1723 | UDP-порт 500 для первонач. обмена ключами и UDP-порт 1701 для начальной конфигурации L2TP, UDP-порт 5500 для обхода NAT | UDP-порт 500 для первоначального обмена ключами, а UDP-порт 4500 — для обхода NAT | Любой UDP- или TCP-порт | Любой UDP-порт |
| Недостатки безопасности | MSCHAP-v2 уязвим для атаки по словарю, а алгоритм RC4 подвергается атаке Bit-flipping | 3DES уязвим для Meet-in-the-middle и Sweet32, но AES не имеет известных уязвимостей. Однако есть мнение, что стандарт IPsec скомпрометирован АНБ США | – | – | – |
Особенности использования WireGuard в коммерческих и корпоративных сетях
Особенности использования WireGuard в коммерческих и корпоративных сетях следующие:
- Выбор провайдера. Сначала необходимо выбрать провайдера, предоставляющего услуги WireGuard. При выборе провайдера следует учитывать его репутацию, качество обслуживания и опыт работы с WireGuard.
- Выбор настройки. WireGuard можно настроить на любой сервер, как локальный, так и удаленный. Перед тем, как начать настройку, следует рассмотреть все возможности, предоставляемые WireGuard, и выбрать оптимальный вариант.
- Надежность. Рассматриваемый протокол обеспечивает высокую степень безопасности и защиты данных. Однако, для того чтобы оптимизировать безопасность, необходимо обеспечить надежную настройку и строгую политику безопасности.
- Проще, чем OpenVPN. Многие администраторы и пользователи отмечают простоту настройки и использования WireGuard в сравнении с OpenVPN. Это позволяет сократить время на настройку и использование сервиса, а также требует меньше ресурсов.
- Высокая скорость. Сравнительно высокая скорость работы WireGuard делает его использование идеальным в коммерческих и корпоративных сетях. Это более чем достаточно, чтобы обеспечить высокую производительность для тяжелых сетевых приложений.
Использование WireGuard в коммерческих и корпоративных сетях является оптимальным решением для обеспечения безопасности и скорости работы сети. Для этого необходимо выбрать проверенного провайдера, оптимально настроить WireGuard и обеспечить политику безопасности, соответствующую требованиям организации.
Установка и настройка WireGuard на различных операционных системах
Рассмотрим пошаговые инструкции по установке и настройке WireGuard на различных операционных системах: Windows, macOS, Linux, iOS и Android.
Установка WireGuard в Windows
- Скачайте последнюю версию WireGuard для Windows с официального сайта https://www.wireguard.com/install/ и запустите установочный файл.
- Убедитесь в том, что вы выбрали опцию “Установить TuneTap” в процессе установки, чтобы создать сетевой интерфейс, который позволит вам использовать VPN.
- Создайте конфигурационный файл WireGuard. Вы можете создать этот файл самостоятельно или использовать онлайн-сервисы для его создания. Сохраните этот файл на диске или в облаке, чтобы иметь к нему доступ.
- Запустите WireGuard и импортируйте конфигурационный файл. Выберите этот файл и щелкните “Добавить”.
- Подключите VPN-сервер, выбрав его в WireGuard и щелкнув “Подключить”. Готово! Теперь вы можете пользоваться WireGuard на Windows.
Установка WireGuard в macOS
- Скачайте последнюю версию WireGuard для macOS с официального сайта https://www.wireguard.com/install/ и запустите установочный файл.
- Нажмите “Продолжить” и примите лицензионное соглашение.
- Нажмите “Установить”, чтобы начать установку WireGuard.
- Создайте конфигурационный файл на https://wgconfig.com/macos/ .
- Импортируйте конфигурационный файл WireGuard в клиент. Вы можете сделать это, выбрав “Настройки” в меню WireGuard или нажав на значок программы WireGuard в панели меню, выбрав “Настройки” и затем “Импортировать конфигурацию”.
- Подключитесь к серверу VPN, выбрав его в клиенте WireGuard и нажав “Подключиться”.
Установка WireGuard в Linux
- Установите WireGuard через ваш менеджер пакетов, введя следующую команду в терминале: $ sudo apt install wireguard -y
- Создайте конфигурационный файл WireGuard. Вы можете создать этот файл самостоятельно или воспользоваться онлайн-сервисами для его создания. Сохраните этот файл на диске или в облаке.
- Импортируйте конфигурационный файл WireGuard в WireGuard. Введите следующую команду в терминале: $ sudo nano /etc/wireguard/wg0.conf и добавьте свой конфигурационный файл.
- Перезапустите службу WireGuard, введя следующую команду в терминале: $ sudo systemctl restart wg-quick@wg0
- Подключитесь к VPN, введя следующую команду в терминале: $ sudo wg-quick up wg0

Установка WireGuard в iOS
- Скачайте и установите WireGuard на свое устройство из App Store.
- Создайте конфигурационный файл WireGuard, используя онлайн-сервисы или создав его самостоятельно.
- Нажмите на плюс в главном меню WireGuard, чтобы добавить новый профиль, и выберите “Создать из файла”.
- Выберите свой конфигурационный файл и нажмите “Импортировать”.
- Подключитесь к серверу VPN, выбрав его в списке и нажав на “Подключить”.
Установка WireGuard в Android
- Скачайте и установите WireGuard на ваше устройство из Google Play.
- Создайте конфигурационный файл WireGuard, используя онлайн-сервисы или создав его самостоятельно.
- Нажмите на плюс в главном меню WireGuard, чтобы создать новый профиль, и выберите “Создать из файла”.
- Выберите свой конфигурационный файл и нажмите “Импортировать”.
- Подключитесь к серверу VPN, выбрав его в списке и нажав на “Подключить”.
Установка и настройка WireGuard на различных операционных системах может быть легко выполнена, если следовать пошаговым инструкциям, представленным выше.
Примеры использования WireGuard
WireGuard открыл новые возможности для безопасной и свободной работы на интернете. Несколько примеров использования WireGuard:
- Доступ к заблокированным сайтам. WireGuard помогает обойти ограничения в интернете, позволяя получить доступ к заблокированным сайтам и сервисам в любой стране.
- Безопасный доступ к локальным сетям. WireGuard предоставляет безопасный доступ к локальным сетям, что позволяет удаленным сотрудникам работать с локальными ресурсами компаний удалённо.
- Открытый доступ к облачным ресурсам. WireGuard интегрируется с популярными облачными провайдерами, такими как AWS, Azure и Google Cloud, что позволяет пользователям безопасно получать доступ к облачным ресурсам.
Заключение и рекомендации по использованию WireGuard
WireGuard — это мощное и удобное решение организации защищенного соединения, подходящего для использования в самых разных обстоятельствах. Однако, при работе с WireGuard стоит учитывать несколько важных моментов.
Перед использованием рассматриваемого протокола необходимо убедиться в наличии обновлений протокола, чтобы обеспечить максимальную безопасность подключения.
WireGuard позволяет улучшить безопасность и удобство использования VPN-подключений. Однако, чтобы правильно использовать этот протокол, рекомендуется ознакомиться с документацией.
- Оценка читателей
- Rated 5 звезд
- Отлично
WireGuard: быстрый и надёжный протокол для VPN
Раньше VPN чаще встречалась в фильмах про шпионов, теперь же наличие собственной приватной сети — потребность почти любого бизнеса, представленного в интернете. Установка VPN поможет без проблем пользоваться зарубежными сайтами, а ещё организовать полностью безопасный канал для корпоративной или коммерческой сети.
Рассказываем про протокол для VPN WireGuard, который обгоняет по скорости и безопасности все существующие сетевые протоколы.
Что такое WireGuard
Это протокол для создания VPN — виртуальной приватной сети, используемой для зашифрованной передачи данных. WireGuard создаёт защищённый сетевой туннель поверх традиционного интернет-соединения, что обеспечивает большую безопасность и приватность.
В чём плюсы WireGuard
Это сетевой протокол для VPN, который на фоне остальных технологий туннелирования даёт лучшую защиту и большую производительность. В отличие от IKEv2, IPSec и OpenVPN, которые работают в пользовательском режиме, код WireGuard выполняется в ядре, наравне с другими файлами операционной системы.

Результаты сравнительных тестов с сайта-разработчика: WireGuard шустрее
Ещё из плюсов WireGuard:
- Малое потребление ресурсов. Протокол задействует принцип асимметричной криптографии, благодаря чему данные шифруются без ресурсоёмких операций на сервере. Это существенно снижает нагрузку. WireGuard подходит для установки на маломощные машины: например, на домашние серверы для IoT-устройств или на роутеры.
- Производительность и быстродействие. WireGuard быстрее OpenVPN и IPsec благодаря минималистичной архитектуре и оптимизации кода. При подключении к порту 1 Гбит/с пропускная способность WireGuard достигает 1011 Мбит/с, что почти в 4 раза быстрее, чем у OpenVPN.
- Низкая задержка. Ping при использовании WireGuard в 3,5 раза ниже, чем у OpenVPN. Это тоже обусловлено работой на стороне ядра: для обработки кода протоколу не требуется копировать данные из среды пользовательского режима и обратно, как это реализовано у большинства VPN. Кроме того, у WireGuard конфигурация соединения между сервером и клиентом уже предопределена, что сокращает время на подключение.
- Высокая безопасность. Протокол использует асимметричные ключи Curve25519 и Poly1305, которые обеспечивают лучшую защиту, чем RSA и AES, задействованные в остальных VPN. Ключи доступа генерируются автоматически и только для 2 конкретных устройств, что исключает их централизованное хранение и повышает безопасность протокола.
Программный код WireGuard состоит всего из 4 000 строк, поэтому его проще интегрировать. Кроме того, протокол входит в ядро Linux версии 5.6 и выше, что гарантирует высокую совместимость со всеми ОС семейства. Ещё протокол отличается гибкой документацией API для создания VPN-конфигураций: WireGuard гораздо проще подключить и настроить, чем OpenVPN и IPsec.
Как WireGuard в панели ispmanager помогает бизнесу
Подключить протокол в панели управления ispmanager можно в разделе «Настройки» — «Конфигурация ПО». Подробнее о том, как настроить VPN в ispmanager, читайте в нашем блоге.
Настройка VPN с WireGuard в разы усиливает безопасность корпоративной или коммерческой сети и открывает для бизнеса новые возможности. WireGuard для вас, если требуется:
- Защитить свои данные с помощью VPN на собственных серверах. Протокол может использоваться для безопасного удалённого доступа к файлам компании или создания полноценной приватной рабочей сети. Например, если компания юридически обязана хранить информацию только на собственных серверах, тем самым гарантируя полную конфиденциальность данных.
- Получить доступ к европейским сайтам и сервисам. Подключить VPN гораздо проще, чем арендовать свой сервер в Европе и удалённо настраивать рабочую сеть, и безопаснее, чем использовать сторонние сервисы. Это выгодное решение для компаний, которым нужен доступ к зарубежным сайтам или безопасный канал для онлайн-торговли.
- Настроить защищённую IP-телефонию. VPN с WireGuard пригодится для интернет-звонков в другие страны через свою АТС. Это расширит возможности собственного контакт-центра: усилит безопасность и конфиденциальность связи.
- Запустить собственную VPN на зарубежном сервере и продавать трафик. При наличии свободных мощностей можно монетизировать незадействованные ресурсы сервера, продавая доступ к собственной VPN. Учитывая проблемы с доступом к европейским сайтам, такая услуга будет только популярнее у компаний, занимающихся внешнеэкономической деятельностью.
WireGuard стоит рассмотреть как альтернативу уже настроенной VPN с протоколами OpenVPN и IPsec. Переход на новый протокол позволит сэкономить время и деньги на обслуживании сервера: WG проще в настройке, при этом использует меньше ресурсов.
Попробуйте ispmanager для настройки своей VPN
Наша панель поддерживает WireGuard и подойдёт для удобного управления собственным VPN-сервером. Попробуйте ispmanager для администрирования сервера — это легко и удобно.
Нас читает уже более 35 000 человек
Подпишитесь и получите скидку 10% на ispmanager!
Выбирайте интересное вам: новости ispmanager, подборка статей для начинающих веб-специалистов, всё для матёрых разработчиков или предложите свой вариант рассылки
Благодарим за интерес к рассылке от ispmanager!
На ваш почтовый адрес: отправлено письмо с просьбой подтвердить свой email.
Сразу после подтверждения почтового адреса мы вышлем вам обещанную скидку за подписку.
*Если вы не получили письмо, пожалуйста, проверьте правильно ли был указан почтовый адрес и попробуйте заполнить форму еще раз.
Общее и концептуальное описание WireGuard
Что такое WireGuard?
WireGuard® — это чрезвычайно простой, но быстрый и современный VPN, в котором используется самая современная криптография. Он нацелен на то, чтобы быть быстрее, проще, компактнее и полезнее, чем IPsec, избегая при этом огромной головной боли. Он намерен быть значительно более производительным, чем OpenVPN.
WireGuard разработан как VPN общего назначения для работы как на встроенных интерфейсах, так и на суперкомпьютерах, пригодный для многих различных ситуаций. Изначально выпущенный для ядра Linux, теперь он является кроссплатформенным (Windows, macOS, BSD, iOS, Android) и может широко развертываться. В настоящее время он находится в стадии интенсивной разработки, но уже может считаться самым безопасным, простым в использовании и самым простым решением VPN в отрасли.
Простой и легкий в использовании
WireGuard стремится быть таким же простым в настройке и развертывании, как и SSH. VPN-соединение устанавливается путем простого обмена очень простыми открытыми ключами — точно так же, как обмен ключами SSH — а все остальное прозрачно обрабатывается WireGuard. Он даже может перемещаться между IP-адресами, как и Мош. Нет необходимости управлять соединениями, беспокоиться о состоянии, управлять демонами или беспокоиться о том, что находится под капотом. WireGuard представляет собой чрезвычайно простой, но мощный интерфейс.
Криптографически надежный
WireGuard использует современную криптографию, такую как структура протокола Noise, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF и безопасные доверенные конструкции. Он делает консервативный и разумный выбор и был рассмотрен криптографами.
Минимальная возможность атаки
WireGuard был разработан с учетом простоты внедрения и простоты. Он предназначен для того, чтобы его можно было легко реализовать в очень небольшом количестве строк кода и легко проверять на наличие уязвимостей. По сравнению с такими гигантами, как Swan / IPsec или OpenVPN / OpenSSL, в которых аудит гигантских кодовых баз является непосильной задачей даже для больших групп экспертов по безопасности, WireGuard предназначен для всестороннего анализа отдельными лицами.
Высокая производительность
Сочетание чрезвычайно высокоскоростных криптографических примитивов и того факта, что WireGuard находится внутри ядра Linux, означает, что безопасная сеть может быть очень высокоскоростной. Он подходит как для небольших встраиваемых устройств, таких как смартфоны, так и для полностью загруженных магистральных маршрутизаторов.
Хорошо определен и тщательно продуман
WireGuard — это результат длительного и тщательно продуманного академического процесса, результатом которого стал технический документ, академический исследовательский документ, который четко определяет протокол и важные соображения, которые учитывались при каждом решении.
Концептуальный обзор WireGuard
Если вам нужен общий концептуальный обзор того, что такое WireGuard, читайте дальше. Затем вы можете перейти к установке.
WireGuard надежно инкапсулирует IP-пакеты через UDP. Вы добавляете интерфейс WireGuard, настраиваете его, используя свой закрытый ключ и открытые ключи ваших коллег, а затем отправляете через него пакеты. Все вопросы распределения ключей и заданных конфигураций выходят за рамки WireGuard; эти проблемы лучше оставить для других уровней, иначе мы столкнемся с раздуванием IKE или OpenVPN. Напротив, он больше имитирует модель SSH и Mosh; у обеих сторон есть открытые ключи друг друга, а затем они просто могут начать обмен пакетами через интерфейс.
Простой сетевой интерфейс WireGuard
WireGuard работает путем добавления сетевого интерфейса (или нескольких), такого как eth0 или wlan0, который называется wg0 (или wg1, wg2, wg3 и т. д.). Затем этот сетевой интерфейс можно настроить обычным образом, используя ifconfig (8) или ip-address (8), с добавлением и удалением маршрутов для него с помощью route (8) или ip-route (8), и так далее со всеми обычными сетевыми утилитами. Конкретные аспекты интерфейса WireGuard настраиваются с помощью инструмента wg (8). Этот интерфейс действует как туннельный интерфейс.
WireGuard связывает IP-адреса туннелей с открытыми ключами и удаленными конечными точками. Когда интерфейс отправляет пакет одноранговому узлу, он выполняет следующие действия:
- Этот пакет предназначен для 192.168.30.8. Какой это пир? Дай мне посмотреть … Хорошо, это для коллеги ABCDEFGH. (Или, если это не для какого-либо настроенного однорангового узла, отбросить пакет.)
- Зашифровать весь IP-пакет, используя открытый ключ однорангового узла ABCDEFGH.
- Что такое удаленная конечная точка однорангового узла ABCDEFGH? Дайте мне посмотреть … Хорошо, конечная точка — это UDP-порт 53133 на хосте 216.58.211.110.
- Отправить зашифрованные байты с шага 2 через Интернет на 216.58.211.110:53133, используя UDP.
Когда интерфейс получает пакет, происходит следующее:
- Я только что получил пакет от UDP-порта 7361 на хосте 98.139.183.24. Давайте расшифруем это!
- Он правильно расшифрован и аутентифицирован для однорангового LMNOPQRS. Хорошо, давайте вспомним, что последняя конечная точка Интернета однорангового узла LMNOPQRS — 98.139.183.24:7361 с использованием UDP.
- После расшифровки это обычный текстовый пакет с адресом 192.168.43.89. Разрешено ли одноранговому узлу LMNOPQRS отправлять нам пакеты как 192.168.43.89?
- Если да, примите пакет на интерфейсе. Если нет, удалить пакет.
Маршрутизация криптоключей в WireGuard
В основе WireGuard лежит концепция под названием Cryptokey Routing, которая работает путем связывания открытых ключей со списком IP-адресов туннеля, которые разрешены внутри туннеля. Каждый сетевой интерфейс имеет закрытый ключ и список одноранговых узлов. У каждого однорангового узла есть открытый ключ.
Открытые ключи короткие и простые, они используются одноранговыми узлами для аутентификации друг друга. Их можно передавать для использования в файлах конфигурации любым внеполосным методом, аналогично тому, как можно отправить открытый ключ SSH другу для доступа к серверу оболочки.
Например, серверный компьютер может иметь такую конфигурацию:
[Interface] PrivateKey = yAnz5TF+lXXJte14tji3zlMNq+hd2rYUIgJBgB3fBmk= ListenPort = 51820 [Peer] PublicKey = xTIBA5rboUvnH4htodjb6e697QjLERt1NAB4mZqp8Dg= AllowedIPs = 10.192.122.3/32, 10.192.124.1/24 [Peer] PublicKey = TrMvSoP4jYQlY6RIzBgbssQqY3vxI2Pi+y71lOWWXX0= AllowedIPs = 10.192.122.4/32, 192.168.0.0/16 [Peer] PublicKey = gN65BkIKy1eCE9pP1wdc8ROUtkHLF2PfAqYdyYBz6EA= AllowedIPs = 10.10.10.230/32 And a client computer might have this simpler configuration: [Interface] PrivateKey = gI6EdUSYvn8ugXOt8QQD6Yc+JyiZxIhp3GInSWRfWGE= ListenPort = 21841 [Peer] PublicKey = HIgo9xNzJMWLKASShiTqIybxZ0U3wGLiUeJ1PKf8ykw= Endpoint = 192.95.5.69:51820 AllowedIPs = 0.0.0.0/0
В конфигурации сервера каждый одноранговый узел (клиент) сможет отправлять пакеты на сетевой интерфейс с исходным IP-адресом, соответствующим его списку разрешенных IP-адресов. Например, когда пакет получен сервером от однорангового узла gN65BkIK …, после расшифровки и аутентификации, если его исходный IP-адрес 10.10.10.230, то он разрешен для интерфейса; в противном случае он удаляется.
В конфигурации сервера, когда сетевой интерфейс хочет отправить пакет одноранговому узлу (клиенту), он смотрит на IP-адрес назначения этого пакета и сравнивает его со списком разрешенных IP-адресов каждого однорангового узла, чтобы увидеть, какому одноранговому узлу его отправить. Например, если сетевому интерфейсу предлагается отправить пакет с IP-адресом назначения 10.10.10.230, он зашифрует его с помощью открытого ключа однорангового узла gN65BkIK …, а затем отправит его на последнюю конечную точку Интернета этого однорангового узла.
В конфигурации клиента его единственный одноранговый узел (сервер) сможет отправлять пакеты на сетевой интерфейс с любым исходным IP-адресом (поскольку 0.0.0.0/0 является подстановочным знаком). Например, когда пакет получен от однорангового узла HIgo9xNz …, если он правильно расшифровывает и аутентифицируется, с любым исходным IP-адресом, то он разрешен для интерфейса; в противном случае удаляется.
В конфигурации клиента, когда сетевой интерфейс хочет отправить пакет своему единственному узлу (серверу), он будет шифровать пакеты для одного однорангового узла с любым IP-адресом назначения (поскольку 0.0.0.0/0 является подстановочным знаком). Например, если сетевому интерфейсу предлагается отправить пакет с любым IP-адресом назначения, он зашифрует его, используя открытый ключ единственного однорангового узла HIgo9xNz …, а затем отправит его на последнюю конечную точку Интернета одного однорангового узла.
Другими словами, при отправке пакетов список разрешенных IP-адресов ведет себя как своего рода таблица маршрутизации, а при получении пакетов список разрешенных IP-адресов ведет себя как своего рода список управления доступом.
Это то, что мы называем таблицей маршрутизации Cryptokey: простая ассоциация открытых ключей и разрешенных IP-адресов.
Любая комбинация IPv4 и IPv6 может использоваться для любого поля. WireGuard при необходимости полностью способен инкапсулировать одно внутри другого.
Поскольку все пакеты, отправляемые через интерфейс WireGuard, зашифрованы и аутентифицированы, и поскольку существует такая тесная связь между идентификатором однорангового узла и разрешенным IP-адресом однорангового узла, системным администраторам не нужны сложные расширения брандмауэра, как в случае IPsec, но они могут просто сопоставить «с этого IP-адреса? на этом интерфейсе?» и быть уверенными, что это безопасный и подлинный пакет. Это значительно упрощает управление сетью и контроль доступа, а также дает большую уверенность в том, что ваши правила iptables действительно выполняют то, что вы для них предназначаете.
Встроенный роуминг WireGuard
Конфигурация клиента содержит начальную конечную точку его единственного партнера (сервера), так что он знает, куда отправлять зашифрованные данные, прежде чем он получит зашифрованные данные. Конфигурация сервера не имеет начальных конечных точек своих сверстников (клиентов). Это связано с тем, что сервер обнаруживает конечную точку своих сверстников, исследуя, откуда происходят правильно аутентифицированные данные.
Если сервер сам изменяет свою конечную точку и отправляет данные клиентам, клиенты обнаруживают новую конечную точку сервера и точно так же обновляют конфигурацию. И клиент, и сервер отправляют зашифрованные данные последней конечной IP-точке, для которой они аутентично дешифруют данные. Таким образом, на обоих концах есть полный IP-роуминг.
Готов к использованию в контейнерах
WireGuard отправляет и принимает зашифрованные пакеты, используя пространство имен сети, в котором изначально был создан интерфейс WireGuard. Это означает, что вы можете создать интерфейс WireGuard в своем основном сетевом пространстве имен, которое имеет доступ к Интернету, а затем переместить его в сетевое пространство имен, принадлежащее контейнеру Docker в качестве единственного интерфейса этого контейнера.
Это гарантирует, что единственный возможный способ доступа контейнера к сети — это безопасный зашифрованный туннель WireGuard.
О проекте WireGuard
Исходный код
WireGuard разделен на несколько репозиториев, размещенных в репозитории ZX2C4 Git и в других местах. Проконсультируйтесь со списком репозиториев проекта.
IRC обсуждения
Если у вас возникли проблемы с настройкой WireGuard или его использованием, лучшее место для получения помощи — это канал IRC #wireguard на Freenode. Там же мы обсуждаем задачи развития и планируем будущее проекта.
Список рассылки
Примите участие в обсуждении разработки WireGuard, присоединившись к списку рассылки. Здесь происходят все разработки. Отправляйте патчи с помощью git-send-email, аналогично стилю LKML.
Электронная почта контакт
Если вы хотите связаться с нами в частном порядке по определенной причине, вы можете связаться с нами по адресу team@wireguard.com. Однако имейте в виду, что запросы на «поддержку» намного лучше подходят для нашего IRC-канала на Freenode.
Контакт безопасности
Пожалуйста, сообщайте о любых проблемах безопасности только по адресу security@wireguard.com. Не отправляйте на этот псевдоним электронной почты вопросы, не связанные с безопасностью. Не отправляйте вопросы, связанные с безопасностью, на разные адреса электронной почты.
Лицензия WireGuard
Компоненты ядра выпускаются под лицензией GPLv2, как и само ядро Linux. Другие проекты лицензируются под MIT, BSD, Apache 2.0 или GPL, в зависимости от контекста.
Похожие статьи на сайте
- OpenVPN против WireGuard: краткое сравнение
- Общее и концептуальное описание WireGuard
- Установка и настройка WireGuard в Linux Ubuntu/Mint из репозитория ppa
WireGuard — быстрый и безопасный VPN в ядре Linux

Рис. 1. OpenVPN vs WireGuard, тест Ars Technica
WireGuard — свободный и открытый протокол виртуальных частных сетей, призванный заменить IPsec и OpenVPN. В январе 2020 года после полутора лет доработки кода всё-таки состоялось долгожданное событие — Линус Торвальдс принял VPN WireGuard в основную ветку Linux 5.6.
Очень скоро этот VPN станет частью ядра Linux — сердца операционной системы с открытым исходным кодом, на которой работает весь мир, от веб-серверов до телефонов Android и автомобилей. Это действительно важное событие, потому что WireGuard устроен на порядок проще и логичнее предыдущих VPN. В июне 2019 года получено автоматизированное криптографическое доказательство математики протокола.
VPN является важным инструментом для безопасности и конфиденциальности. По сути, он представляет собой зашифрованный канал коммуникации между двумя или более устройствами, которые позволяют маршрутизировать данные через безопасный «туннель». В компаниях используют VPN для удалённого доступа сотрудников в корпоративную сеть, а коммерческие VPN-сервисы предлагают пользователям защиту трафика от перехвата, направляя его через удалённые серверы. Это означает, что ваш провайдер, государственные спецслужбы или любые посторонние лица не могут видеть, что вы делаете в интернете. Маршрутизация трафика через удалённый сервер также может создать впечатление, что вы выходите в интернет из другого места. Это позволяет людям в некоторых странах получить доступ к сайтам, которые по каким-то причинам заблокированы.
Но VPN-соединения безопасны только в той степени, в какой безопасно само программное обеспечение. Специалисты по безопасности традиционно критически относятся к программному обеспечению VPN. Одна из причин этого заключается в том, что большинство программ для VPN невероятно сложны. Чем сложнее софт, тем сложнее провести аудит на предмет проблем безопасности.
Старые VPN-программы «слишком огромны и сложны, и в принципе невозможно просмотреть и проверить, безопасны они или нет», — говорит Ян Йонссон (Jan Jonsson), генеральный директор VPN-провайдера Mullvad, на базе которого работает встроенный VPN-сервис в браузере Firefox.
Автор WireGuard — хакер и пентестер Джейсон Доненфилд (Jason A. Donenfeld). Ему удалось написать гораздо более простой и лаконичный код, чем в большинстве других программ для VPN. Первая версия WireGuard содержала менее 4000 строк кода — по сравнению с десятками тысяч строк в других программах VPN. Это не делает WireGuard более безопасным, но значительно облегчает поиск и устранение проблем. Ключевые механизмы протокола шифрования показаны рис. 2.

Рис. 2: (а) протокол WireGuard; (b) криптографические вычисления; (с) механизм куки в WireGuard для защиты хоста от DoS-атак
Клиенты WireGuard уже выпущены для Android, iOS, MacOS, Linux и Windows. Компания Cloudflare запустила VPN-сервис Warp основан на протоколе WireGuard, и несколько коммерческих провайдеров VPN также позволяет пользователям использовать протокол WireGuard, в том числе TorGuard, IVPN, и Mullvad.
Внедрение WireGuard непосредственно в ядро, которое напрямую взаимодействует с аппаратным обеспечением, должно ещё больше ускорить работу программы. WireGuard сможет шифровать и расшифровывать данные напрямую с сетевой карты, без необходимости передавать трафик через ядро и программное обеспечение на более высоком уровне.
Официальный релиз Linux 5.6 состоится через несколько недель. После этого можно ожидать, что протокол WireGuard получит более широкое распространение в разных сервисах VPN, в том числе для защиты соединений между устройствами Интернета вещей, многие из которых работают на Linux.
Автор программы Джейсон Доненфилд зарабатывал на жизнь взломом компьютерных систем (тесты на проникновение в рамках официального договора на консалтинговые услуги). Изначально он разработал WireGuard как инструмент эксфильтрации данных, чтобы скрытно снимать данные с компьютера жертвы.
В 2012 году Джейсон переехал во Францию и, как и многие пользователи VPN, хотел выходить в интернет с американского узла. Но он не доверял существующему программному обеспечению VPN. В конце концов он понял, что может использовать свой инструмент эксфильтрации для маршрутизации трафика через компьютер своих родителей в США: «Я понял, что многие приёмы взлома систем (offensive security) на самом деле полезны и для защиты», — сказал он в интервью журналу Wired.
Доненфельд изменил традиционный подход, который десятилетиями использовали VPN и криптографический софт. Например, другие VPN-системы позволяют пользователям выбирать один из нескольких алгоритмов шифрования. Но поддержка нескольких схем шифрования делает программное обеспечение более сложным и предоставляет больше возможностей для ошибок. WireGuard берёт на себя смелость принимать некоторые решения за пользователя. Это делает программу не такой гибкой, как IPsec и OpenVPN, но зато WireGuard на порядок проще, что, по мнению сторонников, снижает вероятность ошибок как со стороны разработчиков WireGuard, так и со стороны пользователей.
Простой аудит кода — не единственная причина, по которой WireGuard привлекла к себе столько внимания. Самое большое достоинство WireGuard заключается в том, что «им приятно пользоваться, — говорит Томаш Птачек (Thomas Ptacek), исследователь в области безопасности. — Его не сложнее настроить, чем любой из сетевых инструментов, которыми уже пользуются разработчики».
WireGuard находится в одном ряду с защищённым мессенджером Signal — они входят в широкое движение по созданию лучшего, более удобного программного обеспечения, основанного на современных криптографических методах.

В 2019 году специалисты из французского Института компьютерных исследований и автоматизации провели оценку криптографии WireGuard. Они получили автоматизированное криптографическое доказательство математических методов, лежащих в основе WireGuard, хотя в самом коде всё ещё могут быть проблемы безопасности. Сейчас его проверяют разработчики Linux, а Доненфельд исправил несколько проблем в преддверии выхода нового ядра Linux 5.6 и WireGuard 1.0.
PKI-решения для малого и среднего бизнеса от удостоверяющего центра GlobalSign Подробности уточняйте у менеджеров +7 (499) 678 2210, sales-ru@globalsign.com.
- Блог компании GlobalSign
- Информационная безопасность
- Криптография
- Open source
- Браузеры
