Tailscale (частная телефонная сеть)
На пальцах
У тебя дома компьютер, на работе ноутбук, в кармане телефон, а где-то в облаке стоит личный сервер. Обычно, чтобы ноутбук из кафе увидел домашний сервер, нужно пробрасывать порты на роутере, добывать белый IP, настраивать классический VPN. Tailscale — это как закрытая телефонная станция для твоих устройств: каждому выдаётся короткий номер, и они звонят друг другу напрямую, где бы ни находились. Роутер дома, Wi-Fi в кафе, мобильный интернет — без разницы, набираешь номер — и связь есть.
Что это
Сервис, который строит приватную сеть (VPN) между твоими устройствами поверх обычного интернета, используя протокол WireGuard. Каждое устройство получает постоянный адрес в сети 100.x.x.x и может обращаться к другим по имени, а не по IP.
Зачем
Например, у фрилансера дома стоит мини-сервер с файлами, базой данных или системой умного дома. Из офиса или кафе хочется зайти на этот сервер. Без Tailscale: проброс портов на роутере, белый IP у провайдера, ручная настройка OpenVPN, риск, что открытый порт кто-нибудь найдёт. С Tailscale: установил программу на телефон, ноутбук и сервер, залогинился тем же аккаунтом — и все три видят друг друга по приватным адресам. Открытых портов нет, белый IP не нужен, трафик зашифрован.
Ещё Tailscale умеет:
- давать устройствам имена вместо адресов (MagicDNS)
- перебрасывать файлы между устройствами простым перетаскиванием (Taildrop)
- выставлять сервис в интернет через туннель без белого IP (Funnel)
- управлять доступом: кто кого видит в сети (ACL)
- выходить в интернет через домашнюю сеть с телефона (Exit Node)
- пускать в SSH прямо из браузера (Tailscale SSH, в платной подписке)
Как устроено
- На каждое устройство ставится маленькая фоновая программа — tailscaled.
- При первом запуске она логинится в аккаунт и регистрируется на coordination server (управляющий сервер Tailscale, в облаке).
- Сервер выдаёт устройству пару ключей протокола WireGuard и адрес в сети 100.x.x.x. Обмен ключами устроен так, что IP можно менять на ходу без разрыва связи.
- Когда одно устройство хочет связаться с другим, оно спрашивает у coordination server: «где сейчас второе?».
- Сервер отвечает публичным адресом и портом. Клиент пробует установить прямое соединение через NAT traversal — примерно как в видеозвонках: перебирает варианты (UDP-пробивание, разные порты), пока не найдёт работающий путь.
- Если путь через NAT найти не удалось (оба устройства за «жёсткими» роутерами) — трафик идёт через relay-сервер Tailscale (DERP). Relay видит только зашифрованный поток, расшифровать его может только конечное устройство.
- После установки прямого соединения coordination server больше не участвует в передаче данных — только в ротации ключей и смене адресов.
- Каждые несколько минут клиенты проверяют, не появился ли более короткий путь, и переключаются на прямой канал, как только он становится доступен.
Здесь сравнение с телефонной станцией хромает: на самом деле эта станция только помогает найти второго абонента, а сам разговор идёт напрямую между устройствами, без участия посредника.