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

Работа tuna в корпоративной сети

Чаще всего с этим не должно быть проблем, так как корпоративные фаерволы разрешают исходящие соединения, однако могут быть ограничения по портам подключения, которые могут помешать работе tuna.

Если у вас появляются ошибки при создании туннеля, выполните команду tuna diagnose для получения диагностической информации, отчет поможет лучше понять, где именно проблема.

Please wait, testing connectivity...

TLS connectivity:
Google.com: ok [1.46189625s]
Yandex.ru: ok [1.246520375s]
tuna API: ok [1.484186875s]
DNS:
api.tuna.am: alt-lb.tuna.am. → eu-lb.tuna.am. [147.45.149.16, 194.31.173.118]
a.2na.am: edge-eu-a.2na.am. [2.28.136.177, 89.19.217.251]
TCP connectivity:
tuna edge a 2.28.136.177:443: ok [41.53925ms]
tuna edge a 89.19.217.251:443: ok [38.112708ms]
tuna node DE node-1-de.2na.am:443: ok [52.81425ms]
tuna node RU node-1-ru.2na.am:443: ok [34.079541ms]

Как правило, tuna использует порт 443 для подключения к нодам при создании туннеля. Если проверки TCP connectivity не проходят, обратитесь к своим сетевым администраторам для решения проблемы.

Какие адреса разрешить в фаерволе​

tuna CLI подключается к API и к нодам на порт 443. Если фаервол пропускает только разрешённые адреса, откройте доступ:

  • к api.tuna.am и my.tuna.am — API и личному кабинету, CLI обращается к API при каждом запуске;
  • к нодам — к ним CLI подключается, когда поднимает туннель;
  • к ячейкам, если адреса туннелей открывают из этой же сети, — на ячейки приходит трафик к туннелям и своим доменам.

Адреса нод и ячеек собраны в таблице, адресов api.tuna.am и my.tuna.am в ней нет.

Актуальный список адресов в формате JSON: https://api.tuna.am/v1/system/ips

Разрешайте все адреса из списка, а не только те, что резолвятся из вашего офиса. Имена api.tuna.am, my.tuna.am и зоны ячеек обслуживает GeoDNS: для России и остальных регионов он отдаёт разные балансировщики. Куда GeoDNS направил вашу сеть, видно в секции DNS вывода tuna diagnose: регион показывает последнее имя в цепочке CNAME. Например, edge-ru-a.2na.am. — Россия, edge-eu-a.2na.am. — другие регионы.

Сейчас адреса зафиксированы. Если они изменятся, мы постараемся заранее предупредить об этом по почте. Актуальный список в любом случае отдаёт метод API: по нему можно самим проверять, не поменялись ли адреса.

Если фаервол умеет правила по FQDN, разрешайте доступ по именам — тогда при смене адресов правила не придётся обновлять.

Автоматическая выгрузка адресов​

Список отдаёт открытый метод API, авторизация не нужна:

curl -fsS https://api.tuna.am/v1/system/ips | jq -r '.ingress_cells[].ips[], (.nodes[].ip // empty)' | sort -u

В ответе два массива:

  • ingress_cells — ячейки. В ips — адреса, на которые приходит трафик к туннелям, в zone — основная зона ячейки: на неё ведут CNAME своих доменов. Берите адреса всех ячеек независимо от status: трафик идёт и в ячейки в статусе draining.
  • nodes — ноды. В address — хост и порт для подключения CLI, в ip — адрес ноды, в region — страна ноды в формате ISO 3166-1 alpha-2, например DE. Полей ip и region может не быть. Без ip разрешайте доступ по имени из address.

Сервер обновляет ответ раз в 5 минут, поэтому опрашивать метод чаще нет смысла. Метод поддерживает ETag: с заголовком If-None-Match он вернёт 304, если список не изменился, — так удобно проверять изменения по расписанию. С одного IP-адреса — не больше одного запроса в секунду, сверх лимита сервер отвечает 429. Описание метода — в Swagger, тег SystemIPs.