WireGuard, Tailscale или Headscale: что выбрать для VPS
Tailscale использует WireGuard и добавляет сервер координации: узлы, NAT и политики доступа. Сравните затраты и выберите вариант для своего VPS.
WireGuard и Tailscale: краткий ответ
WireGuard и Tailscale — это не выбор между двумя протоколами, потому что Tailscale использует WireGuard. Tailscale применяет то же шифрование и тот же туннель, а затем добавляет плоскость управления: сервер координации, который обменивается открытыми ключами, выдает адреса, устанавливает соединения через NAT (трансляцию сетевых адресов) и применяет политику доступа. Вы выбираете, какую часть этой координации хотите выполнять самостоятельно.
Есть три однозначных варианта. Используйте обычный WireGuard, если у вас один сервер и несколько клиентов, которые подключаются к нему. Используйте Tailscale, если хотите, чтобы каждая машина могла обращаться к любой другой без файла конфигурации, который нужно поддерживать. Используйте Headscale, если вам нужна такая mesh-сеть, но вы не хотите, чтобы список узлов хранился у сторонней организации.
Что на самом деле дает плоскость управления
В обычном WireGuard нет обнаружения узлов. Каждый узел представлен блоком текста, который вы вводите вручную: открытым ключом, строкой AllowedIPs и строкой Endpoint, если этот узел доступен. Добавление одной машины в сеть из десяти машин означает редактирование десяти конфигурационных файлов, потому что каждой стороне нужен ключ другой стороны. Поэтому почти каждая самостоятельно размещенная конфигурация WireGuard использует топологию «звезда»: один сервер с публичным IP-адресом и клиенты, которые взаимодействуют только с ним.
Плоскость управления устраняет необходимость редактировать конфигурации. Каждый узел регистрируется один раз, получает адрес из диапазона 100.64.0.0/10 CGNAT (carrier grade NAT) и получает открытые ключи узлов, с которыми ему разрешено взаимодействовать. Туннель по-прежнему устанавливается напрямую между двумя узлами WireGuard, а ваш трафик не проходит через сервер координации. Сервер передает только метаданные: какие узлы существуют, какому узлу принадлежит каждый ключ и каким узлам разрешено взаимодействовать друг с другом.
Это дает три конкретных преимущества.
Обход NAT. Два ноутбука за двумя домашними маршрутизаторами не имеют общего публичного IP-адреса, через который они могли бы взаимодействовать. Tailscale использует STUN (session traversal utilities for NAT), чтобы определить внешний адрес и порт каждой стороны. Затем обе стороны одновременно отправляют пакеты, чтобы каждый маршрутизатор сначала увидел исходящий поток и принял ответ. Если это не удается, трафик переключается на ретранслятор DERP, запущенный Tailscale. Ваши данные остаются зашифрованными сквозным шифрованием при передаче через ретранслятор, потому что ретранслятор не располагает ключами. Выполните tailscale status, и в строке каждого узла будет указано direct или relay. Выполните tailscale netcheck, чтобы узнать, какой ретранслятор находится ближе всего и разрешает ли ваша сеть UDP вообще.
Ротация ключей с истечением срока действия. Срок действия ключей WireGuard не истекает. Ключ, выпущенный три года назад, будет работать постоянно, пока вы вручную не удалите блок узла. Вместо этого Tailscale ограничивает срок действия ключей узлов. По состоянию на July 2026 срок действия по умолчанию для новой tailnet составляет 180 дней. Машина, которая не прошла повторную аутентификацию, перестает подключаться. Для сервера или subnet router, на котором некому выполнить вход, вы можете отключить истечение срока действия отдельно для этого устройства.
Политики вместо маршрутизации. В обычном WireGuard AllowedIPs одновременно является таблицей маршрутизации и списком управления доступом. Поэтому правило «alice может обращаться к базе данных» приходится задавать как диапазон IP-адресов. Tailscale хранит отдельный файл политик, в котором правила ссылаются на пользователей, группы и теги. Правило может разрешить tag:laptop доступ к tag:db на порту 5432 и запретить все остальное. Это правило продолжит действовать, даже если машина получит новый адрес.
Какие затраты связанны с сервером управления
Сервер координации знает сведения о вашей сети. Он хранит открытый ключ каждого узла, имя каждого узла, выданные адреса и политики. При использовании размещенного Tailscale этим сервером управляет сторонняя компания. Она не может прочитать ваши пакеты, поскольку закрытые ключи WireGuard остаются на ваших компьютерах. Однако ей видна структура вашей сети. Возможность подключаться также зависит от доступности ее сервиса и состояния вашей учетной записи.
Есть и вторая статья затрат, которую легко не заметить. Tailscale работает как демон на каждом компьютере. Поэтому его необходимо обновлять и устанавливать исправления на каждом компьютере. Обычный WireGuard в Ubuntu 24.04 — это модуль ядра, который поставляется вместе с дистрибутивом и обновляется вместе с ядром.
Третья статья затрат — оплата. По состоянию на July 2026 тариф Personal бесплатен и поддерживает неограниченное число устройств для 6 пользователей, Standard стоит $8 за пользователя в месяц, а Premium — $18 за пользователя в месяц. Для семьи использование остается бесплатным. Для команды из 10 человек — нет.
Когда обычный WireGuard является правильным выбором
Выбирайте обычный WireGuard, если топология действительно имеет вид «концентратор и узлы». Один VPS с публичным IP-адресом, три или четыре устройства, которые подключаются к нему, и отсутствие требования, чтобы эти устройства имели доступ друг к другу. Конфигурация помещается на одном экране. Не требуется обновлять отдельный демон, нельзя потерять учетную запись, и между вами и сервером нет внешнего сервиса.
Это также правильный выбор, если вы хотите понять уровень, на котором построено все остальное. В статье Самостоятельное развертывание VPN WireGuard на VPS рассмотрены генерация ключей, wg0.conf, IP forwarding, NAT и сбои рукопожатия. Все эти механизмы по-прежнему работают под уровнем tailnet. Если вы все еще рассматриваете более старый вариант, в статье WireGuard и OpenVPN: сравнение описаны четыре случая, в которых OpenVPN сохраняет преимущество.
Установка выполняется быстро:
sudo apt update && sudo apt install -y wireguard
sudo modprobe wireguard && echo okОбычный WireGuard перестает быть удобным, как только каждому устройству требуется доступ ко всем остальным устройствам. Полная mesh-топология из N узлов требует N умножить на N минус один блок peer. Для шести устройств это тридцать блоков, которые нужно вручную поддерживать синхронизированными. Дублирующаяся запись AllowedIPs незаметно перенаправляет трафик от узла, который добавил ее первым, и при этом нигде не выводится сообщение об ошибке.
Когда Tailscale является правильным выбором
Выбирайте Tailscale, если машины перемещаются между сетями. Это ноутбуки в гостиничных сетях, телефон с мобильным интернетом и домашний сервер за маршрутизатором, которым вы не управляете. Именно в таких случаях обычный WireGuard работает плохо, потому что ни у одной из сторон нет стабильной общедоступной конечной точки, которую можно указать в Endpoint.
Установка клиента выполняется одной командой из официального установщика:
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
tailscale statustailscale up выводит URL. Откройте его и войдите в систему, после чего машина подключится к сети. Копировать ключ не требуется. Также не нужно открывать входящий порт, поскольку демон устанавливает исходящее соединение с сервером координации и поддерживает его открытым. Поэтому узел Tailscale работает даже в сети, где вы вообще не управляете брандмауэром.
После этого основную работу выполняют 2 настройки. Маршрутизатор подсети публикует целую локальную сеть в сети Tailscale, поэтому не требуется устанавливать клиент на каждое устройство:
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, пока вы не зададите этот параметр.
Узел выхода направляет весь трафик клиента через одну машину. Это полнотуннельный режим, который обычно имеют в виду под «VPN»:
sudo tailscale set --advertise-exit-nodeКогда Headscale является правильным выбором
Headscale — это реализация сервера координации с открытым исходным кодом. Она работает на принадлежащем вам VPS. Официальные клиенты Tailscale подключаются к нему, а не к размещаемой службе:
sudo tailscale up --login-server https://headscale.example.comПуть передачи данных не меняется. По-прежнему используется WireGuard, а при наличии такой возможности сети узлы по-прежнему подключаются напрямую друг к другу. Меняется только то, что список узлов, ключи и политики хранятся в файле SQLite на принадлежащем вам диске. Никто извне не может увидеть структуру вашей сети, отключить вашу учетную запись или выставить плату за каждого пользователя.
За это приходится платить реальной административной работой. Теперь вы запускаете общедоступную службу HTTPS. Для нее нужны имя DNS, сертификат и обратный прокси, который корректно передает обновления WebSocket. Вы отвечаете за ее доступность. Если сервер координации недоступен, новые узлы не могут зарегистрироваться, а существующие узлы не могут узнать об изменениях. Headscale также имеет версию ниже 1.0, а его промежуточные выпуски сопровождались несовместимыми изменениями. Поэтому перед каждым обновлением изучайте журнал изменений. В статье Запуск Headscale в качестве собственного сервера управления Tailscale описаны установка, config.yaml, предварительно авторизованные ключи и порты, которые нужно открыть.
Есть один нюанс, который часто обнаруживают слишком поздно. Headscale не поставляется с глобальной сетью ретрансляторов Tailscale. Если два узла не могут подключиться напрямую, можно включить встроенный ретранслятор на собственном сервере или указать в конфигурации другой ретранслятор. При этом такой ретранслятор представляет собой один сервер в одном регионе, а не глобальную сеть серверов. Узлы на другом конце планеты ощутят эту разницу.
Как принять решение за один проход
Определите, сколько машин должны связываться друг с другом. Если все они взаимодействуют только с сервером, обычный WireGuard требует меньше программного обеспечения и дает тот же результат.
Проверьте, есть ли у машин стабильные публичные адреса. Если большинство из них находится за NAT, который вы не контролируете, вам нужна плоскость управления, поскольку проброс соединений через NAT — самая сложная часть. Заново реализовывать ее не стоит.
Определите, кому разрешено знать структуру вашей сети. Если внешние компании не должны получать эту информацию или количество пользователей делает оплату за каждое рабочее место слишком дорогой, используйте Headscale. При этом вам придется самостоятельно обслуживать сервер управления.
Решение можно изменить без больших затрат. Во всех трех вариантах используется один и тот же протокол плоскости передачи данных. Поэтому переход от обычного WireGuard к скоординированной mesh-сети требует установки клиента, а не переработки архитектуры. Переход с Tailscale на Headscale сводится к повторной регистрации каждого узла на другом сервере входа.
Что не обеспечивает ни один из трех вариантов
Ни один из них не является firewall. Туннель определяет, какие пакеты передаются, но не определяет, какие службы принимают соединения. Сервер, доступный через туннель, по-прежнему доступен из интернета через любой оставленный открытым порт. Поэтому продолжайте использовать правила firewall 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 большую часть времени подключаются напрямую, а при блокировке сетью сквозного соединения переключаются на ретранслятор. Ретранслируемый путь увеличивает задержку. Проверьте свой путь с помощью tailscale ping <node>: эта команда показывает, является ли маршрут прямым или ретранслируемым. Также можно использовать iperf3 через туннель.