Заблокирован доступ к VPN-серверу: оставьте второй путь внутрь
Сломанный туннель не должен отнимать и возможность починить сервер. Спланируйте, проверьте и пересмотрите независимый административный путь до того, как он понадобится.
Вы открываете консоль, меняете одно правило брандмауэра, и туннель, через который вы были подключены, исчезает. Изменение было верным, перезагрузка нет, и теперь единственный путь назад к машине тот, который вы только что сломали. Второй путь внутрь это проектное решение, и он должен существовать до аварии, а не во время неё.
Пройдитесь по тому, что у вас ещё есть
Начните с экрана консоли перед вами и перечислите пути, не зависящие от туннеля. Веб-консоль провайдера с последовательной сессией или VNC — один. Интерфейс управления в отдельной сети — другой. Физический доступ — третий, и именно его отсутствие люди обнаруживают в самый неподходящий момент.
| Path | Depends on | Usually fails when |
|---|---|---|
| Provider console | Account access and the provider's own API | Credentials live in a wiki only reachable over the tunnel |
| Management subnet | A second interface and its own routing | The bad change was a global route or firewall policy |
| Second tunnel | A different listener, port and credentials | Both listeners were changed in the same edit |
| Physical or local console | Being in the building | Nobody has been in the building for a year |
Читайте третий столбец как список отказов, а не как абстракцию. Два из этих путей обычно отказывают по одной и той же причине. Таблица это способ заметить это до того, как авария объяснит вам это сама.
Независимость — это вопрос зависимостей
Учётная запись восстановления не независима, если её пароль хранится в сервисе, до которого вы добираетесь через туннель. Второй VPN на том же хосте, том же порту и с той же политикой брандмауэра тоже не независим, потому что изменение, сломавшее первый, ломает оба.
Пройдите по цепочке вниз и назовите, что нужно каждому шагу. Сетевая доступность, разрешение имён, источник аутентификации и сам сервис управления это четыре отдельные зависимости, и путь, разделяющий любую из них, наследует этот отказ.
Путь, который никогда не проверяли, заслуживает отдельного недоверия. Консоль, не открывавшаяся месяцами, может потребовать сброса пароля по почте, а этот почтовый ящик может размещаться на машине, до которой вы не добираетесь. Проверьте путь, пока всё работает, и вы обнаружите это тихим днём.
Используйте второй путь для одного контролируемого изменения
Из консоли снимите снимок или скопируйте конфигурацию, которую собираетесь править. Измените одну вещь. Перезагрузите сервис и прочитайте результат, прежде чем трогать что-то ещё, потому что два изменения сразу превращают восстановление в эксперимент.
Держите сессию восстановления открытой, пока делаете это. Вся ценность второго пути в том, что он переживает то, что вы меняете, поэтому закрыть его первым значит убрать единственное свойство, которое делало его полезным.
Проверяйте с пути восстановления, а не по памяти
Проверка, которая важна, возвращается ли обычный путь, и сессия восстановления это место, где вы подтверждаете это по порядку:
systemctl status openvpn-server@server --no-pager ss -lntup | grep -E ':(1194|443)\b' nft list ruleset | sed -n '1,40p' journalctl -u openvpn-server@server --since '-10 min' --no-pager | tail -n 30
Сначала прочитайте состояние сервиса, затем слушателя, затем правила, затем журнал. Сервис, работающий без слушателя, указывает на конфигурацию сервиса, а слушатель без доступных правил на фильтрацию. Порядок важен, потому что каждый шаг сужает следующий, а переход сразу к журналу обычно означает чтение ошибок, описывающих симптом, а не причину.
Документация systemctl описывает поведение состояния и перезапуска, используемое здесь, включая то, как неудачная перезагрузка оставляет предыдущий процесс работающим. Восстановить согласованную ревизию лучше, чем снова и снова подключаться с клиента, который не может починить сервер. Если условие отката, заданное до изменения, выполнено, восстановите и остановитесь.
Держите опись актуальной
Пересматривайте список доступа, когда меняются люди или инфраструктура. Проверяйте путь восстановления, пока всё работает. Отзывайте учётные записи, которыми никто не пользовался с последней реорганизации. Две устаревшие записи и один истёкший сертификат небольшая уборка во вторник и авария в воскресенье.
Записывайте, кто может пользоваться каждым путём, что он разрешает и как меняются учётные данные. Путь восстановления без владельца становится забытым входом, а это иной тип отказа, чем остаться запертым снаружи.