VPN перестал быть экзотическим инструментом, используемым только бородатыми сисадминами. В наши дни VPN становится неотъемлемой необходимостью для многих пользователей. Разберемся в том, что такое протокол Wireguard. Если долго читать, кратко - протокол отличный, опережает конкурентов по всем параметрам, но очень легко подаергается блокировкам властей. В РФ большинство сервисов, работающих на этом протоколе, уже заблокированы.
Основная проблема с существующими решениями VPN заключается в их сложности настройки, дорогом обслуживании и присутствии устаревшего кода низкого качества. Несколько лет назад канадский специалист по информационной безопасности Джейсон А. Доненфельд решил изменить эту ситуацию и начал работу над WireGuard. В настоящее время WireGuard готовится к включению в ядро Linux, и он даже получил похвалу от Линуса Торвальдса и поддержку в американском сенате.
Основные преимущества WireGuard по сравнению с другими решениями VPN включают:
- Простоту использования.
- Использование современных криптографических методов, таких как протокол Noise, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF и другие.
- Компактный и читаемый код, который упрощает процесс поиска уязвимостей.
- Высокую производительность.
Принцип работы WireGuard можно описать следующим образом:
- Создается интерфейс WireGuard, которому присваивается приватный ключ и IP-адрес. Затем загружаются настройки других узлов, включая их публичные ключи и IP-адреса.
- Все IP-пакеты, поступающие на интерфейс WireGuard, инкапсулируются в протокол UDP и безопасно доставляются другим узлам.
- Клиенты указывают публичный IP-адрес сервера в своих настройках. Сервер автоматически определяет внешние адреса клиентов, когда они предоставляют корректные аутентификационные данные.
- Сервер может изменять свой публичный IP-адрес без прерывания работы, и он информирует подключенных клиентов, чтобы они могли обновить свою конфигурацию на лету.
- Применяется концепция маршрутизации Cryptokey Routing, которая позволяет WireGuard принимать и отправлять пакеты на основе публичных ключей узлов. Когда сервер расшифровывает корректно аутентифицированный пакет, он проверяет его поле src. Если оно соответствует настройкам allowed-ips у аутентифицированного узла, то пакет принимается интерфейсом WireGuard. При отправке исходящего пакета происходит аналогичная процедура: определяется поле dst пакета, выбирается соответствующий узел, пакет подписывается собственным ключом, шифруется ключом узла и отправляется на удаленный конечный узел.
Итак, WireGuard - это увлекательный и перспективный проект, который уже сегодня можно использовать на личных серверах. Он обеспечивает высокую производительность на системах Linux, легкость настройки и поддержки, а также имеет компактный и читаемый код.
Однако, у всего есть свои недостатки. Протокол Wireguard очень сильно подвержен блокировкам. Большинство VPN-сервисов, работающих на Wireguard уже заблокированы в РФ. Вместо него сейчас переходят на современные протоколы, имеющие защиту от блокировок - SOCKS5.
Такие протоколы, например, используют в BUBU VPN. Они все еще работают на территории РФ, благодаря протоколам SOCKS5, предлагают множество серверов и доступные цены.