Перейти к основному содержимому

Mesh

Бета

Tuna Mesh в бете и включается для команды по запросу в поддержку. После этого в личном кабинете появится раздел Mesh.

Tuna Mesh объединяет ноутбуки, серверы и виртуальные машины команды в частную сеть. Каждое устройство получает постоянный адрес и DNS-имя вида laptop.tuna, и устройства обращаются друг к другу напрямую по любым протоколам и портам. Публичный IP-адрес и открытые порты не нужны.

Туннель публикует один локальный сервис в интернет. Mesh — закрытая сеть: в ней видны только устройства вашей команды, а снаружи к ним не попасть.

Раздел «Мои устройства»: список устройств с Mesh IP, ОС, точкой выхода и последней активностью

Что ещё умеет mesh:

  • точки выхода — выходить в интернет через другое устройство команды, например через сервер в нужной стране;
  • подсети — открыть доступ к офисной сети через одно устройство, не ставя клиент на каждый хост;
  • правила доступа — задать, какие устройства и по каким портам могут общаться;
  • отзыв устройств из личного кабинета: сессия обрывается сразу.

Трафик шифруется WireGuard. Если в сети режется UDP, клиент сам переключается на запасной транспорт поверх SSH.

Требования​

  • Linux, macOS или Windows. Раздавать точку выхода и подсети можно только с Linux и macOS, пользоваться ими можно на всех трёх системах.
  • Клиент tuna. Рекомендуем версию 0.38.0 и новее, а tunad — 0.1.2 и новее.
  • Служба tunad. Она настраивает сетевой интерфейс, поэтому работает с правами root или администратора. Сами команды tuna mesh запускаются от обычного пользователя, sudo для них не нужен.

Внутри Docker-контейнера tunad не запускается, ставьте её на хост.

Установка tunad​

Пакет tunad лежит в том же репозитории, что и tuna. Подключите репозиторий по инструкции по установке и установите пакет:

# Debian, Ubuntu
sudo apt install -y tunad

# RHEL, Fedora
sudo dnf install -y tunad

# SUSE, openSUSE
sudo zypper install -y tunad

Пакет сам включит и запустит службу tunad.service.

Подключение устройства​

С браузером​

На рабочем компьютере выполните:

tuna mesh login

Команда откроет браузер со страницей подтверждения. Проверьте, что имя устройства, ОС и IP-адрес ваши, и нажмите Подключить. Если браузер не открылся, CLI напечатает ссылку. На подтверждение есть 10 минут.

После подтверждения браузер возвращает результат в CLI по адресу 127.0.0.1, поэтому браузер должен быть открыт на том же компьютере. Для удалённого сервера, к которому вы подключены по SSH, используйте токен подключения.

Страница «Подключение устройства к mesh»: ОС, среда запуска, окружение, IP инициатора и кнопки «Подключить» и «Отклонить»
warning

Устройство попадёт в ту команду, которая сейчас выбрана в личном кабинете. Если вы состоите в нескольких командах, переключитесь на нужную в боковой панели до подтверждения.

После подтверждения подключите устройство к сети:

tuna mesh up

Сервер без браузера​

Для серверов, виртуальных машин и CI используйте токен подключения:

  1. В кабинете откройте Mesh → Токены подключения и нажмите Создать токен.
  2. Выберите срок действия, от 1 часа до 1 дня, и число активаций, от 1 до 10. Одним токеном можно подключить несколько серверов.
  3. Скопируйте токен: он показывается один раз.
Форма «Новый токен подключения»: срок действия и количество активаций

На сервере выполните:

tuna mesh enroll <токен>
tuna mesh up

Токен можно передать и через переменную окружения TUNA_MESH_ENROLL_TOKEN. После срока действия токен перестаёт работать, даже если активации остались. Устройства, подключённые по токену, принадлежат тому, кто его создал.

Метка окружения​

При подключении устройству можно задать метку окружения, например production или staging:

tuna mesh enroll <токен> --env=production

Вместо флага подойдёт переменная TUNA_MESH_ENV, без неё метка — default. Метка видна в списке устройств, администратор команды может её поменять. Пока это только подпись для удобства, на доступ она не влияет.

Адреса и имена​

Каждое устройство получает адрес IPv4 из диапазона 100.100.0.0/16 и парный адрес IPv6 из fd74:756e:6100:100::/64. Адрес закреплён за устройством и не меняется при переподключении. Диапазон одинаковый у всех команд, но сети команд изолированы друг от друга.

Имя устройства — его hostname в зоне .tuna, например office-gw.tuna. Если имя занято, сервер добавит суффикс: laptop-1, laptop-2. Переименовать устройство из кабинета нельзя: чтобы сменить имя, поменяйте hostname и подключите устройство заново.

Имена работают в любых программах:

ssh ubuntu@office-gw.tuna
psql -h prod-db-1.tuna -U app
curl http://k8s-worker-3.tuna:8080/healthz

tunad настраивает DNS только для зоны .tuna, остальные запросы идут через ваш обычный DNS-сервер.

Статус и диагностика​

КомандаЧто показывает
tuna mesh statusсостояние сети, имя и адреса устройства, транспорт, точку выхода, раздаваемые и полученные подсети
tuna mesh ipадреса устройства, -4 или -6 — только один
tuna mesh peersустройства команды и их состояние
tuna mesh trace <устройство>путь до устройства и задержку
tuna mesh debug trace <откуда> <куда>пропустят ли правила доступа соединение, без реального трафика

Для скриптов у status, peers и debug trace есть флаг --json.

После перезагрузки служба tunad сама поднимает сеть с теми же настройками, если она была включена.

Отключение​

Команда tuna mesh down отключает устройство от сети, но оставляет его в команде: снова подключиться можно командой tuna mesh up.

Команда tuna mesh logout отключает устройство, отзывает его и удаляет ключи с компьютера. После этого устройство можно подключить заново, в том числе под другим пользователем.

Отозвать устройство можно и в кабинете: Mesh → Мои устройства → Отозвать. Сессия обрывается сразу. Администратор команды может отозвать любое устройство в разделе Команда → Устройства.

Тарифы​

ТарифУстройств на участникаТочки выхода и подсетиСвои правила доступа
Новичок5только пользоваться чужиминет
Профи10раздавать и пользоватьсянет
Легенда100раздавать и пользоватьсядо 100 правил

Отозванные устройства в лимит не входят.

Без своих правил доступа устройства одного пользователя видят друг друга, а устройства разных участников — нет. Чтобы коллеги могли подключаться к устройствам друг друга, нужен тариф «Легенда» и разрешающее правило.

Ограничения беты​

  • Точку выхода выбирают вручную, автоматического выбора нет.
  • Раздавать точку выхода и одновременно выходить через другое устройство нельзя.
  • Если запустить tuna mesh up без флагов --advertise-*, ранее объявленные точка выхода и подсети снимаются. Повторяйте флаги при каждом запуске.
  • Службой tunad на компьютере пользуется один пользователь ОС — тот, кто первым подключил устройство. Другой пользователь получит отказ, пока первый не выполнит tuna mesh logout.
  • Если клонировать виртуальную машину, переустановить ОС или заменить материнскую плату, устройство нужно подключить заново.
  • Сертификат устройства действует 7 дней и продлевается сам, пока устройство включено. Если устройство было выключено дольше, подключите его заново командой tuna mesh login или tuna mesh enroll. Подсказка tuna mesh down && tuna mesh up в выводе tuna mesh status в этом случае не поможет.
  • Адреса mesh 100.100.0.0/16 входят в диапазон, который использует Tailscale. Если на устройстве работают оба, маршруты могут пересечься.