Бывает задача, у которой нет красивого решения: пустить кого-то — живого человека, задачу в CI или ИИ-агента в песочнице — на домашнюю машину за NAT, но ровно на полчаса и без последствий. Обычно тут либо поднимают постоянную точку входа, либо заводят целую сеть; и то и другое переживёт задачу на месяцы.
Инструмент, который целится именно в эту дыру, на днях выложила Tailscale. Называется он tailcat, и однострочное описание в репозитории пересказывать бессмысленно, проще процитировать: «как netcat, только поверх дата-плейна Tailscale и без её контрол-плейна». За сутки после публикации репозиторий tailscale/tailcat набрал на Hacker News больше пятисот голосов — 26 августа. Внутри собраны уже знакомые по основному продукту открытые компоненты: WireGuard в пространстве пользователя, magicsock для пробивания NAT, сетевой стек netstack из gVisor и релеи DERP. Ни аккаунта, ни прав root, ни постоянно поднятой сети от вас при этом не требуется — в README формулировка ещё лаконичнее: «Tailscale без Tailscale, от Tailscale».
Две команды, между которыми всё и происходит
Сценарий целиком укладывается в пару строк. На той машине, куда нужно пустить:
# на домашней машине
tailcat --serve=no-auth-ssh
# печатает адрес вида tcXXXXXXXX…
# на другой стороне
tailcat ssh tcXXXXXXXX
Адрес получается компактный: около 50 байт, если в нём лежит числовой идентификатор региона. Ставят бинарник через Go или Nix, лицензия — BSD-3-Clause:
go install github.com/tailscale/tailcat/cmd/tailcat@latest
nix run github:tailscale/tailcat
Соединение по возможности устанавливается напрямую, точка-точка. Когда NAT пробить не получилось, трафик уходит через релей DERP. Отзывать доступ отдельной процедурой не нужно: процесс остановлен — адреса больше не существует.
🔒 Безопасность
Флаг --serve=no-auth-ssh стоит читать буквально: это SSH без аутентификации, и единственное, что отделяет чужого от вашей консоли, — знание токена. На официальной странице проекта сказано без обиняков: адрес надо «treat it like a password» — не писать в логи, не коммитить, не пересылать тем, кому доступ не полагается. Сузить круг допущенных можно ключом узла:
tailcat --serve=22 --allow=nodekey:cfb6bf…ddfd16
На фоне двух привычных маршрутов
Сравнение по README tailcat и документации Tailscale, август 2026
Реверс-туннель на арендованном сервере
ssh -R 2222:localhost:22 user@vps -N
Сторонних зависимостей ноль — и в этом весь смысл варианта. Расплата идёт инфраструктурой: понадобится сам VPS, директива GatewayPorts yes в его sshd_config, ключи, юнит systemd для переподнятия туннеля после обрыва и разрешающее правило на 2222. Точка входа после этого висит на публичном адресе круглосуточно, а закрытие доступа означает возню с ключами и конфигом.
Собственный тайлнет
tailscale up --ssh
Когда доступ нужен надолго и не одному человеку, выбирать надо именно это: устройства на учёте, политики, журнал, снятие прав парой кликов в админке. Требования, впрочем, симметричны выгодам — аккаунт у вендора либо развёрнутый своими руками Headscale, машина, постоянно состоящая в сети, и продуманный ACL. Для получаса такая подготовка избыточна.
Остальное, что умеет тот же бинарник
--serve=8080,8443 (либо --serve=all) — проброс TCP-портов; со стороны клиента это tailcat <токен> 8080;
tailcat socks <токен> — SOCKS5 поверх того же туннеля;
--serve=exit-node — выход в интернет через удалённую машину;
tailcat genkey с флагами --region=nyc, --fixed-region, --client — стабильный ключ на замену эфемерному --key=new, чтобы адрес не менялся от запуска к запуску;
токен публикуется в DNS — my-server.example.com. 300 IN TXT "tailcat=tcXXXXXXXXX", и дальше имя принимается везде, где командная строка ждёт токен;
вместо публичного релея можно указать свой: tailcat genkey --region=derp.example.com.
⚠️ Осторожно
Об ограничениях авторы пишут сами, и их три. Стабильность интерфейса не обещана — ни командная строка, ни формат обмена, так что зашивать tailcat в скрипты на годы вперёд рановато. Публичные релеи идут без SLA. И самое существенное: хостинговый релей «keeps metadata logs and isn't intended for privacy», то есть метаданные соединений пишутся, а приватность попросту не заявлена. Приватный сценарий закрывается только собственным DERP.
ℹ️ Справка
Заменой Tailscale эта штука не работает, и не по недосмотру, а сознательно: управления устройствами, политик, админки и аудита здесь нет вовсе. Постоянная многопользовательская сеть по-прежнему строится тайлнетом или Headscale. За tailcat остаётся узкая полоса — «пусти сюда вот этого и вот сейчас».
А чем разовый доступ к домашней машине раздаёте вы — реверс-туннелем на своём VPS, тайлнетом, Cloudflare Tunnel, чем-то ещё? И рискнули бы пустить в домашнюю сеть SSH, где вся аутентификация сводится к знанию одной строки?
Вы можете написать сейчас и зарегистрироваться позже.
Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.
Бывает задача, у которой нет красивого решения: пустить кого-то — живого человека, задачу в CI или ИИ-агента в песочнице — на домашнюю машину за NAT, но ровно на полчаса и без последствий. Обычно тут либо поднимают постоянную точку входа, либо заводят целую сеть; и то и другое переживёт задачу на месяцы.
Инструмент, который целится именно в эту дыру, на днях выложила Tailscale. Называется он tailcat, и однострочное описание в репозитории пересказывать бессмысленно, проще процитировать: «как netcat, только поверх дата-плейна Tailscale и без её контрол-плейна». За сутки после публикации репозиторий
tailscale/tailcatнабрал на Hacker News больше пятисот голосов — 26 августа. Внутри собраны уже знакомые по основному продукту открытые компоненты: WireGuard в пространстве пользователя, magicsock для пробивания NAT, сетевой стек netstack из gVisor и релеи DERP. Ни аккаунта, ни прав root, ни постоянно поднятой сети от вас при этом не требуется — в README формулировка ещё лаконичнее: «Tailscale без Tailscale, от Tailscale».Две команды, между которыми всё и происходит
Сценарий целиком укладывается в пару строк. На той машине, куда нужно пустить:
Адрес получается компактный: около 50 байт, если в нём лежит числовой идентификатор региона. Ставят бинарник через Go или Nix, лицензия — BSD-3-Clause:
Соединение по возможности устанавливается напрямую, точка-точка. Когда NAT пробить не получилось, трафик уходит через релей DERP. Отзывать доступ отдельной процедурой не нужно: процесс остановлен — адреса больше не существует.
🔒 Безопасность
Флаг
--serve=no-auth-sshстоит читать буквально: это SSH без аутентификации, и единственное, что отделяет чужого от вашей консоли, — знание токена. На официальной странице проекта сказано без обиняков: адрес надо «treat it like a password» — не писать в логи, не коммитить, не пересылать тем, кому доступ не полагается. Сузить круг допущенных можно ключом узла:На фоне двух привычных маршрутов
Реверс-туннель на арендованном сервере
Сторонних зависимостей ноль — и в этом весь смысл варианта. Расплата идёт инфраструктурой: понадобится сам VPS, директива
GatewayPorts yesв егоsshd_config, ключи, юнит systemd для переподнятия туннеля после обрыва и разрешающее правило на 2222. Точка входа после этого висит на публичном адресе круглосуточно, а закрытие доступа означает возню с ключами и конфигом.Собственный тайлнет
Когда доступ нужен надолго и не одному человеку, выбирать надо именно это: устройства на учёте, политики, журнал, снятие прав парой кликов в админке. Требования, впрочем, симметричны выгодам — аккаунт у вендора либо развёрнутый своими руками Headscale, машина, постоянно состоящая в сети, и продуманный ACL. Для получаса такая подготовка избыточна.
Остальное, что умеет тот же бинарник
--serve=8080,8443(либо--serve=all) — проброс TCP-портов; со стороны клиента этоtailcat <токен> 8080;tailcat socks <токен>— SOCKS5 поверх того же туннеля;--serve=exit-node— выход в интернет через удалённую машину;tailcat genkeyс флагами--region=nyc,--fixed-region,--client— стабильный ключ на замену эфемерному--key=new, чтобы адрес не менялся от запуска к запуску;my-server.example.com. 300 IN TXT "tailcat=tcXXXXXXXXX", и дальше имя принимается везде, где командная строка ждёт токен;tailcat genkey --region=derp.example.com.⚠️ Осторожно
Об ограничениях авторы пишут сами, и их три. Стабильность интерфейса не обещана — ни командная строка, ни формат обмена, так что зашивать
tailcatв скрипты на годы вперёд рановато. Публичные релеи идут без SLA. И самое существенное: хостинговый релей «keeps metadata logs and isn't intended for privacy», то есть метаданные соединений пишутся, а приватность попросту не заявлена. Приватный сценарий закрывается только собственным DERP.ℹ️ Справка
Заменой Tailscale эта штука не работает, и не по недосмотру, а сознательно: управления устройствами, политик, админки и аудита здесь нет вовсе. Постоянная многопользовательская сеть по-прежнему строится тайлнетом или Headscale. За tailcat остаётся узкая полоса — «пусти сюда вот этого и вот сейчас».
Источники
💬 Вопрос к сообществу
А чем разовый доступ к домашней машине раздаёте вы — реверс-туннелем на своём VPS, тайлнетом, Cloudflare Tunnel, чем-то ещё? И рискнули бы пустить в домашнюю сеть SSH, где вся аутентификация сводится к знанию одной строки?
TOP HOSTERS: KAMATERA (30 дней бесплатного теста!)
Универсальный хостер №1 - 4VPS.su (2Гб\с сервера) - 10% скидка на первый заказ или 15% бонус на первое пополнение