Uređujete WireGuard konfiguraciju unutar pokrenutog kontejnera, radi, a sljedeće ažuriranje slike je briše. Ništa nije bilo pogrešno konfigurisano. Datoteka je živjela u zapisivom sloju kontejnera, koji postoji samo za tu instancu kontejnera. Važno poređenje nije koji alat koristiti, nego koje ulaze vaše postavljanje deklarira. Sve što ste uredili ručno je ulaz za koji postavljanje ne zna.

Dvije vrste stanja, jedno je za odbaciti

Kontejner ima zapisivi sloj za promjene napravljene u vrijeme rada, a taj sloj se odbacuje kada se kontejner zamijeni. Nije skladište konfiguracije i nije sigurnosna kopija. Slika plus deklarisani ulazi cijela su definicija onoga što radi.

Pitajte koje su vaše VPN datoteke deklarisani ulazi, a koje slučajnosti:

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

Diff navodi šta se promijenilo u zapisivom sloju, a to je upravo skup stvari koje će nestati. Popis mountova pokazuje šta preživljava. Poređenje to dvoje odgovara na pitanje prije nego što nešto izgubite.

Bind mount, imenovani volumen ili tajna: šta svaki štiti

Sva tri mogu držati VPN profil i razlikuju se po tome ko ga može čitati i šta se događa pri zamjeni.

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 mapira putanju hosta, pa je datoteka zaštićena onoliko koliko je zaštićena ta putanja i vidljiva onoliko koliko dozvoljavaju dozvole hosta. Imenovani volumen upravlja runtime i preživljava uklanjanje kontejnera, što ga čini sigurnijim zadanim izborom za stanje koje posjeduje postavljanje. Mehanizam tajne je za materijal koji ne želite u slici ili varijabli okruženja.

Ne tretirajte svaku varijablu okruženja i svaku datoteku hosta kao jednaku zaštitu, jer nisu.

Uređivanje unutar kontejnera je zamka

Zamka nije alat, nego smjer uređivanja. Promjena napravljena unutar pokrenutog kontejnera nevidljiva je postavljanju, pa je sljedeće ponovno stvaranje tiho vraća i simptom izgleda kao regresija u slici. Ako morate nešto promijeniti tamo radi dijagnostike, odmah to kopirajte van i stavite u deklarisani ulaz. Zatim ponovo stvorite da dokažete da postavljanje to reprodukuje.

Profil može nositi privatne ključeve i računski materijal, što sigurnosnu kopiju te datoteke čini zadatkom rukovanja tajnama, a ne kopiranjem datoteke. Držite vlasništvo i pristup čitanju ograničene na stvarni proces kontejnera, umjesto da proširite direktorij hosta da bi greška dozvola nestala.

To proširenje je način na koji pogodnost u kontejneru postaje izloženost hosta.

Namjerno ponovo stvorite, zatim provjerite četiri stvari

Zapišite verziju slike, potrebni uređaj i mogućnosti, mrežno povezivanje i trajne ulaze. Popis uređaja i mogućnosti posebno je važan za VPN kontejner, jer tunel treba mrežni uređaj i privilegiju da ga konfiguriše.

Potvrdite koje generisano stanje rada treba ponovo izgraditi, a ne sačuvati. Ključevi koje je tunel generisao pri prvom pokretanju su stanje, a odluka da li ih zadržati ili ponovo generisati ima posljedice za svakog peera koji zna stari javni ključ.

Nakon kontrolisanog ponovnog stvaranja provjerite identitet, usmjeravanje, DNS i potrebnu blokadu pri kvaru. Proces koji se pokrene bez grešaka ne dokazuje nijednu od te četiri stvari. Provjerite to dok je tunel aktivan i ponovo nakon što ga zaustavite, jer blokada pri kvaru pokazuje se samo kada tunel nestane.

Držite kopiju za oporavak izvan kontejnera

Držite kopiju za oporavak koja živi nezavisno od kontejnera i testirajte njeno vraćanje kroz dokumentovani postupak. Netestirana sigurnosna kopija VPN profila je nada, posebno kada putanja oporavka uključuje dozvole koje proces kontejnera treba.

Ako se kontejner koji posjeduje VPN zamijeni, uskladite aplikacije koje dijele njegov mrežni stek u okviru podržanog životnog ciklusa runtimea.

Ta usklađenost je razlika između restarta i prekida. Postavljanje treba opisati odakle konfiguracija dolazi, a dokumentacija o volumenima je mjesto gdje provjeravate šta runtime zaista čuva.

Povezani članci