Редактирате конфигурацията на WireGuard в работещ контейнер, тя работи, и следващата актуализация на образа я изтрива. Нищо не е било конфигурирано погрешно. Файлът живееше в записваемия слой на контейнера, който съществува само за този екземпляр на контейнера. Важното сравнение не е кой инструмент да използвате, а какви входове декларира внедряването ви. Всичко, което сте редактирали на ръка, е вход, за който внедряването не знае.

Два вида състояние, едното е за изхвърляне

Контейнерът има записваем слой за промените по време на работа и този слой се изхвърля, когато контейнерът бъде заменен. Той не е хранилище за конфигурация и не е резервно копие. Образът плюс декларираните входове са цялата дефиниция на това, което работи.

Питайте кои от вашите VPN файлове са декларирани входове и кои са случайности:

docker diff wg-vpn
docker inspect --format '{{json .Mounts}}' wg-vpn

diff изброява какво се е променило в записваемия слой, а това е точно наборът от неща, които ще изчезнат. Списъкът с монтирания показва какво остава. Сравнението на двете отговаря на въпроса, преди да загубите нещо.

Bind mount, именуван volume или secret: какво защитава всяко

И трите могат да съдържат VPN профил и се различават по това кой може да го чете и какво се случва при замяна.

MechanismSurvives recreationWho can read it
Writable layerNoAnyone with container access, until it is gone
Bind mountYes, while the host path existsWhatever the host permissions allow
Named volumeYes, until the volume is removedManaged by the runtime
SecretYes, as a declared inputThe container process, by design

Bind mount съпоставя път на хоста, така че файлът е защитен толкова, колкото е защитен този път, и видим толкова, колкото позволяват правата на хоста. Именуваният volume се управлява от средата за изпълнение и оцелява при премахване на контейнера, което го прави по-безопасната настройка по подразбиране за състояние, което внедряването притежава. Механизмът secret е за материал, който не искате в образ или променлива на средата.

Не третирайте всяка променлива на средата и всеки файл на хоста като равностойна защита, защото не са.

Редактирането вътре в контейнера е капанът

Капанът не е инструментът, а посоката на редакцията. Промяна, направена в работещ контейнер, е невидима за внедряването, затова следващото пресъздаване тихо я връща назад и симптомът изглежда като регресия в образа. Ако трябва да направите промяна там за диагностика, копирайте я веднага навън и я поставете в декларирания вход. След това пресъздайте, за да докажете, че внедряването я възпроизвежда.

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

Това разширяване е начинът, по който удобство в контейнера се превръща в излагане на хоста.

Пресъздайте умишлено, после проверете четири неща

Запишете версията на образа, необходимото устройство и възможности, мрежовото свързване и постоянните входове. Списъкът с устройства и възможности е особено важен за VPN контейнер, защото тунелът се нуждае от мрежовото устройство и от привилегията да го конфигурира.

Потвърдете кое генерирано състояние по време на работа трябва да се изгради наново, а не да се запази. Ключовете, които тунелът е генерирал при първото стартиране, са състояние и решението дали да ги запазите, или да ги генерирате отново, има последствия за всеки peer, който знае стария публичен ключ.

След контролирано пресъздаване проверете самоличност, маршрутизация, DNS и необходимата блокировка при отказ. Процес, който стартира без грешки, не доказва нито едно от тези четири. Проверете го, докато тунелът работи, и отново след като го спрете, защото блокировката при отказ се показва само когато тунелът изчезне.

Пазете копие за възстановяване извън контейнера

Дръжте копие за възстановяване, което живее независимо от контейнера, и тествайте възстановяването му по документирания процес. Нетествано резервно копие на VPN профил е надежда, особено когато пътят за възстановяване включва права, от които процесът на контейнера се нуждае.

Ако контейнер, който притежава VPN, бъде заменен, координирайте приложенията, които споделят мрежовия му стек, в рамките на поддържания жизнен цикъл на средата за изпълнение.

Тази координация е разликата между рестарт и прекъсване. Внедряването трябва да описва откъде идва конфигурацията, а документацията за volumes е мястото, където проверявате какво средата за изпълнение наистина запазва.

Подобни статии