Tartsa életben az ip rule szabályt újracsatlakozás után a systemd-networkd segítségével
A héjból felvett ip szabály eltűnik a következő kapcsolati eseménynél. Deklarálja a szabályt, a tábláját és az útvonalait a systemd-networkd-ben, hogy a szabályzat újra létrejöjjön.
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.