Ви відкриваєте консоль, змінюєте одне правило брандмауера, і тунель, через який ви були підключені, зникає. Зміна була правильною, перезавантаження ні, і тепер єдиний шлях назад до машини це той, який ви щойно зламали. Другий шлях усередину це проєктне рішення, і він має існувати до аварії, а не під час неї.

Пройдіться тим, що у вас ще є

Почніть з екрана консолі перед вами й перелічіть шляхи, що не залежать від тунелю. Вебконсоль провайдера з послідовною сесією або VNC це один. Інтерфейс керування в окремій мережі це інший. Фізичний доступ це третій, і саме його відсутність люди виявляють у найгірший момент.

PathDepends onUsually fails when
Provider consoleAccount access and the provider's own APICredentials live in a wiki only reachable over the tunnel
Management subnetA second interface and its own routingThe bad change was a global route or firewall policy
Second tunnelA different listener, port and credentialsBoth listeners were changed in the same edit
Physical or local consoleBeing in the buildingNobody 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 описує поведінку стану й перезапуску, використану тут, зокрема те, як невдале перезавантаження залишає попередній процес працюючим. Відновити узгоджену ревізію краще, ніж знову й знову підключатися з клієнта, який не може полагодити сервер. Якщо умову відкату, задану до зміни, виконано, відновіть і зупиніться.

Тримайте опис майна актуальним

Переглядайте список доступу, коли змінюються люди або інфраструктура. Перевіряйте шлях відновлення, поки все працює. Відкликайте записи, якими ніхто не користувався від останньої реорганізації. Два застарілі записи й один прострочений сертифікат це невелике прибирання у вівторок і аварія в неділю.

Записуйте, хто може користуватися кожним шляхом, що він дозволяє і як змінюються облікові дані. Шлях відновлення без власника стає забутим входом, а це інший тип відмови, ніж залишитися замкненим зовні.

Схожі статті