Skip to main content
У ноды редко бывает ровно один адрес. Провайдер выдаёт дополнительный IP, кто-то берёт подсеть, кому-то нужно, чтобы клиенты приходили на один адрес, а наружу нода уходила с другого. Вкладка Сеть в карточке ноды показывает, что на ноде есть на самом деле, и позволяет этим распорядиться.
Для кого: администратор панели, SRE. Требуемые права: чтение — просмотр нод, запрос к ноде и привязка адреса — операции с нодами, роли — редактирование нод. Лицензия: ключ core.node_network (чтение сохранённого доступно на любом тарифе).
Адреса читает и меняет агент. На ноде без агента вкладка так и говорит и не предлагает кнопок, которые не сработают. SSH-запасного пути здесь нет.

Инвентарь

Список адресов приносит агент по запросу панели. Сама панель на ноду за ним не ходит, поэтому рядом всегда написано, когда его смотрели в последний раз, а кнопка «Спросить ноду» перечитывает список заново. На ноде при этом ничего не меняется. У каждого адреса видно интерфейс, маску, шлюз и то, откуда он взялся:
  • Адрес панели — по нему панель ходит на ноду. Снять его нельзя: связь с нодой держится на нём.
  • Этот адрес прописала панель — свой, добавленный отсюда. Только такие панель и снимает.
  • Выдан автоматически — приехал по DHCP или SLAAC и может смениться сам.
  • Пропал — адрес, которого на ноде больше нет. Из списка он не исчезает, а остаётся с временем последней встречи: провайдер, переселивший ноду, это ровно то событие, ради которого инвентарь и заводится.
Пустой список никогда не выдаётся за факт. «Спросили, и адресов больше нет», «ноду ещё не спрашивали» и «спрашивать некого» — три разных состояния, и вкладка их различает. Неудачный запрос ничего не помечает пропавшим: показания остаются с прошлой проверки, о чём написано прямо в карточке. Ниже инвентаря идут две справочные карточки: каким маршрутом нода выходит в интернет по умолчанию и, если они есть, её собственные правила маршрутизации и таблицы.

Привязать адрес

Поле в диалоге одно: адрес, который выдал провайдер. Интерфейс, маску, шлюз и необходимость отдельной таблицы маршрутизации панель выводит из инвентаря и сразу показывает словами, что получится. Типовой случай — соседний адрес из той же подсети: маршрут для неё на ноде уже есть, добавлять нечего. Второй вопрос появляется там, где ядру физически неоткуда взять ответ: адрес из чужой подсети. Тогда панель спрашивает шлюз и подставляет тот, которым нода пользуется сама, а заодно заводит адресу отдельный маршрут, чтобы ответы уходили тем же путём, каким пришли.
Панель настраивает адрес на самой ноде. Если провайдер требует привязать адрес к серверу у себя (Hetzner, OVH и подобные), это делается в его панели. Иначе адрес пропишется, но работать не будет.

Как применяется

Применение двухфазное, и это защита от потери ноды:
1

Нода применяет адреса вживую

Агент ставит адреса в работающее ядро и заводит откат по таймеру.
2

Панель стучится второй раз

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

Конфигурация записывается на диск

Только после этого адреса становятся постоянными.
Не достучались — нода вернёт всё сама, а вкладка честно скажет, что откатились. Отдельной строкой показывается, переживут ли адреса перезагрузку. Если панель не нашла на ноде знакомой сетевой конфигурации, адреса будут работать до ребута, и об этом сказано прямо: адрес, живущий до перезагрузки, ломает схему ровно тогда, когда на него уже понадеялись. Кнопка «Проверить» перечитывает с ноды именно те адреса, которые прописала панель, и сравнивает с тем, что просили. Расхождение обычно означает ручную правку на сервере или перезагрузку.

Роли: вход и выход

Роль говорит, зачем адрес нужен схеме. Роли начинают действовать, когда схема с этой нодой применена заново. Собственный трафик ноды (обновления, curl, агент) роли не меняют: они про трафик клиентов. Роль можно назначить только адресу, который на ноде действительно есть. Схема, прикреплённая к объявленному, но отсутствующему адресу, скомпилировалась бы чисто и не обслужила никого: inbound не поднялся бы, а выход не дозвонился.

Резерв

Второй адрес с той же ролью становится резервом, а не забирает трафик. Так и задумано: отмечая второй выход, оператор готовит запасной, а не перенаправляет живой трафик. Переключение — отдельное действие, кнопка «Переключить на этот»: адреса меняются местами в одной транзакции, и роль ни на миг не оказывается у двоих сразу.

Что панель скажет вслух

Компилятор схемы отклоняет то, что заведомо не заработает, и объясняет причину:
  • Блок с адресом-ролью должен содержать ровно одну ноду. Связка компилируется в один config profile, который получают все её ноды. Адрес есть у одной, поэтому для остальных listen с этим адресом — команда, которую они выполнить не могут: inbound не поднимется, и нода молча перестанет принимать клиентов.
  • Прямого выхода в схеме нет — значит адрес выхода задаёт WARP или прокси, а не роль.
  • Выходных адресов отмечено несколько — работает первый; разделять трафик между ними пока нельзя.
  • listen выставлен руками в блоке — это решение оператора, и роль его не перебивает.

Проверил ли кто-нибудь, что нода выходит с назначенного адреса

Назначить роль и убедиться, что нода ей пользуется, — разные вещи. Правило маршрутизации могло не встать, провайдер мог отобрать адрес. Поэтому панель отдельно смотрит, за кого ноду принимает интернет: карточка Выход в интернет в карточке ноды показывает наблюдаемый адрес и страну выхода, прочитанные через туннель самой схемы. Подробности — в Уровнях проверок.

Ограничения

  • Ноде без агента фича недоступна целиком.
  • На незнакомом сетевом стеке адреса встанут только в живое ядро: постоянными их сделать не выйдет, и вкладка об этом скажет.
  • Чужие адреса панель показывает, но не снимает. Снять можно только то, что она сама и прописала.
  • Разделить трафик между несколькими выходными адресами одной ноды пока нельзя: первый забирает весь прямой выход.

Типовые ошибки

Список остаётся с прошлой проверки, и менять адреса нечем. Начните со вкладки Агент: жив ли он, приходит ли heartbeat.
Проверьте в панели провайдера, привязан ли адрес к этому серверу. Панель делает свою половину работы, чужую половину сделать не может.
После смены адресов панель не смогла достучаться до ноды, и нода откатилась сама. Убедитесь, что адрес администрирования не задет и что новый адрес не конфликтует с существующим маршрутом.
Роли доезжают до ноды только с применением схемы. Примените Connection Unit заново.
Связанные страницы: Обзор нод, Маршрутизация, Уровни проверок, Метрики и службы.