Tailcat — выпущенный Tailscale открытый Go-пакет и CLI. Это объявление представляет инструмент для запуска серверного listener и клиента двусторонней передачи данных.

Tailcat даёт доступ к открытому data plane Tailscale: WireGuard, NAT traversal и DERP. Инструмент работает без control plane Tailscale и не требует прав root или администратора ОС.

Клиент устанавливает TCP-соединение поверх WireGuard с помощью встроенного userspace TCP stack. Синтетические IPv6-адреса не видны пользователю, а ОС не участвует в TCP-уровне.

Tailcat сначала пытается установить прямое соединение через NAT traversal. При невозможности он использует DERP как резервный relay, а серверы Tailscale ограничены по пропускной способности.

Проверка утверждений:

  • Tailscale выпустила Tailcat — открытый Go-пакет и CLI, с которыми можно запустить серверный listener и клиент для двусторонней передачи данных. (подтверждено самой публикацией: доказательство; «Specifically, tailcat is both an open-source Go package and a CLI tool using that package. It lets you run a server-side listener and a client to connect to that server, moving bidirectional bytes back and forth.»)
  • Tailcat даёт доступ к открытому data plane Tailscale — WireGuard, NAT traversal и DERP — без control plane Tailscale. (подтверждено самой публикацией: доказательство; «Today we’re releasing tailcat, a remix of pieces of Tailscale that gives you a way to use the open-source Tailscale data plane (WireGuard® + NAT traversal + DERP) without the Tailscale control plane, written by the people who made Tailscale.»)
  • Tailcat не требует прав root или администратора ОС. (подтверждено самой публикацией: доказательство; «- no root or admin OS access requirement»)
  • Tailcat формирует адрес в виде tc + base64(CBOR(публичный ключ + данные начальной настройки DERP)). (подтверждено самой публикацией: доказательство; «- generates a tailcat address, which is a string of the form: tc + base64(CBOR( public key + DERP bootstrap info ))»)
  • Клиент устанавливает TCP-соединение поверх WireGuard с помощью встроенного userspace TCP stack; синтетические IPv6-адреса не видны пользователю и ОС не участвует в TCP-уровне. (подтверждено самой публикацией: доказательство; «The client then proceeds to make a TCP connection to the other side using an embedded userspace TCP stack atop WireGuard. There are actual IP addresses on the wire (IPv6 ones derived from your public key), but they’re never visible to users. Your operating system is never involved at the TCP layer and never sees the synthetic tailcat IPs.»)
  • Tailcat сначала пытается установить прямое соединение через NAT traversal, а при невозможности использует DERP как резервный relay; DERP-серверы Tailscale ограничены по пропускной способности. (подтверждено самой публикацией: доказательство; «Because it goes over Tailscale’s magicsock data plane, NAT traversal automatically kicks in and tries to get a direct connection, so data transfer (WireGuard UDP packets) ends up going directly between the client and server, without a DERP relay involved. But if both sides are behind a hard NAT without any port mapping services available, the data packets are relayed over DERP as a fallback. If you use Tailscale-hosted DERP servers, those are rate-limited (bandwidth costs us money).»)
  • В режиме по умолчанию Tailcat выводит полученные сервером данные в stdout, а в клиентском режиме может поднять локальный SOCKS-сервер для запуска сторонней программы; инструмент не меняет сетевой стек ОС и не использует TUN-устройства. (подтверждено самой публикацией: доказательство; «In the default mode where you don’t specify a port number on the tailcat server, the default is to just pipe the received data to the server’s stdout, like netcat. But it can also run in a client mode, where it runs a SOCKS server on an ephemeral local port and then runs a provided child process (e.g. curl or whatever) with an environment variable set to use said SOCKS server, letting tailcat-oblivious programs use tailcat transparently. (tailcat is currently always userspace-only, never reconfiguring your system’s networking stack … no TUN devices, no routing table changes, etc.)»)
  • Собственный парк DERP-серверов Tailscale для Tailcat ограничен по скорости и доступен лишь в нескольких регионах. (подтверждено самой публикацией: доказательство; «The DERP server fleet we’re running for tailcat is throttled and only available in a handful of regions around the world.»)
  • Tailcat работает без учётных записей: логинов, паролей и SSO. (подтверждено самой публикацией: доказательство; «- no accounts (no logins, no passwords, no SSO)»)
  • Клиент отправляет на публичный ключ сервера через DERP сообщение MEOW, чтобы добавить себя в netmap. (подтверждено самой публикацией: доказательство; «- send a MEOW message to the server’s public key over DERP to add yourself to the netmap»)

Первоисточники:

оценка 84.5 · тип announcement · ревизия 1 · истории st-1ncqwwf