Документация
Быстрый старт + описание функций по разделам и устройствам (постоянно дополняется)
Определение NAT-серверов и рекомендации по туннелированию
В этой статье описано, как панель автоматически распознаёт NAT-серверы, различает «NAT, где порт можно настроить» и «NAT, где порт настроить нельзя», а при необходимости направляет пользователя к туннельному управлению.
Сначала разберёмся: что такое NAT
NAT-сервер — это сервер, у которого «есть только внутренний IP и нет отдельного публичного IP». Например, многие дешёвые NAT VPS: провайдер выдаёт внутренний адрес (вроде 192.168.x.x), и обратиться к нему напрямую из публичной сети нельзя — только через проброс портов, предоставляемый провайдером (когда какой-то публичный порт переадресуется на ваш внутренний).
Что делает эта функция
После добавления сервера панель при успешном SSH-соединении автоматически определяет, является ли эта машина NAT-типом (на машине только внутренние адреса, без отдельного публичного IP). Обнаружив NAT, панель показывает небольшой значок на карточке сервера и выводит сводное пояснение вверху вкладки «Обзор». Пользователь может нажать на жёлтый значок и подтвердить, можно ли на этой NAT-машине самостоятельно настроить проброс портов в панели провайдера, — тем самым решив, требуется ли туннельное управление.
Почему важно различать типы NAT
«Внутренний IP» ≠ «нужен туннель». NAT-серверы делятся на два типа:
| Тип | Особенности | Нужен ли туннель |
|---|---|---|
| NAT, где порт можно настроить | Провайдер даёт панель проброса портов, и пользователь сам может переадресовать публичный порт на внутренний | ❌ Не нужен, с портом можно справиться самостоятельно |
| NAT, где порт настроить нельзя | Провайдер жёстко закрепил лишь несколько портов вроде SSH (22), остальные порты снаружи недоступны | ✅ Нужно туннельное управление |
Туннельное управление нужно только для «NAT, где порт настроить нельзя». У NAT, где порт можно настроить, порты мапятся самостоятельно, и по удобству он не отличается от машины с публичным IP — о нём не следует напоминать постоянно.
Как работает определение
После успешного SSH-соединения панель выполняет команду только для чтения ip -4 addr show, читает локальные IP сетевых интерфейсов сервера и проверяет, все ли они относятся к внутренним диапазонам:
10.0.0.0/8172.16.0.0/12192.168.0.0/16100.64.0.0/10(CGNAT, операторский NAT)127.0.0.0/8,169.254.0.0/16,0.0.0.0/8
Если существует хотя бы один IP публичного диапазона, сервер считается «имеющим публичный IP» (не NAT); если все адреса внутренние — он считается «NAT».
> Команда определения работает только на чтение и не изменяет состояние сервера. Результат записывается в базу данных, определяется лишь при первом подключении, а затем просто переиспользуется — соединение не замедляется.
Значки и места подсказок
Обнаружив NAT, панель показывает подсказки в двух местах:
1. Вкладка «Обзор» панели «Управление системой»: нажав на карточке сервера «Управление системой» и войдя в панель, вы увидите на первой вкладке «Обзор» соответствующий баннер-подсказку о NAT — у жёлтой отметки отображается жёлтое пояснение (с инструкцией по снятию), у красной отметки — красное руководство по туннелированию. Подсказка появляется только у NAT-серверов с прямым подключением и без подтверждения и не занимает место на карточке.
2. Небольшой значок на карточке: на карточке остаётся лишь маленький значок с тремя состояниями:
| Значок | Цвет | Значение | Действие при нажатии |
|---|---|---|---|
NAT | Жёлтый | Обнаружен NAT (локальные IP внутренние), ждёт подтверждения | Открывается окно подтверждения |
Нужен туннель | Красный | Порт недоступен из публичной сети, нужен туннель | Открывается руководство по туннельному управлению |
| (нет значка) | — | Подтверждено, что «с портом всё в порядке», отметка снята | — |
Жёлтый значок NAT — это состояние «ждёт подтверждения»: при нажатии открывается окно подтверждения с выбором из двух вариантов:
- «С портом всё в порядке, снять отметку» → значок исчезает, больше не напоминает;
- «Порт недоступен, отметить как требующий туннеля» → значок становится красным и ведёт к туннельному управлению.
Красный Нужен туннель — это «предупреждение»: при нажатии сразу открывается туннельное управление + проброс портов.
> Почему не делается «автоматическая проверка доступности порта»: сервер панели и целевой сервер могут находиться в одном дата-центре, и проверка из панели идёт по внутренней сети — «проходит» не означает, что пройдёт у внешнего посетителя, результат недостоверен. Поэтому «нужен туннель» пользователь отмечает вручную в жёлтом окне пояснения.
Почему NAT-сервер «через какое-то время отключается»
У NAT-сервера на шлюзе провайдера есть idle timeout (тайм-аут простаивающего соединения). После нескольких минут простоя SSH-соединения шлюз тихо обрывает его (TCP в полуоткрытом состоянии), и обе стороны этого не замечают.
Панель решает проблему следующими двумя способами:
1. Включение keepalive для SSH-соединений: после установления каждого соединения каждые 30 секунд отправляется пакет поддержания активности — это и предотвращает обрыв из-за простоя в NAT, и позволяет вовремя обнаружить полумёртвые соединения.
2. Периодическая очистка пула соединений: фоновый поток каждые 2 минуты закрывает соединения, простаивающие более 2 минут, не давая полумёртвым соединениям бесконечно накапливаться.
Важные замечания
1. Определение зависит от успешного SSH-соединения: когда сервер офлайн или пароль неверен, определить нельзя — значок не отображается.
2. Серверы без значка: у серверов с публичным IP, Android-устройств (Termux) и уже туннелированных устройств (с tunnel_token) значок NAT не показывается — они и так идут по своим каналам, напоминание о NAT им не нужно.
3. Особые случаи учтены: у крайне редких «1:1 NAT» (серверы, где открыты все порты) локальный IP тоже внутренний, и они определяются как NAT. В этом случае пользователю достаточно выбрать «Да» в окне подтверждения — на использование это не влияет.
4. После подтверждения можно изменить: состояние значка определяется подтверждением пользователя и в любой момент может быть скорректировано нажатием на значок.