Vegyen fel egy szabályzati szabályt ip rule-lal, és működik, amíg a kapcsolat el nem tűnik; ekkor egyszerűen nincs többé. Semmi nem hasalt el hangosan: a kernel állapota megváltozott, és egyetlen konfigurációtulajdonos sem tudta, hogy a szabálynak léteznie kellene. Ez a teljes különbség a megmaradó és a nem megmaradó szabály között. Egy systemd-networkd-t futtató gazdagépen a megoldás az, hogy tulajdonost adunk a szabálynak, nem pedig újrafuttatjuk a parancsot minden újracsatlakozás után.

Egy szabály csak akkor létezik, ha valaki birtokolja

A kernel útválasztási szabályzata állapot, nem konfiguráció. A futó rendszerben él, és bármi, ami lerombolja a függő interfészt, magával viheti. A héjparancs megváltoztatja ezt az állapotot, és nem hagy nyomot a szándékról.

A hálózatkezelők fordítva dolgoznak: olvassák a konfigurációt, alkalmazzák, és újra alkalmazzák, amikor egy kapcsolati esemény érvényteleníti a korábbi állapotot. A konfigurációjukban deklarált szabály újra létrejön, míg a melléjük felvett szabály idegen objektum tulajdonos nélkül.

Ennek a különbségnek neve van a networkd-ben, és érdemes elolvasni, mielőtt bármit engedélyez. Az idegen szabályokat az újabb verziók alapértelmezés szerint eltávolítják, ami azokat lepi meg, akik a kézi bejegyzéseik megmaradására számítottak.

Olvassa el a verziót, mielőtt megbízik egy beállításban

A tulajdonosi viselkedést a networkd.conf egy beállítása vezérli, és ez a beállítás a régebbi systemd-kiadásokban nem létezik. Ellenőrizze a telepített verziót, mielőtt erre építene, mert egy régebbi gazdagép másként viselkedik, mint a dokumentáció, amelyet olvas.

Két érték számít. Az egyik eldönti, hogy eltávolítják-e a networkd konfigurációjában nem deklarált szabályokat, a másik pedig ugyanezt teszi az útvonalakkal. Mindkettő a tulajdonról szól, nem a szabályzat tartalmáról, és mindkettő alapértelmezés szerint a szigorúbb viselkedést választja a jelenlegi kiadásokban. Globális kikapcsolásuk minden idegen szabályt életben tart, ami sokkal szélesebb döntés, mint egy kívánt VPN-szabályzat deklarálása.

systemctl --version | head -1
networkctl --version | head -1
grep -R "ManageForeign" /etc/systemd/ /usr/lib/systemd/ 2>/dev/null

Ez a grep megmondja, mi van helyben beállítva, és mi a szállító alapértéke. A hiány is információ, mert azt jelenti, hogy a lefordított alapérték érvényes. Írja le az alapértéket a jegyzeteibe, hogy a következő embernek ne kelljen újra felfedeznie.

Deklarálja a szabályt és a táblát, amelyre mutat

Egy .network fájlban lévő szabály megnevez egy táblát, és egy név ennyit tesz. Nem hozza létre a táblán belüli útvonalakat, és nem ellenőrzi, hogy van-e értelmük. A szabály útvonalak nélküli deklarálása olyan szabályzatot ad, amely illeszti a forgalmat, majd eldobja.

Deklarálja az útvonalakat ugyanabban a fájlban, elérhető következő ugrásokkal és a megfelelő táblával. Tartsa meg a prioritást a deklarált szabályban, hogy a rendezett listában oda kerüljön, ahová várja. Az a szabály, amely a rossz táblába a tervezettnél korábban ér el, több forgalmat változtat meg, mint a szolgáltatás, amelyet javítani akart. A lenti részletet formaként olvassa, nem teljes fájlként, mert az interfész tulajdonának és a kapcsolat többi részének még jelen kell lennie.

[RoutingPolicyRule]
Family=ipv4
IPProtocol=tcp
SourcePort=443
Table=100
Priority=1000

[Route]
Destination=10.80.0.0/24
Gateway=10.80.0.1
Table=100

Ezután töltse újra, és a fájl helyett a kernel állapotát olvassa ki. Egy tisztán elemzett konfiguráció is adhat olyan szabályt, amelyet nem szándékolt, és a két nézet csak akkor egyezik, ha a deklaráció teljes volt.

Válasszon egyetlen tulajdonost az interfésznek

Két kezelő egy alagúton olyan harcot szül, amely mindkettőben hibának látszik. Egy meglévő wg-quick beállítás importálása a networkd-be migráció, nem kiegészítés, és mindkettő futtatása két tulajdonos alatt hagyja az interfészt és szabályait.

Végezze el a migrációt egy menetben: állítsa le a régi unitot, tiltsa le, deklarálja az interfészt és útvonalait a networkd-ben, majd töltse újra. Ellenőrizze, hogy a régi unit nem tud visszatérni a rendszerindításnál. Egy hátramaradt unit, amely újraindítás után újra aktiválódik, felülírja az éppen deklarált állapotot. Tartsa meg a régi konfigurációs fájlt, amíg az új túlél egy újracsatlakozást, majd vonja ki a használatból.

A jelzés tulajdonlása ugyanazt a gondosságot érdemli: ha egy szabály tűzfaljelzésre illeszkedik, valaminek be kell állítania azt a jelzést. Az a szabály, amely olyan jelzésre hivatkozik, amelyet senki nem állít be, halott konfiguráció, amely szándékosnak látszik.

Gyakorolja az életciklus-eseményeket

A konfiguráció annyit ér, amennyit az eseményeken át nyújtott viselkedése ér. Vegye le a kapcsolatot, hozza fel, indítsa újra a szolgáltatást, és újítsa meg a címet. Mindegyik után olvassa el a szabálylistát és a tábla tartalmát.

sudo networkctl reload
ip rule show
ip route show table 100
sudo systemctl restart systemd-networkd

A szándékolt eredmény ugyanaz a tulajdonos szabályzat újra létrehozva, és az elavult állapot kivonva, ami tartósabb, mint minden újracsatlakozás után újra felvenni egy héjszabályt. Tartson egy sort a változásnaplóban, amely megnevezi a szabályt birtokló fájlt és az őt támogató verziót. Akkor a következő mérnök megtalálja a szabályzatot anélkül, hogy héjtörténetet kutatna. Az a szabály, amelyet senki nem birtokol, újra el fog veszni.

Kapcsolódó cikkek