Перезагрузка сертификата Nebula не изменила IP: вот почему
Перезагрузка перечитывает учётные данные хоста только тогда, когда адрес в оверлее остаётся прежним. Смена адреса означает перезапуск и изменение сети, а не повторную попытку.
Вы выпускаете новый сертификат хоста с другим адресом в оверлее, копируете его поверх старого файла, отправляете перезагрузку, а хост продолжает отвечать на прежнем адресе. Рефлекс — предположить, что перезагрузка не удалась или что был прочитан не тот файл. Обычно не случилось ни того, ни другого: работающий процесс намеренно сохранил идентичность, которая у него уже была, потому что замена изменила то, что перезагрузка применить не может.
Поддержка перезагрузки PKI в Nebula документирована именно с этой границей, и её легко упустить, когда та же документация показывает, что перезагрузка работает для других изменений.
Что перезагрузка действительно перечитывает
Сертификат хоста — это не просто учётные данные, как ключ SSH. Он несёт адрес в оверлее, имя хоста, членство в группах и срок действия, и всё это связано подписью CA. Демон использует это подписанное содержимое, чтобы решить, как представлять себя и какие правила к нему применяются.
Перезагрузка позволяет процессу подхватить обновлённые учётные данные, не роняя свои туннели, что ценно при плановой ротации: тот же адрес, то же имя, те же группы, более поздний срок. Ограничение в том, что идентичность должна остаться прежней. Измените адрес в оверлее — и путь перезагрузки не сможет его применить, потому что адрес входит в то, на что работающий экземпляр уже согласился.
Так что увиденное поведение — это документированное ограничение, выполняющее свою работу, а не тихий отказ. Файл на диске новый; идентичность в памяти старая; у процесса нет поддерживаемого способа согласовать эту разницу без перезапуска.
Адрес, имя и группы — одна идентичность
Полезно думать о сертификате как об одной записи, а не как о наборе полей, которые можно править независимо. Перенос адреса — не то же самое, что смена настройки, потому что адрес встречается в конфигурациях партнёров на других хостах, в привязках служб и в политиках, написанных против идентичности.
| Field | What changes when you replace it |
|---|---|
| Overlay address | Peers that pinned the old address, service bindings, and any rule written against it |
| Host name | Name-based policy and the identities other hosts expect to see |
| Groups | Which access rules match, even if the address stays identical |
| Validity window | Nothing structural, which is why renewal reloads cleanly |
Группы заслуживают отдельной строки, потому что вызывают более тихую версию той же путаницы. Хост, который сохраняет адрес, но меняет группы, после перезапуска может получить доступ к другим службам, а тест, который только пингует старый адрес, будет выглядеть совершенно здоровым, хотя решения о доступе под ним изменились. Проверьте одну службу, охваченную правилом, а не только доступность. В этом разница между подтверждением туннеля и подтверждением политики.
Сравните загруженный сертификат с заменой
Прежде чем предполагать, что демон проигнорировал файл, прочитайте и то и другое. Напечатайте сертификат, который собираетесь загрузить, и подтвердите поля, которые, как вы думаете, изменили, затем подтвердите, что работающая конфигурация указывает на этот путь, а не на копию в другом месте.
nebula-cert print -path /etc/nebula/host.crt
systemctl status nebula
ps -o args= -p $(pgrep -f 'nebula -config' | head -1)Аргументы процесса важнее, чем ожидают. Модуль, который передаёт -config /etc/nebula/config.yml, читает запись pki.cert того файла, а сертификат, установленный во временный каталог, ни на что не влияет. Проверьте путь в работающей командной строке, а не путь в документации, которой вы следовали. Если они различаются, вы нашли проблему, вовсе не трогая сертификат.
Если у нового сертификата другой адрес, а процесс сохранил старый, теперь у вас есть объяснение, а не загадка. Перезапустите его, если это приемлемо, и относитесь к смене адреса как к плановому изменению сети, а не случайному.
Смена адреса — это изменение сети
Планируйте это так, как планировали бы перенос машины. Другие хосты могли закрепить старый адрес в своей конфигурации, службы могут явно привязываться к нему, а правила межсетевого экрана могут быть написаны против него. Смена сертификата переносит хост, а перенос хоста обесценивает допущения в других местах.
Держите доступным второй путь управления, пока делаете это, потому что именно оверлейное соединение вы, возможно, и прерываете. Делать это через туннель, который вы вот-вот сломаете, — классический способ превратить пятиминутное изменение в выезд на место.
Приемлем ли перезапуск, зависит от того, что делает хост, и это вопрос планирования, а не технический. Обязательно другое — признать требование перезапуска вместо того, чтобы отправлять перезагрузку в пятый раз.
Отзовите старые учётные данные отдельно
Установка замены на одной машине оставляет каждого партнёра доверяющим тем учётным данным, которые он уже знает. Если причиной изменения была компрометация, старую идентичность нужно отозвать процедурой доверия или блок-листа, чтобы партнёры действительно её отвергли.
Это отдельный шаг с собственной проверкой: подтвердите с другого хоста, что старая идентичность больше не работает, вместо того чтобы предполагать, что новый файл сделал дело. Документация по настройке PKI в Nebula охватывает перезагружаемые параметры и описанное здесь ограничение адреса, и её стоит прочитать целиком, прежде чем менять что-либо в продакшене.