Tailscale: mesh VPN для домашней сети

Ну что, давай сразу к делу. Если у тебя больше одного сервера, рано или поздно встаёт вопрос: как их соединить, чтобы они видели друг друга и при этом не торчали наружу? Пробовал WireGuard вручную — каждый пир прописывать, ключи гонять, порты открывать. Работает, да. Но когда серверов становится три-четыре, плюс ноутбук и телефон, начинается ад.
Вот сидишь и думаешь: может, openVPN поднять? Ну его, там конфиги страшные. Или ZeroTier? Тоже вариант, но мне Tailscale зашёл больше. Почему — расскажу.
Tailscale решил эту проблему за пять минут. Установил на все машины, залогинился — и они уже в одной сети. Без открытых портов, без статических IP, без танцев с бубном. Магия? Нет, WireGuard под капотом, но с автоматической координацией через DERP-релеи.
Я ставил его на всё подряд: Proxmox хосты, LXC контейнеры, OpenWRT на VM200. Везде работает из коробки. Даже на телефоне поставил — теперь захожу в админку Proxmox из метро. Представляешь? Сижу в вагоне, смотрю нагрузку на сервере через Tailscale SSH. Пару лет назад я бы за такое убил.
Главное, что я понял: Tailscale — это не про безопасность (хотя шифрование там на уровне WireGuard, то есть аггрейд). Это про удобство. Когда перестаёшь думать о сети и просто работаешь — это победа. Не надо помнить, какой порт открыт на каком сервере, не надо настраивать форвардинг. Всё само.
Что конкретно сделал: установил tailscale на хосте Proxmox, потом на VM 101 (Ubuntu), потом на OpenWRT. На каждом устройстве — одна команда `tailscale up`, потом логин через браузер, и готово. DNS имена подтянулись автоматом — теперь вместо IP пишу `proxmox.tailscale-name.ts.net`.
Настройка заняла от силы полчаса вместе с установкой на три машины и телефон. Из того, что чуть не подвело: на OpenWRT пришлось ставить пакет вручную, в репе его нет. Но скачал ipk с GitHub, залип на одну ошибку с зависимостями — решил через `opkg install tailscale` после добавления репы.
Ещё одна вещь: магистратура. Если серверы в разных сетях или за NAT, Tailscale сам выбирает, как им соединяться — напрямую (через NAT hole-punching) или через DERP-релей. У меня на прямых соединениях пинг между VM101 и хостом вообще 0.3 мс, а через DERP — 30-40 мс, но это если связь рвётся.
Из минусов: бесплатный план ограничен 100 устройствами и одним пользователем. Для дома — хватит с головой у кого угодно. У меня 5 устройств всего. Но если хочешь шарить доступ коллегам — придётся платить. Я пока на бесплатном и не жалуюсь.
Ещё момент: Tailscale даёт доступ ко всем устройствам в сети, но я настоятельно рекомендую включить ACL. Можно через веб-панель настроить, кто к кому имеет доступ. Я, например, запретил доступ с телефона к определенным LXC-контейнерам — мало ли.
В общем, теперь моя домашняя сеть — это mesh. Точка. WireGuard я оставил только для пары external-сервисов, которые должны смотреть на мир. Всё внутреннее — через Tailscale. Удобно до скрежета зубов.
Сейчас я захожу на любой свой сервер одной командой, без ввода паролей, без VPN-клиентов. Просто `ssh mysurik@v101.tailscale-name.ts.net` — и я внутри.
Расскажу ещё несколько вещей о Tailscale, которые я узнал на практике, пока разворачивал mesh-сеть у себя дома. Сначала немного контекста, чтобы было понятно, почему я вообще в это влез. У меня дома живёт Proxmox с кучей виртуальных машин и контейнеров: тут и медиасервер, и сайты, и умный дом, и резервные копии. Всё это требует доступа снаружи: я хочу зайти в панель управления из любого места, посмотреть логи, обновить сервисы. Раньше для этого приходилось открывать порты наружу, настраивать форвардинг, помнить десятки адресов. С Tailscale всё это ушло в прошлое.
Давай разберу установку подробнее, потому что именно здесь новички спотыкаются. На Proxmox хост установка тривиальная: добавил репозиторий Tailscale, поставил пакет, выполнил `tailscale up` — и браузер открывает страницу логина. Один клик — устройство в сети. На Ubuntu VM 101 всё аналогично, разве что проще. На OpenWRT чуть сложнее: в стандартной репе пакета нет, пришлось скачать ipk с GitHub. Я наступил на грабли с зависимостями: не хватало одного пакета, и `opkg` ругался. Решил, добавив репозиторий Tailscale и выполнив `opkg install tailscale` — после этого всё встало. Главный совет: читайте документацию Tailscale для OpenWRT, там всё расписано по шагам, я это понял уже после того, как помучился.
Отдельно расскажу про то, как Tailscale работает под капотом, потому что понимание спасает от неправильных ожиданий. Под капотом — WireGuard, то есть шифрование на уровне VPN. Это значит, что весь трафик между устройствами зашифрован, даже если вы в одной локалке. Координация происходит через серверы Tailscale: они помогают устройствам найти друг друга и установить прямое соединение. Если прямое соединение невозможно (обе стороны за строгим NAT), трафик идёт через DERP-релеи. Это резервный путь, но он всё равно зашифрован, просто чуть медленнее. У меня между VM101 и хостом прямое соединение даёт пинг 0.3 миллисекунды — это идеально. Через DERP — 30-40 миллисекунд, что тоже терпимо, но чувствуется.
Теперь про то, что меня реально удивило — DNS имена. После подключения каждому устройству автоматически присваивается имя вида `device-tailscale-name.ts.net`. Вместо того чтобы помнить IP-адреса, я пишу `proxmox.tailscale-name.ts.net` и попадаю куда нужно. Это работает и в браузере, и в SSH, и в любом приложении. Плюс Tailscale позволяет задавать MagicDNS — человекочитаемые имена вместо IP. Это огромное удобство, которое я оценил не сразу. Когда у тебя десяток устройств, помнить IP невозможно, а с именами — элементарно.
Ещё важная тема — доступ с телефона. Я поставил приложение Tailscale на Android и теперь захожу в админку Proxmox из метро. Сижу в вагоне, смотрю нагрузку на сервере, перезапускаю контейнер — всё с телефона, без открытых портов наружу. Пару лет назад я бы за такое убил: тогда доступ к домашней сети извне был отдельным квестом с проброской портов и настройкой VPN. Сейчас — одна кнопка в приложении, и телефон в моей домашней сети. Это меняет отношение к администрированию: ты больше не привязан к дому.
Теперь про безопасность, потому что её недооценивают. Tailscale — это не просто удобство, это ещё и безопасность. Все устройства в mesh-сети не торчат наружу: ни одного открытого порта, ни одного публичного IP. Хакер не найдёт твой Proxmox в интернете, потому что его там нет. Плюс встроенные ACL — списки контроля доступа. Через веб-панель можно настроить, кто к кому имеет доступ. Я, например, запретил доступ с телефона к определённым LXC-контейнерам — мало ли что. Это гибкость, которой нет у классического WireGuard без дополнительных плясок.
Про ограничения бесплатного плана скажу честно. Бесплатный план Tailscale ограничен ста устройствами и одним пользователем. Для домашней сети этого хватает с головой: у меня всего пять устройств. Но если хочешь шарить доступ коллегам или друзьям, придётся смотреть в сторону платных тарифов. Я пока на бесплатном и не жалуюсь: для дома возможностей хватает. Но имейте в виду: если проект вырастет, упрётесь в лимит. Это не проблема, просто учитывайте при планировании.
Ещё момент, который стоит знать — exit nodes. Tailscale позволяет выбрать «выходной узел» — устройство, через которое весь трафик устройства пойдёт в интернет. Это, по сути, готовый VPN для приватности: сидишь в кафе, включаешь exit node дома — и весь трафик идёт через домашний интернет. Я использую это для безопасности в публичных сетях. Один клик в приложении — и твой трафик защищён. Это функция, которую я считаю недооценённой. Настройте exit node на домашнем сервере — и получите личный VPN бесплатно.
Про совместное использование устройств — интересная фича. Tailscale позволяет шарить отдельные устройства или поддомены другим пользователям Tailscale. Можно дать коллеге доступ только к конкретному серверу, а не ко всей сети. Управляется через панель. Я пока не пользовался этим на практике, но знаю, что это возможно. Для команд это отличный инструмент: безопасный доступ без проброски портов. Если ведёте проекты с кем-то — посмотрите в сторону Tailscale.
Отдельно про автоматизацию. Tailscale хорошо дружит с командной строкой и скриптами. `tailscale status` показывает все устройства и их статус. `tailscale up —ssh` включает встроенный SSH-сервер Tailscale — можно подключаться без настройки ключей. Я использую это для быстрого доступа. Плюс Tailscale умеет работать с Docker и Kubernetes: для контейнеров есть sidecar-контейнеры, которые добавляют контейнер в mesh-сеть. Это удобно для изолированных сервисов. Автоматизация и интеграции — сильная сторона Tailscale.
Теперь про то, что меня сначала смутило — зависимость от серверов Tailscale. Без их координации устройства не смогут найти друг друга. Да, сеть продолжит работать, если прямое соединение уже установлено, но для новых подключений нужен координатор. Для меня это не проблема: серверы Tailscale работают стабильно. Но если ты параноик про зависимости от облака — есть вариант self-host координатора, но это уже для продвинутых. Я принимаю зависимость от облака как плату за удобство. И она того стоит.
Что я сделал в итоге с WireGuard. Раньше я использовал WireGuard вручную для пары внешних сервисов. Теперь WireGuard остался только для тех случаев, когда что-то должно смотреть наружу, на мир. Всё внутреннее — через Tailscale. Это чёткое разделение: наружу — минимально, внутрь — удобно и безопасно. Сейчас я захожу на любой свой сервер одной командой, без ввода паролей, без VPN-клиентов. Просто `ssh mysurik@v101.tailscale-name.ts.net` — и я внутри. Удобство до скрежета зубов.
И пара слов про то, когда Tailscale НЕ нужен. Если у тебя один сервер и один ноутбук в одной сети — Tailscale избыточен. Простое подключение по локальной сети решит задачу. Tailscale заходит в игру, когда устройств несколько, когда они в разных местах, когда нужен доступ извне. Не плоди сущности без необходимости. Я советую Tailscale тем, у кого реально распределённая инфраструктура. Для дома с одним компьютером — это оверкилл. Оценивай свои задачи трезво.
Резюмирую свой опыт. Tailscale — это инструмент, который решает проблему соединения серверов раз и навсегда. Пять минут на установку, никаких открытых портов, никаких сложных конфигов. Работает из коробки на Proxmox, Ubuntu, OpenWRT, телефоне. Даёт удобные DNS-имена, встроенную безопасность, exit nodes и ACL. Есть лимиты бесплатного плана, но для дома их хватает. Я перестал думать о сети и просто работаю — это главная победа. Если у тебя больше одного сервера — Tailscale это то, что нужно попробовать в первую очередь.