Заблоковано доступ до 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 описує поведінку стану й перезапуску, використану тут, зокрема те, як невдале перезавантаження залишає попередній процес працюючим. Відновити узгоджену ревізію краще, ніж знову й знову підключатися з клієнта, який не може полагодити сервер. Якщо умову відкату, задану до зміни, виконано, відновіть і зупиніться.
Тримайте опис майна актуальним
Переглядайте список доступу, коли змінюються люди або інфраструктура. Перевіряйте шлях відновлення, поки все працює. Відкликайте записи, якими ніхто не користувався від останньої реорганізації. Два застарілі записи й один прострочений сертифікат це невелике прибирання у вівторок і аварія в неділю.
Записуйте, хто може користуватися кожним шляхом, що він дозволяє і як змінюються облікові дані. Шлях відновлення без власника стає забутим входом, а це інший тип відмови, ніж залишитися замкненим зовні.