Loosst ip rule eng Reconnectioun mat systemd-networkd iwwerliewe
Eng ip-Reeg aus der Shell verschwënnt beim nächsten Link-Event. Deklaréiert d'Reegel, hir Tabell a hir Routen an systemd-networkd, sou datt d'Politik nei erstallt gëtt.
Setzt eng Politikregele mat ip rule derbäi, an si funktionéiert, bis de Link verschwënnt; an deem Moment ass si einfach fort. Näischt ass lued gefall: de Kernelzoustand huet sech geännert, an keen Eegentum vun der Konfiguratioun huet gewosst, datt d'Reegel sollt existéieren. Dat ass den ganzen Ënnerscheed tëscht enger Reegel, déi iwwerlieft, an enger, déi et net mécht. Op engem Host mat systemd-networkd ass d'Léisung, der Reegel en Eegentum ze ginn, amplaz de Befehl no all Reconnectioun nei auszeféieren.
Eng Reegel existéiert nëmmen, wann een hir Eegentum ass
D'Routingpolitik vum Kernel ass Zoustand, net Konfiguratioun. Si lieft am lafende System, an alles, wat d'Interface ëmmer mécht, vun där si ofhänkt, kann si mat huelen. E Shellbefehl ännert deen Zoustand an hannerléisst keen Opzeechnung vun der Absicht.
Netzwierkmanager schaffen ëmgedréint: si liesen d'Konfiguratioun, applizéieren si a applizéieren si nach eng Kéier, wann e Link-Event de virege Zoustand ongülteg mécht. Eng Reegel, déi an hirer Konfiguratioun deklaréiert ass, gëtt nei erstallt, wärend eng Reegel, déi dernieft bäigesat gëtt, en frieme Objet ouni Eegentum ass.
Dësen Ënnerscheed huet en Numm an networkd, an et ass derwäert, en ze liesen, ier een eppes aktivéiert. Friem Reegelen ginn an neie Versiounen standardméisseg ewechgeholl, wat déi iwwerrascht, déi erwaart hunn, datt hir manuell Andräg bleiwen.
Liest d'Versioun, ier Dir enger Astellung vertraut
Den Eegentumsverhalen gëtt duerch eng Astellung an networkd.conf gesteiert, an déi Astellung gëtt et an eelere systemd-Versiounen net. Kontrolléiert déi installéiert Versioun, ier Dir ronderëm si designéiert, well en eelen Host sech anescht behëlt wéi d'Dokumentatioun, déi Dir liest.
Zwee Wäerter zielen. Wannt decidéiert, ob Reegelen, déi net an der networkd-Konfiguratioun deklaréiert sinn, ewechgeholl ginn, an déi aner mécht datselwecht fir Routen. Béid ginn et ëm Eegentum an net ëm den Inhalt vun der Politik, a béid wielen an aktuelle Versiounen standardméisseg dat méi strengt Verhalen. Si global ausschalten hält all friem Reegel lieweg, wat eng vill méi breet Entscheedung ass wéi eng gewollte VPN-Politik ze deklaréieren.
systemctl --version | head -1
networkctl --version | head -1
grep -R "ManageForeign" /etc/systemd/ /usr/lib/systemd/ 2>/dev/null
Dee grep seet Iech, wat lokal agestallt ass a wat de Standard vum Hiersteller ass. D'Absenz ass och Informatioun, well si bedeit, datt de kompiléierten Standard gëllt. Schriift den Standard an Är Notizen, sou datt déi nächst Persoun en net muss erëm entdecken.
Deklaréiert d'Reegel an d'Tabell, op déi si weist
Eng Reegel an enger .network-Datei nennt eng Tabell, an dat ass alles, wat en Numm mécht. Si erstellt net d'Routen an där Tabell, a si kontrolléiert net, ob si Sënn maachen. D'Reegel ouni d'Routen ze deklaréieren ergëtt eng Politik, déi den Trafik entsprécht an en duerno fale léisst.
Deklaréiert d'Routen an der selwechter Datei, mat erreechbare nächsten Hoppen an der richteger Tabell. Halt d'Prioritéit an der deklaréierter Reegel, sou datt si an der geordneter Lëscht do landt, wou Dir erwaart. Eng Reegel, déi déi falsch Tabell méi fréi wéi virgesinn erreecht, ännert méi Trafik wéi de Service, deen Dir wollt reparéieren. Liest de Fragment hei drënner als Form an net als komplett Datei, well Interface-Eegentum an de Rescht vun der Verbindung nach musse present sinn.
[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
Luet duerno nei a liest de Kernelzoustand amplaz vun der Datei. Eng propper geparste Konfiguratioun kann nach ëmmer eng Reegel erginn, déi Dir net virgesinn hutt, an déi zwou Usiichte stëmmen nëmmen iwwerenee, wann d'Deklaratioun komplett war.
Wielt een Eegentum fir d'Interface
Zwee Manager op engem Tunnel maachen eng Sträit, déi an béide wéi e Feeler ausgesäit. Eng bestoend wg-quick-Konfiguratioun an networkd ze importéieren ass eng Migratioun an net eng Ergänzung, an béid lafe loossen d'Interface an hir Reegelen ënner zwee Eegentümer.
Maacht d'Migratioun an engem Passage: stoppt déi al Unit, deaktivéiert se, deklaréiert d'Interface an hir Routen an networkd, an luet duerno nei. Kontrolléiert, datt déi al Unit beim Start net kann zréckkommen. Eng Reschtunit, déi no engem Neistart erëm aktiv gëtt, iwwerschreift den Zoustand, deen Dir just deklaréiert hutt. Halt déi al Konfiguratiounsdatei, bis déi nei eng Reconnectioun iwwerlieft huet, a pensionéiert se duerno.
D'Eegentum vun der Mark verdéngt déiselwecht Suerg: wann eng Reegel mat enger Firewallmark iwwerenee kënnt, muss eppes déi Mark setzen. Eng Reegel, déi op eng Mark verweist, déi keen setzt, ass doudeg Konfiguratioun, déi bewosst ausgesäit.
Übt d'Liewenszyklus-Evenementer
Konfiguratioun ass just sou gutt wéi hiert Verhalen iwwer Evenementer. Huelt de Link erof, bréngt en erop, start de Service nei a renovéiert d'Adress. Liest no all eenzel dovun d'Reegellëscht an den Inhalt vun der Tabell.
sudo networkctl reload
ip rule show
ip route show table 100
sudo systemctl restart systemd-networkd
D'intendéiert Resultat ass déiselwecht Politik mat Eegentum nei erstallt an de veralte Zoustand pensionéiert, wat méi dauerhaft ass wéi no all Reconnectioun eng Shellreegel erëm bäizesetzen. Halt eng Linn am Ännerungsprotokoll, déi d'Datei nennt, déi d'Reegel gehéiert, an d'Versioun, déi se ënnerstëtzt. Dann kann den nächsten Ingenieur d'Politik fannen, ouni eng Shellgeschicht ze duerchsichen. Eng Reegel, déi keen huet, ass eng Reegel, déi erëm verluer geet.