Не подключается нода, ошибка: timeout of 15000ms exceeded

Нода в панели красная, высвечивается ошибка:

timeout of 15000ms exceeded

Если вы убеждены, что фаерволл везде открыт, но при этом в панели все равно таймаут, то в 95% случаев проблема в одной из следующих причин:

  1. ТСПУ (точнее – TCP16-20).
    Если панель или нода в РФ – могут применяться ограничения на передаваемый tls-трафик, так как между панелью и нодой используется https:// соединение с помощью mTLS – к сожалению это может быть одной из причин.

  2. Ограничения со стороны хостеров (или их анти-DDOS фильтры)
    Например, недавно у человека была ситуация: панель и нода у одного хостера, в одной и той же локации.

    И при этом панель не может подключиться к ноде с той же ошибкой – таймауты. Были проведены опыты и тесты – панель+нода(другой хостер), панель(другой хостер)+нода - все в порядке. Но если именно панель и нода были у одного хостера – ловим таймауты.

    Вывод можно сделать такой, что либо в странах ЕС каким-то чудесным образом поставили ТСПУ (которое режет по tcp16-20), либо у хостера криво настроеный анти-DDOS фильтр, который направлен на агрессивную нарезку соединений со своих же подсетей

  3. Большие потери пакетов на пути от панели к ноде
    Можно выяснить с помощью mtr (tcp по порту ноды)


Соотвественно из вариантов мы имеем:

  1. Организовать внутренную сеть с помощью Netbird, Tailscale.
    Подключить и ноду и панель в нее, потом в панели подключаем ноду по внутреннему IP.

  2. Сменить хостера панели или сменить хостера ноды.

    Этот пункт думаю не нуждается в более развернутом комментарии


И касаемо того, как там все работает.

На простом примере: когда вы открываете панель (в браузере) – браузер делает запросы к бекенду панели (к его RestAPI), таким образом вы быстро и красиво получаете все данные с бекенда.

Соотвественно, в случае панели (в общем плане) и ноды:

  • панель – это браузер в котором в примере выше вы открываете фронтенд-часть панели
  • нода – это бекенд часть панели (к которой браузер делает запросы)

Между панелью и нодой связь в одну сторону – от панели к ноде с помощью такого же RestAPI как когда вы в браузере ее открываете и браузер делает запросы к бекенду.

Единственное отличие – когда вы браузере все открываете – происходит обычное https:// соединение, с обычным TLS.

А когда панель делает запросы к ноде – происходит фактически тот же самый TLS, но с доп. слоем защиты в виде mTLS.

И, получается, что когда панель стучится к ноде и получает таймаут – мы можем представить такую же ситуацию когда вы из браузера открываете фронтенд-часть приложения, но вместо быстрого получения данных – вы в течении 30-60 секунд видите экран загрузке и потом ошибку о таймауте

Так что по существу никакой магии во внутреннем подключении панели и ноды нет