Miért írja újra a wg-quick a wg0.conf fájlt az interfész leállításakor
A SaveConfig leállításkori mentés, nem háttérbeli szinkronizálás. Szerkessze a fájlt, miközben az alagút fut, és az újraindítás visszaírhatja rá a régi állapotot.
Hozzáad egy peert a /etc/wireguard/wg0.conf fájlhoz, lefuttatja a systemctl restart wg-quick@wg0 parancsot, és a peer eltűnik a fájlból, amikor legközelebb megnézi. Semmi nem rontott el semmit. Az újraindítás egy leállítás, amelyet indítás követ, és a leállítási lépés visszaírhatja a jelenlegi futásidejű állapotot arra a fájlra, amelyet épp most szerkesztett. A felelős beállítás ugyanabban a fájlban él, amelyet szerkesztett, és ez teszi a hurkot olyan zavaróvá, amikor először találkozik vele.
Két állapot, egy fájl és egy mentés leállításkor
A WireGuard futásidejű állapota és egy wg-quick konfigurációs fájl kapcsolódnak, de különböznek. A fájl bemenet: a wg-quick beolvassa, létrehozza az interfészt, beállítja a címeket és az útvonalakat, és konfigurálja a peer-eket. A kernel-eszköz az élő objektum, és a wg segítségével végzett alacsony szintű módosítások soha nem íródnak vissza maguktól.
Kivéve egy irányban. Amikor a SaveConfig = true megjelenik az interfész szakaszban, a wg-quick az interfész leállításának részeként menti az élő konfigurációt a fájlba. A wg-quick kézikönyv pontosan erre figyelmeztet: az interfész futása közben a fájlban végzett módosítások felülíródhatnak, amikor eltávolítják. Ez leállításkori mentés, nem háttéridőzítő, ezért csak akkor indul, amikor valami leállítja az interfészt.
| Action | What it writes | When it surprises you |
|---|---|---|
wg set on a live interface | Kernel state only | After reboot, when the file was never updated |
wg-quick down with SaveConfig | Live state into the file | Right after you edited the file |
wg syncconf | Kernel state only | Never; it does not touch the file |
wg-quick up | Kernel state from the file | If the file is stale, you get the old tunnel |
Olvassa a táblázatot a sorrendre vonatkozó figyelmeztetésként. Ezen a területen minden véletlen veszteség egy mentés előtt történt szerkesztésből származik, nem utána.
Először állítsa le, másodszor szerkessze, végül indítsa el
Ha a fájl az igazság forrása, tegye a fájlt tekintélyessé felépítés által, nem remény által. Állítsa le az interfészt, erősítse meg, hogy eltűnt, majd szerkessze, majd hozza vissza. A szabály egyszerű: nem létezik szerkesztés, amíg egy mentés még futhat.
sudo cp -a /etc/wireguard/wg0.conf /root/wg0.conf.$(date +%F-%H%M)
sudo wg-quick down wg0
ls /sys/class/net/wg0 2>/dev/null || echo "interface is gone"
sudoedit /etc/wireguard/wg0.conf
sudo wg-quick up wg0
A biztonsági mentés sora nem ceremónia. Ha az alagút az út ehhez a géphez, a leállítási lépés befejezheti a munkamenetét, és a lemezen lévő másolat plusz egy konzol vagy sávon kívüli útvonal az egyetlen működő visszaállítás. Ellenőrizze azt a második sort, mielőtt megbízik benne: egy elavult interfésznév egy csendben meghiúsuló szkriptben az, ahogy az emberek egy még élő fájlt szerkesztenek.
A SaveConfig = false beállítása normál leállítás előtt a másik elfogadott út, és abban a fájlban kell megtenni, amelyet a wg-quick valóban olvas. Megakadályozza azt az egy automatikus mentést. Nem éri el, hogy egy külön NetworkManager-profil, egy router-export vagy egy konténer belépési pont újratöltse a szerkesztéseit, mert ezek a kezelők egyáltalán nem olvassák ezt a fájlt.
Alkalmazza a peer-változásokat az interfész szétszakítása nélkül
Nem minden szerkesztés igényel kiesést. A peer-szintű változások egy futó interfészre alkalmazhatók úgy, hogy a fájlt konfigurációvá alakítjuk és szinkronizáljuk, ami teljesen elkerüli a leállítási lépést, és így a mentést is:
sudo wg syncconf wg0 <(sudo wg-quick strip wg0)
sudo wg show wg0 peers
sudo wg show wg0 latest-handshakes
A strip lépés számít. Kinyomtatja a fájlt a csak wg-quickhez tartozó kulcsok eltávolításával, így a címek, a DNS és az útvonal-irányelvek nem kerülnek olyan eszközbe, amely nem érti őket. A szinkronizálás ezután az interfész újralétrehozása nélkül alkalmazza a peer-eket és kulcsokat az élő eszközre, így a meglévő munkamenetek és útvonalak túlélik.
Legyen pontos a korlátokkal. A peer-ek szinkronizálása nem változtatja meg az interfész címét, a wg-quick által hozzáadott útvonalakat vagy a feloldó konfigurációját, mert ezek egyike sem tartozik a WireGuard-eszközhöz. Egy alhálózat hozzáadása a AllowedIPs-hez és annak várása, hogy a kernel átirányítja, a klasszikus félreolvasás; az útvonalat a wg-quicknek kell hozzáadnia felemeléskor, vagy Önnek.
Ellenőrizze, kié az interfész, mielőtt bármit szerkeszt
Egy konfigurációs rendszer által kezelt asztali gépen vagy szerveren a fájl lehet kimenet is, nem bemenet. Egy NetworkManager-kapcsolat, egy router által generált profil vagy egy konténer indítószkriptje mind ugyanazzal az interfésznévvel rendelkezhet, és ebben az esetben egy hibátlan wg-quick-sorozat is a rossz artefaktumot szerkeszti.
systemctl status wg-quick@wg0 --no-pager
nmcli connection show | grep -i wireguard
sudo wg showconf wg0 | head -n 5
A harmadik parancs az élő konfigurációt a fájllal azonos formátumban nyomtatja ki, a privát kulccsal együtt, ami hasznos az összehasonlításhoz és veszélyes egy jegyben. Takarja ki, mielőtt beilleszti; egy privát kulcs egy támogatási szálban tartós kompromittálódás, nem elírás.
Ha a szolgáltatásegység inaktív, de az interfész létezik, valami más hozta létre, és a fájl nem tekintélyes. Ez az egyetlen megfigyelés egy órányi szerkesztést takarít meg egy olyan fájlon, amelyet semmi nem olvas.
Ellenőrizze a következő újraindítást, majd tartson meg egy visszaállítást
A teszt, amely valóban bizonyítja a javítást, egy második újraindítás, mert ez az a sorozat, amely első alkalommal meghiúsult. Erősítse meg, hogy a peer túléli, és hogy az élő konfiguráció továbbra is megegyezik a lemezen lévővel:
sudo systemctl restart wg-quick@wg0
sudo wg show wg0 latest-handshakes
sudo grep -c '^\[Peer\]' /etc/wireguard/wg0.conf
Futtassa kétszer az újraindítást. Egyetlen tiszta átfutás szerencse is lehet: az első újraindítás felemészthet egy futásidejű változást, amelyet még nem mentettek, ezért a második az, amely megmondja, hogy a fájl és a futás az első végén egyetértett.
Tartsa meg a biztonsági mentést a folyamat kezdetétől addig, amíg el nem végezte a kettős újraindítást, majd törölje, vagy helyezze át a konfigurációs könyvtáron kívülre. Egy elkóborolt wg0.conf.bak a valódi fájl mellett ártalmatlan a wg-quick számára, és zavaró a következő embernek, aki végül a rosszat fogja szerkeszteni.