Канфігурацыя VPN перажывае перастварэнне кантэйнера, толькі калі вы яе мантуеце
Файл, адрэдагаваны ў працуючым кантэйнеры, жыве ў пласце, які знікае. Параўнайце bind-мантаванні, volumes і secrets, потым перастварыце і праверце чатыры рэчы.
Вы рэдагуеце канфігурацыю WireGuard унутры працуючага кантэйнера, усё працуе, і наступнае абнаўленне вобраза яе сцірае. Нічога не было наладжана няправільна. Файл жыў у запісваемым пласце кантэйнера, які існуе толькі для гэтага асобніка кантэйнера. Важнае параўнанне не ў тым, які інструмент выкарыстоўваць, а ў тым, якія ўваходы аб'яўляе ваша разгортванне. Усё, што вы адрэдагавалі ўручную, — гэта ўваход, пра які разгортванне не ведае.
Два віды стану, адзін з іх аднаразовы
Кантэйнер мае запісваемы пласт для змен, зробленых падчас працы, і гэты пласт адкідваецца, калі кантэйнер замяняюць. Ён не сховішча канфігурацыі і не рэзервовая копія. Вобраз плюс аб'яўленыя ўваходы — гэта поўнае азначэнне таго, што працуе.
Спытайцеся, якія з вашых файлаў VPN з'яўляюцца аб'яўленымі ўваходамі, а якія — выпадковасцю:
docker diff wg-vpn
docker inspect --format '{{json .Mounts}}' wg-vpndiff пералічвае тое, што змянілася ў запісваемым пласце, а гэта менавіта набор рэчаў, якія знікнуць. Спіс мантаванняў паказвае тое, што застанецца. Параўнанне двух адказвае на пытанне, перш чым вы нешта страціце.
Bind-мантаванне, іменны volume або secret: што кожнае абараняе
Усе тры могуць захоўваць профіль VPN, і яны адрозніваюцца тым, хто можа яго чытаць і што адбываецца пры замене.
| Mechanism | Survives recreation | Who can read it |
|---|---|---|
| Writable layer | No | Anyone with container access, until it is gone |
| Bind mount | Yes, while the host path exists | Whatever the host permissions allow |
| Named volume | Yes, until the volume is removed | Managed by the runtime |
| Secret | Yes, as a declared input | The container process, by design |
Bind-мантаванне адлюстроўвае шлях хоста, таму файл абаронены настолькі, наколькі абаронены гэты шлях, і бачны настолькі, наколькі дазваляюць правы хоста. Іменны volume кіруецца асяроддзем выканання і перажывае выдаленне кантэйнера, што робіць яго больш бяспечным тыповым выбарам для стану, якім валодае разгортванне. Механізм secret прызначаны для матэрыялу, які вы не хочаце трымаць у вобразе або зменнай асяроддзя.
Не стаўцеся да кожнай зменнай асяроддзя і кожнага файла хоста як да раўназначнай абароны, бо яны такімі не з'яўляюцца.
Рэдагаванне ўнутры кантэйнера — гэта пастка
Пастка не ў інструменце, а ў кірунку рэдагавання. Змена, зробленая ўнутры працуючага кантэйнера, нябачная для разгортвання, таму наступнае перастварэнне моўчкі яе адкочвае, і сімптом выглядае як рэгрэсія ў вобразе. Калі вам трэба змяніць нешта там для дыягностыкі, скапіруйце гэта адразу вонкі і пастаўце ў аб'яўлены ўваход. Потым перастварыце, каб даказаць, што разгортванне яго ўзнаўляе.
Профіль можа несці прыватныя ключы і матэрыял уліковага запісу, што робіць рэзервовую копію гэтага файла задачай працы з сакрэтамі, а не проста капіраваннем файла. Трымайце ўласнасць і доступ на чытанне абмежаванымі фактычным працэсам кантэйнера, замест таго каб пашыраць каталог хоста, каб знікла памылка правоў.
Менавіта такое пашырэнне ператварае зручнасць кантэйнера ў нагоду для знешняга доступу да хоста.
Перастварайце свядома, потым праверце чатыры рэчы
Запішыце версію вобраза, патрэбную прыладу і магчымасці, падключэнне да сеткі і пастаянныя ўваходы. Спіс прылад і магчымасцей асабліва важны для кантэйнера VPN, бо тунелю патрэбна сеткавая прылада і права яе наладзіць.
Пацвердзіце, які згенераваны стан часу выканання трэба перабудаваць, а не захаваць. Ключы, якія тунель згенераваў пры першым запуску, — гэта стан, і рашэнне захаваць іх ці згенераваць нанава мае наступствы для кожнага peer, які ведае стары публічны ключ.
Пасля кантраляванага перастварэння праверце ідэнтычнасць, маршрутызацыю, DNS і патрэбную блакіроўку пры збоі. Працэс, які запускаецца без памылак, не даказвае нічога з гэтых чатырох. Праверце гэта, пакуль тунель працуе, і зноў пасля яго прыпынення, бо блакіроўка пры збоі паказвае сябе толькі тады, калі тунель знікае.
Трымайце копію для аднаўлення па-за кантэйнерам
Трымайце копію для аднаўлення, якая жыве незалежна ад кантэйнера, і праверце яе аднаўленне праз дакументаваны працэс. Неправераная рэзервовая копія профілю VPN — гэта надзея, асабліва калі шлях аднаўлення патрабуе правоў, патрэбных працэсу кантэйнера.
Калі кантэйнер, які валодае VPN, замяняюць, узгадніце праграмы, што дзеляць яго сеткавы стек, у межах падтрымліванага жыццёвага цыкла асяроддзя выканання.
Гэтая ўзгодненасць — розніца паміж перазапускам і прастоем. Разгортванне павінна апісваць, адкуль бярэцца канфігурацыя, а дакументацыя па volumes — гэта месца, дзе правяраюць, што асяроддзе выканання сапраўды захоўвае.