WireGuard: как подключить и поможет ли он при блоке VPN
Когда у каждого установлено несколько VPN-сервисов, хочется что-то одно, работающее стабильно и безопасно. Такое решение вроде как есть.
Сергей Ломакин
Дата публикации: 16 янв 2023
Дата обновления: 10 фев 2024
Сергей Ломакин Редакция «Текстерры»
Протокол WireGuard представляет собой защищенный сетевой туннель. Он может использоваться двумя способами: как самостоятельный протокол или внедряться поставщиком услуг VPN. Поставщик — это сервис, которым вы пользуетесь для организации VPN-подключения на своем компьютере или телефоне (примеры таких сервисов: Hola, 1.1.1.1, Browsec, CyberGhost, NordVPN).
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 обеспечивает высокоскоростное и защищенное подключение к VPN с Proton VPN
Воспользуйтесь высокоскоростным просмотром веб-страниц, надежным подключением и комплексной безопасностью с WireGuard®. Теперь это доступно на Android, iOS, macOS и Windows.
WireGuard — это защищенный, быстрый и надежный протокол VPN
Используемый вами протокол VPN играет большую роль в обеспечении скорости, безопасности и надежности вашего подключения. WireGuard — это современный протокол VPN, который произвел революцию в сфере VPN благодаря своему чрезвычайно облегченному и открытому исходному коду. Поскольку WireGuard такой облегченный, он обеспечивает более высокую производительность по сравнению с другими протоколами VPN.
Высокоскоростная VPN
WireGuard практически мгновенно устанавливает зашифрованный туннель VPN, позволяя вам практически мгновенно подключиться к выбранному вами серверу VPN. После подключения WireGuard работает более плавно, быстро и надежно, чем другие протоколы VPN. В сочетании с нашей уникальной технологией VPN Accelerator (new window) вы можете повысить скорость более чем на 400%.
Облегченный
Протоколы VPN могут быть довольно сложными и требовать много строк кода, но только не WireGuard. Вместо OpenVPN, в котором используется более 400000 строк кода, в WireGuard используется менее 5000 строк. Это означает, что подключение к VPN, использующее WireGuard, работает быстрее, меньше расходует заряд батареи и потребляет меньше вычислительной мощности. Это также означает, что код WireGuard легко поддерживать и проверять, что повышает его безопасность.
Передовое шифрование
WireGuard использует современный криптографический шифр ChaCha20 для шифрования туннеля VPN и защиты ваших данных. Он обеспечивает совершенную прямую секретность (new window) и устойчив как к атакам методом полного перебора, так и к атакам с использованием связанных ключей.
Реализация WireGuard в Proton VPN также была изменена для использования системы double-NAT (new window) , что гарантирует защиту вашей конфиденциальности.
WireGuard — прекрасный VPN будущего?
Наступило время, когда VPN уже не является каким-то экзотическим инструментом бородатых сисадминов. Задачи у пользователей разные, но факт в том, что VPN стал нужен вообще всем.
Проблема текущих VPN решений в том, что их тяжело правильно настроить, дорого обслуживать, а так же в них полно legacy кода сомнительного качества.
Несколько лет назад канадский специалист по информационной безопасности Jason A. Donenfeld решил, что хватит это терпеть, и начал работу над WireGuard. Сейчас WireGuard готовится к включению в состав ядра Linux, он даже получил похвалы от Линуса Торвальдса и в американском сенате.
Заявленные преимущества WireGuard над другими VPN решениями:
- Простой в использовании.
- Использует современную криптографию: Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF и т.д.
- Компактный читаемый код, проще исследовать на уязвимости.
- Высокая производительность.
- Четкая и проработанная спецификация.
Неужели найдена серебрянная пуля? OpenVPN и IPSec пора закапывать? Я решил с этим разобраться, а заодно сделал скрипт для автоматической установки личного VPN сервера.
Принципы работы
Принципы работы можно описать примерно так:
- Создается WireGuard интерфейс, ему назначается приватный ключ и IP адрес. Загружаются настройки других пиров: их публичные ключи, IP адреса и т.д.
- Все IP пакеты, приходящие на WireGuard интерфейс инкапсулируются в UDP и безопасно доставляются другим пирам.
- Клиенты задают публичный IP адрес сервера в настройках. Сервер автоматически узнает внешние адреса клиентов, когда от них приходят корректно аутентифицированные данные.
- Сервер может менять публичный IP адрес не прерывая работы. При этом он отошлет оповещение подключенным клиентам и они обновят свою конфигурацию на лету.
- Используется концепт маршрутизации Cryptokey Routing. WireGuard принимает и отправляет пакеты на основании публичного ключа пира. Когда сервер расшифровывает корректно аутентифицированный пакет, проверяется его src поле. Если оно соответствует с конфигурацией allowed-ips аутентифицированного пира, то пакет принимается интерфейсом WireGuard. При отправке исходящего пакета происходит соответственная процедура: берется dst поле пакета и на основании его выбирается соответсвующий пир, пакет подписывается своим ключом, шифруется ключом пира и отправляется на remote endpoint.
Вся основная логика WireGuard занимает менее 4 тысяч строк кода, тогда как OpenVPN и IPSec имеют сотни тысяч строк. Для поддержки современных криптоалгоритмов предлагается включить в состав ядра Linux новый криптографический API Zinc. В данный момент идет обсуждение, насколько это удачная идея.
Производительность
Максимальное преимущество в производительности (по сравнению с OpenVPN и IPSec) будет заметно на Linux системах, так как там WireGuard реализован в виде модуля ядра. Кроме этого поддерживаются macOS, Android, iOS, FreeBSD и OpenBSD, но в них WireGuard выполняется в userspace со всеми вытекающими последствиями для производительности. Поддержку Windows обещают добавить в ближайшем будущем.
Результаты бенчмарков с официального сайта:
Мой опыт использования
Я не эксперт по настройке VPN. Однажды настраивал OpenVPN ручками и это было очень муторно, а IPSec даже и не пытался. Слишком много решений нужно принимать, очень легко выстрелить себе в ногу. Поэтому я всегда пользовался готовыми скриптами для настройки сервера.
Так вот, WireGuard, с моей точки зрения, вообще идеален для пользователя. Все низкоуровневые решения приняты в спецификации, поэтому процесс подготовки типичной VPN инфраструктуры занимает всего несколько минут. Нафакапить в конфигурации практически невозможно.
Процесс установки детально описан на официальном сайте, отдельно хочется отметить отличную поддержку OpenWRT.
Генерируются ключи шифрования утилитой wg :
SERVER_PRIVKEY=$( wg genkey ) SERVER_PUBKEY=$( echo $SERVER_PRIVKEY | wg pubkey ) CLIENT_PRIVKEY=$( wg genkey ) CLIENT_PUBKEY=$( echo $CLIENT_PRIVKEY | wg pubkey )
Далее, нужно создать серверный конфиг /etc/wireguard/wg0.conf со следующим содержанием:
[Interface] Address = 10.9.0.1/24 PrivateKey = $SERVER_PRIVKEY [Peer] PublicKey = $CLIENT_PUBKEY AllowedIPs = 10.9.0.2/32
и поднять туннель скриптом wg-quick :
sudo wg-quick up /etc/wireguard/wg0.conf
В системах с systemd вместо этого можно использовать sudo systemctl start wg-quick@wg0.service .
На клиентской машине, создать конфиг /etc/wireguard/wg0.conf :
[Interface] PrivateKey = $CLIENT_PRIVKEY Address = 10.9.0.2/24 [Peer] PublicKey = $SERVER_PUBKEY AllowedIPs = 0.0.0.0/0 Endpoint = 1.2.3.4:51820 # Внешний IP сервера PersistentKeepalive = 25
И точно так же поднять туннель:
sudo wg-quick up /etc/wireguard/wg0.conf
Осталось настроить NAT на сервере, чтобы клиенты могли выходить в Интернет, и все готово!
Такую простоту использования и компактность кодовой базы удалось достичь за счет отказа от функционала дистрибьюции ключей. Здесь нет сложной системы сертификатов и всего этого корпоративного ужаса, короткие ключи шифрования распространяются примерно как SSH ключи. Но в связи с этим возникает проблема: WireGuard будет не так просто внедрять в некоторых уже существующих сетях.
Из недостатков стоит отметить, что WireGuard не заработает через HTTP proxy, поскольку в качестве транспорта есть только протокол UDP. Возникает вопрос, возможно ли будет обфусцировать протокол? Конечно, это не прямая задача VPN, но для OpenVPN, например, существуют способы маскировки под HTTPS, что помогает жителям тоталитарных стран полноценно пользоваться Интернетом.
Выводы
Подводя итог, это очень интересный и перспективный проект, можно уже сейчас использовать его на личных серверах. Какой профит? Высокая производительность на Linux системах, простота настройки и поддержки, компактная и читабельная кодовая база. Однако, бросаться переводить комплексную инфраструктуру на WireGuard еще рано, стоит подождать включение в состав ядра Linux.
Для экономии своего (и вашего) времени я разработал автоматический установщик WireGuard. С его помощью можно поднять личный VPN для себя и своих знакомых даже ничего в этом не понимая.