Сетевые порты
На этой странице перечислены сетевые порты, которые используют сервисы Tengri, и даны рекомендации по настройке межсетевого экрана.
Все порты — TCP, указаны значения по умолчанию.
Порты сервисов Tengri меняются переменными TNGRI_* в /etc/tengri/tengri.conf, порты сторонних сервисов — в их собственных конфигурационных файлах.
Клиентские порты
Эти порты слушают на всех сетевых интерфейсах и предназначены для пользователей и внешних систем. На межсетевом экране их открывают клиентским сетям.
| Порт | Сервис | Назначение | Параметр |
|---|---|---|---|
|
|
Подключения по протоколу PostgreSQL: |
|
|
|
Веб-интерфейс и REST-API. К нему же обращаются ядра ноутбуков. |
|
|
|
WebSocket-подключения веб-интерфейса и Python-клиентов. |
|
|
|
REST-каталог Iceberg для внешних движков: Spark, Trino, PyIceberg. |
|
|
|
S3-API локального хранилища MinIO. Нужен клиентам, которые обращаются к хранилищу напрямую, в том числе браузерам пользователей. |
|
|
|
Прокси доступа к S3: через него пользователи работают с областью |
|
|
|
Сервер MCP для внешних AI-агентов. По умолчанию выключен. |
|
Для TLS на веб-интерфейсе и WebSocket используются общие параметры TNGRI_SSL_KEY и TNGRI_SSL_CERT.
Межузловые порты
В одномашинной установке все взаимодействие сервисов идет внутри узла и правил межсетевого экрана не требует. В кластерной конфигурации между узлами должны быть открыты:
| Порт | Где слушает | Назначение | Параметр |
|---|---|---|---|
|
узел с |
RPC-канал кластера: агенты подключаются к серверу.
Защищается взаимным TLS параметрами |
|
эфемерные |
узлы с |
Каждый рабочий процесс слушает на случайном порту, который выдает операционная система, и сервер подключается к нему напрямую.
Между узлами кластера должен быть разрешен TCP-трафик на весь эфемерный диапазон — по умолчанию в Linux это 32768—60999 ( |
|
|
узел с каталожным PostgreSQL |
Каталог метаданных: единый сервер PostgreSQL, к которому подключаются все узлы кластера (адрес задается в |
|
|
узел с etcd |
Клиентские подключения к etcd: через него узлы кластера находят друг друга.
По умолчанию etcd слушает только localhost; адреса для кластера задаются в |
|
|
узлы с etcd |
Обмен между членами кластера etcd. |
|
|
узел с Mimir |
Прием метрик от Alloy (remote write). В одномашинной установке используется только локально; открывается узлам кластера при централизованном сборе метрик. |
|
Локальные порты
Следующие порты по умолчанию слушают только на loopback-интерфейсе 127.0.0.1 или доступны только локальным процессам.
Правил межсетевого экрана они не требуют; перечислены, чтобы их можно было отличить от постороннего трафика и учесть при поиске конфликтов портов.
| Порт | Сервис | Назначение |
|---|---|---|
|
|
Служебный интерфейс прокси доступа к S3: выдача учетных данных и решений о доступе.
Открывается наружу, только если |
|
|
Веб-консоль MinIO. |
|
|
Служебный интерфейс прокси: состояние и администрирование ( |
|
|
Внутренний gRPC-интерфейс Mimir. |
|
|
Метрики в формате Prometheus, путь |
|
|
Служебный HTTP-интерфейс Alloy. |
случайные |
ядра ноутбуков |
Порты ядер Python-ноутбуков; контейнеры пробрасывают их только на |
Исходящие соединения
В средах с фильтрацией исходящего трафика сервисам Tengri может понадобиться доступ к внешним ресурсам:
-
адреса LLM, заданные в конфигурации, — если используются AI-агенты;
-
репозиторий Python-пакетов для сред ноутбуков (
TNGRI_PIP_INDEX_URL, по умолчанию PyPI); -
реестр npm для сборки дашбордов (
TNGRI_NPM_REGISTRY_URL); -
внешнее S3-хранилище, если вместо локального MinIO используется оно (
TNGRI_S3_ENDPOINT_URL).
Браузерные ноутбуки загружают пакеты Pyodide с CDN (TNGRI_PYODIDE_CDN_URL, по умолчанию cdn.jsdelivr.net) — это соединение устанавливает браузер пользователя, а не сервер.
Пример настройки межсетевого экрана
Пример правил nftables для одномашинной установки: клиентам открываются только пользовательские порты, остальной входящий трафик запрещается.
Фрагмент /etc/nftables.conf (адаптируйте под собственную политику и не забудьте правило для SSH, чтобы не потерять доступ к узлу):
table inet filter {
chain input {
type filter hook input priority filter; policy drop;
iif "lo" accept
ct state established,related accept
ct state invalid drop
tcp dport 22 accept comment "SSH"
tcp dport { 5433, 3000, 3001, 3005, 9002, 9003 } accept comment "Tengri client ports"
}
}
В кластерной конфигурации дополнительно разрешите трафик между узлами.
Проще всего разрешить узлам весь TCP-трафик друг к другу, поскольку рабочие процессы используют эфемерные порты, — добавьте в цепочку input правило с подсетью или адресами узлов кластера:
ip saddr 192.0.2.0/24 meta l4proto tcp accept comment "cluster nodes"
Если нужны точечные правила, откройте узлам кластера порты 5432, 57776, 2379, 2380 и эфемерный диапазон:
ip saddr 192.0.2.0/24 tcp dport { 5432, 57776, 2379, 2380, 32768-60999 } accept comment "cluster nodes"
Примените правила и включите их загрузку при старте системы:
sudo nft -f /etc/nftables.conf
sudo systemctl enable nftables