WireGuard, Tailscale или Headscale: что выбрать?
Сравнение протокола WireGuard с сервисами Tailscale и Headscale. Узнайте, когда достаточно ручной настройки, а когда требуется координационный сервер для управления mesh-сетью.
WireGuard против Tailscale: краткий ответ
Выбор между WireGuard и Tailscale — это не выбор между двумя протоколами, так как Tailscale и есть WireGuard. Tailscale использует то же шифрование и те же туннели, но добавляет к ним плоскость управления: координационный сервер, который обменивается публичными ключами, распределяет адреса, выполняет пробивку NAT (network address translation) и применяет политики доступа. Вы выбираете лишь то, какой объем этой координации вы готовы поддерживать самостоятельно.
Существует три честных ответа. Используйте обычный WireGuard, если у вас один сервер и несколько клиентов, которые подключаются к нему. Используйте Tailscale, если вы хотите, чтобы каждая машина могла связаться с любой другой без необходимости поддерживать файлы конфигурации. Используйте Headscale, если вам нужна такая mesh-сеть, но вы не хотите, чтобы третья сторона хранила список ваших узлов.
Что на самом деле дает control plane
Обычный WireGuard не имеет механизмов обнаружения узлов. Каждый узел — это блок текста, который вы пишете вручную: открытый ключ, строка AllowedIPs и Endpoint, если этот узел доступен. Добавление одной машины в сеть из десяти означает редактирование десяти конфигурационных файлов, так как каждая сторона должна знать ключ другой. Именно поэтому почти все self-hosted настройки WireGuard работают по схеме «звезда»: один сервер с публичным IP и клиенты, которые общаются только с ним.
Control plane избавляет от ручного редактирования. Каждый узел регистрируется один раз, получает адрес из диапазона 100.64.0.0/10 CGNAT (carrier grade NAT) и узнает открытые ключи узлов, к которым ему разрешен доступ. Туннель по-прежнему остается прямым соединением WireGuard между двумя узлами, и ваш трафик никогда не проходит через сервер координации. Сервер передает только метаданные: кто существует, какой у них ключ и кому с кем разрешено общаться.
Из этого следуют три конкретных преимущества.
NAT traversal. Два ноутбука за двумя домашними роутерами не имеют публичных IP-адресов. Tailscale использует STUN (session traversal utilities for NAT) для обнаружения внешнего адреса и порта каждой стороны, после чего обе стороны отправляют пакеты одновременно, чтобы каждый роутер сначала увидел исходящий поток и принял ответ. Если это не удается, трафик переключается на DERP-релей — зашифрованный ретранслятор, управляемый Tailscale. Ваши данные остаются зашифрованными методом end-to-end при прохождении через релей, так как у релея нет ключей. Запустите tailscale status, и в каждой строке узла будет указано direct или relay. Запустите tailscale netcheck, чтобы увидеть, какой релей находится ближе всего и разрешает ли ваша сеть UDP в принципе.
Ротация ключей с истечением срока действия. Ключи WireGuard никогда не устаревают. Ключ, который вы выпустили три года назад, будет работать вечно, пока вы не удалите блок узла вручную. Tailscale вместо этого ограничивает срок действия ключей узлов, и по состоянию на июль 2026 года стандартный срок действия в новой tailnet составляет 180 дней. Машина, которая не прошла повторную аутентификацию, перестает подключаться. Вы можете отключить истечение срока действия для каждого устройства отдельно, например, для сервера или subnet router, к которым некому подойти для входа в систему.
Политики вместо маршрутизации. В обычном WireGuard AllowedIPs одновременно является и таблицей маршрутизации, и списком контроля доступа, поэтому правило «alice может получить доступ к базе данных» приходится выражать через диапазон IP-адресов. Tailscale использует отдельный файл политик, где правила оперируют именами пользователей, групп и тегов. Правило может гласить, что tag:laptop может обращаться к tag:db по порту 5432 и больше ни к чему, и это правило сохраняется даже при получении машиной нового адреса.
Цена использования control plane
Сервер координации обладает информацией о вашей сети. Он хранит публичные ключи всех узлов, их имена, выданные адреса и политики доступа. При использовании облачной версии Tailscale эта информация находится у сторонней компании. Ваши пакеты остаются для них нечитаемыми, так как приватные ключи WireGuard хранятся только на ваших машинах, однако структура вашей сети им известна. Кроме того, возможность подключения зависит от работоспособности их сервиса и статуса вашей учетной записи. Оценка рисков зависит от того, что именно злоумышленник мог бы предпринять в случае компрометации сервера координации или кражи учетных данных, поэтому модель доверия Tailscale заслуживает внимательного изучения.
Существует и вторая цена, которую легко упустить из виду. Tailscale — это демон, работающий на каждом устройстве, поэтому вам придется поддерживать актуальность этого ПО на всех узлах. Обычный WireGuard в Ubuntu 24.04 представляет собой модуль ядра, который поставляется вместе с дистрибутивом и обновляется вместе с самим ядром.
Третья цена — это биллинг. По состоянию на июль 2026 года тариф Personal бесплатен и поддерживает неограниченное количество устройств для 6 пользователей, тариф Standard стоит 8 долларов за пользователя в месяц, а Premium — 18 долларов за пользователя в месяц. Для частного использования сервис остается бесплатным, но для команды из десяти человек — уже нет. Вопрос о том, перейдете ли вы эту черту, зависит от количества учетных записей, а не устройств, поэтому условия бесплатного тарифа стоит изучить до того, как вы пригласите седьмого пользователя.
Когда обычный WireGuard — верное решение
Выбирайте обычный WireGuard, если топология сети действительно представляет собой «звезду» (hub and spoke). Один VPS с публичным IP, три или четыре устройства, которые подключаются к нему, и отсутствие необходимости в том, чтобы эти устройства связывались друг с другом. Конфигурация помещается на одном экране, нет демона для обновления, нет учетной записи, которую можно потерять, и никакой сторонний сервис не стоит между вами и вашим сервером.
Это также верное решение, если вы хотите понять уровень, на котором строится всё остальное. Самостоятельное развертывание VPN на базе WireGuard на VPS подробно описывает генерацию ключей, wg0.conf, IP forwarding, NAT и ошибки рукопожатия (handshake), и каждый из этих механизмов продолжает работать под капотом tailnet. Если вы всё ещё рассматриваете более старый вариант, WireGuard против OpenVPN охватывает четыре случая, в которых OpenVPN сохраняет преимущество.
Установка выполняется быстро:
sudo apt update && sudo apt install -y wireguard
sudo modprobe wireguard && echo okОбычный WireGuard перестает быть удобным в тот момент, когда каждое устройство должно иметь доступ к каждому другому устройству. Полносвязная топология (full mesh) из N узлов требует N умножить на N минус один блоков описания пиров. При шести устройствах это тридцать блоков, которые нужно синхронизировать вручную, а дублирующая запись AllowedIPs будет молча перехватывать трафик у того пира, который был добавлен первым, при этом никаких ошибок в логах не появится.
Когда Tailscale — подходящее решение
Выбирайте Tailscale, если устройства перемещаются. Ноутбуки в сетях отелей, телефон с мобильным интернетом, домашний сервер за роутером, который вы не контролируете. Это именно те случаи, с которыми обычный WireGuard справляется плохо, так как ни у одной из сторон нет стабильной публичной точки доступа, которую можно было бы указать в Endpoint.
Установка клиента выполняется одной командой из официального инсталлятора:
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
tailscale statustailscale up выводит URL. Откройте его, авторизуйтесь, и устройство будет добавлено в сеть. Не нужно копировать ключи или открывать входящие порты, так как демон устанавливает исходящее соединение с сервером координации и поддерживает его открытым. Именно поэтому узел Tailscale работает в сети, где вы вообще не контролируете брандмауэр.
После этого основную часть полезной работы выполняют две настройки. Маршрутизатор подсети (subnet router) анонсирует всю локальную сеть (LAN) в общую сеть, поэтому вам не нужно устанавливать клиент на каждое устройство:
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf
sudo tailscale set --advertise-routes=192.0.2.0/24Маршрут остается неактивным, пока вы не одобрите его в панели администратора, что сделано намеренно: узел не может самостоятельно внедрить маршрут в вашу сеть. Клиентам на Linux также требуется sudo tailscale set --accept-routes, так как Linux по умолчанию не принимает анонсированные маршруты. Поэтому маршрут, который выглядит одобренным на стороне сервера, не будет работать на ноутбуке с Linux, пока вы не примените эту настройку. Если вам нужна именно такая конфигурация, в запуске маршрутизатора подсети на VPS пошагово описаны процесс одобрения и настройки пересылки трафика в порядке, который предотвращает ситуацию, когда маршрут работает лишь частично.
Выходной узел (exit node) направляет весь трафик клиента через одну машину. Это поведение полного туннеля, которое обычно и имеют в виду под термином «VPN»:
sudo tailscale set --advertise-exit-nodeЭтот флаг — самая простая часть. В превращении VPS в выходной узел описано, что делать дальше: одобрение маршрута в панели администратора, а также исправление поведения DNS и IPv6, из-за которых в противном случае трафик может уходить не через тот интерфейс. Если вам нужно получить доступ к одному веб-сервису, а не ко всей сети, serve и funnel позволяют выставить HTTPS перед одним локальным портом — либо только для tailnet, либо с доступом из публичного Интернета.
Когда Headscale — подходящее решение
Headscale — это реализация сервера координации с открытым исходным кодом, которую вы запускаете на собственном VPS. Официальные клиенты Tailscale подключаются к нему вместо облачного сервиса:
sudo tailscale up --login-server https://headscale.example.comПуть передачи данных остаётся прежним. Это всё тот же WireGuard, работающий напрямую между узлами, если это позволяет сеть. Изменяется лишь то, что список узлов, ключи и политики хранятся в файле SQLite на вашем диске. Никто извне не может увидеть структуру вашей сети, заблокировать учётную запись или выставить счёт за количество пользователей.
Цена этого — необходимость самостоятельного обслуживания. Вы запускаете публичный HTTPS-сервис, а значит, вам потребуются доменное имя, сертификат и reverse proxy, корректно передающий WebSocket-соединения. Вы отвечаете за доступность сервера: если сервер координации недоступен, новые узлы не смогут зарегистрироваться, а существующие — узнать об изменениях. Headscale всё ещё находится в стадии разработки до версии 1.0, и в минорных релизах встречаются изменения, нарушающие обратную совместимость, поэтому перед каждым обновлением читайте changelog. В статье Запуск Headscale в качестве собственного сервера управления Tailscale описаны установка, config.yaml, ключи предварительной аутентификации и порты, которые необходимо открыть.
Один нюанс часто обнаруживается слишком поздно. В Headscale нет глобальной сети ретрансляторов (relay), как в Tailscale. Если два узла не могут соединиться напрямую, вам нужно либо включить встроенный ретранслятор на своём сервере, либо указать в конфигурации другой, но такой ретранслятор — это один узел в одном регионе, а не распределённая по всему миру сеть. Узлы, находящиеся на другом конце планеты, почувствуют разницу в скорости. Если вы не хотите настраивать этот компонент самостоятельно, self-hosting NetBird — это альтернативный способ оставить плоскость управления (control plane) под своим контролем, так как скрипт быстрого запуска разворачивает сервисы управления, сигнализации и ретрансляции на одном VPS.
Как принять решение за один проход
Спросите, сколько машин должны взаимодействовать друг с другом. Если ответ заключается в том, что все они общаются только с сервером, обычный WireGuard потребует установки меньшего количества ПО для достижения того же результата.
Спросите, имеют ли машины стабильные публичные адреса. Если большинство из них находится за NAT, который вы не контролируете, вам потребуется control plane, так как пробитие NAT (hole punching) — это сложная задача, которую не стоит реализовывать самостоятельно.
Спросите, кто может знать топологию вашей сети. Если ответ исключает сторонние компании или количество пользователей делает оплату за каждое рабочее место невыгодной, используйте Headscale и примите тот факт, что теперь вы сами обслуживаете сервер управления. Если именно стоимость услуг является решающим фактором, выполните расчеты перед миграцией, так как сколько на самом деле платит команда вашего размера зависит от количества учетных записей, а не от количества используемых машин, и эти два числа редко совпадают.
Вы можете сменить решение с минимальными затратами. Поскольку data plane во всех трех случаях использует один и тот же протокол, переход от обычного WireGuard к координированной mesh-сети требует лишь установки клиента, а не перепроектирования системы. Переход с Tailscale на Headscale сводится к перерегистрации каждого узла на другом сервере авторизации.
Чего не дают эти три решения
Ни одно из них не является межсетевым экраном. Туннель определяет, какие пакеты будут переданы, но не управляет тем, какие службы ожидают соединений. Сервер, доступный через туннель, по-прежнему доступен из интернета через любой открытый порт, поэтому продолжайте использовать правила UFW на VPS по их прямому назначению. Файл политик Tailscale ограничивает доступ других узлов, но никак не влияет на публичный интерфейс.
Ни одно из этих решений не обеспечивает аутентификацию на уровне отдельных служб и не ведет журнал действий пользователя после подключения. Рассматривайте все три инструмента как транспортный уровень, а проверки авторизации выполняйте на стороне приложения.
FAQ
Является ли Tailscale просто WireGuard с дополнительными настройками?
Tailscale использует протокол WireGuard для передачи данных, поэтому шифрование и сам туннель идентичны. Tailscale добавляет уровень координации: обмен ключами, назначение адресов, обход NAT с помощью STUN и ретрансляторов DERP, истечение срока действия ключей и файл политик, где вместо диапазонов IP-адресов используются имена пользователей. Это те компоненты, которые в обычном WireGuard вы настраиваете самостоятельно, и именно они усложняются при перемещении машин между сетями.
Проходит ли мой трафик через серверы Tailscale?
Обычно нет. Узлы соединяются напрямую друг с другом после того, как сервер координации установит между ними связь, и tailscale status показывает direct в строках этих узлов. Если прямое соединение установить не удаётся, трафик переключается на ретранслятор DERP, и в строке отображается relay. Даже в этом случае ретранслятор передаёт только зашифрованные пакеты и не имеет доступа к вашим закрытым ключам WireGuard, поэтому он не может прочитать содержимое трафика. Запустите tailscale netcheck, чтобы проверить, не блокирует ли ваша сеть UDP-трафик, необходимый для прямых соединений.
Могу ли я использовать Headscale с официальными приложениями Tailscale?
Да. Headscale использует тот же протокол управления, поэтому официальные клиенты подключаются с помощью sudo tailscale up --login-server https://headscale.example.com. Настольные и мобильные приложения также можно перенаправить на пользовательский сервер авторизации, хотя настройки на каждой платформе находятся в разных местах, а мобильные приложения чаще требуют определённой версии. Протестируйте работу на одном телефоне, прежде чем переносить всю сеть.
Нужно ли мне открывать порты для Tailscale или Headscale?
Клиенту Tailscale не нужны входящие порты, так как он инициирует исходящее соединение к серверу координации и поддерживает его открытым. Самостоятельно развёрнутому серверу Headscale требуются входящие порты: 443 для протокола управления, 80 при использовании HTTP-01 для получения сертификатов и 3478/udp только при включении встроенного ретранслятора. Обычному WireGuard необходимо открыть порт для прослушивания UDP (обычно 51820) на сервере и на любом внешнем сетевом брандмауэре вашего провайдера.
Какой из этих трёх вариантов самый быстрый?
Пропускная способность одинакова, так как все три варианта передают пакеты с помощью WireGuard. Разница проявляется в скорости установки соединения и качестве пути. Обычный WireGuard с корректным Endpoint всегда соединяется напрямую. Tailscale и Headscale в большинстве случаев соединяются напрямую, а при блокировке технологии hole punching переключаются на ретранслятор, что увеличивает задержку. Оцените свой путь с помощью tailscale ping <node>, который показывает, является ли маршрут прямым или через ретранслятор, либо с помощью iperf3 через туннель. Если полученное значение значительно ниже скорости вашего канала при прямом соединении, проблема не в выборе между этими тремя вариантами, а в несоответствии MTU пути, которое проявляется одинаково как с системой управления, так и без неё.