Kill-Switch no engem Wiessele vu Wi-Fi op Mobilfunk: wat bricht
E Kill-Switch gëtt géint Interface-Nimm geschriwwen, déi en Netzwierkwiessel ersetzt. Préift de baussenzege Wee, d'Adressfamillen an de Resolver, ier Dir him vertraut.
Een Ament ass den Laptop am Büro-Wi-Fi, dat nächst Ament ass en un engem Telefon ugeschloss, an den Tunnelindikator ass schonn erëm gréng, ier Dir fäerdeg sidd mam Fënsterwechsel. E gréngt Liicht mellt just, datt den Tunnel erëm verbonnen ass; wat d'Routing- a Blockéierungsstrategie an där Lück gemaach huet, ass eng aner Fro. Déi Strategie ass eng Rei u Matchesbedingungen, déi bei der leschter Installatioun kompiléiert goufen, an se nennt en Interface, eng Adress an eng Adressfamill, déi d'Iwwergab just ewechgeholl huet. Dofir gëtt de selwechten Iwwergank dräi Resultater, déi d'selwecht ausgesinn: d'Blockéierung geet weider, d'Strategie blockéiert hir eege Restauratioun, oder et geet e Wee op, deen näischt deckt.
Näischt um Bildschierm trennt déi dräi Zouden, dofir freet, un wéi eng Identifizere d'Regele gepinnt waren, amplaz wéi eng Faarf den Indikator weist. Op Linux kann eng Regel en Interface nennen oder en ipset, deen aus engem gefëllt gëtt; op Android kann enger VpnService gesot ginn, wéi eng ënnerleeër Netzwierker si soll verfollegen, iwwer setUnderlyingNetworks. All Verbindung weist op eng Verbindung, déi just ersat gëtt, an all muss duerno nei bewäert ginn.
Wat d'Iwwergab wierklech ëmschreift
Wann déi al Verbindung verschwënnt, hëlt de Kernel hir Adressen ewech, zitt d'Routen zeréck, déi duerch si gaangen sinn, an déi baut d'Auswiel vun der Quelladress aus deem op, wat bleift. Déi Standardroute geet op dee neie Gateway, an den Interface-Index, op deen déi al Regele verwisen hunn, ass fort oder fir en anert Gerät recycelt. D'Resolvere pro Verbindung ginn och erfrëscht, awer net am selwen Ament wéi d'Routen. Dat alles geschitt ënner dem VPN-Client, dofir gesäit e Client, deen just de Zoustand vu sengem eigenen Tunnel suivéiert, näischt dovu.
De Problem ass, datt eng Regel e bestëmmten Identifizierer kodéiert amplaz d'Absicht hannendrunner. Eng Regel, déi alles verwërfte wat net duerch den Tunnel-Interface erausgeet, kodéiert en Interface-Numm; eng Regel, déi den Endpunkt erlaabt, kodéiert eng Adress, déi dat neit Netzwierk soss wouhin route kann. Wann den Identifizierer verschwënnt, gëtt d'Regel net sichtbar falsch: si hält entweeder op mat eppes ze passen oder fänkt un mat dem Falschen ze passen.
Den baussenzegen Tunnel nei bauen ouni en Lach ze stoussen
Den baussenzege Transport war un déi al Quelladress gebonnen, dofir muss en en neie Socket vun der neier opmaachen. Wann den Endpunkt en Hostnumm ass an net eng wuertwiertlech Adress, muss eng Sich geléngen, während de Block nach a Kraaft ass. Dat ass d'Fal vun der Rei: eng Strategie streng genuch fir alles ausser den Endpunkt ze verwërfte wäert och d'Sich verwërfte fir en ze fannen, ausser d'Opléisung geschitt ier de Block opgehuewe gëtt oder duerch en nach liewegen Tunnel gedroe gëtt. Béid Reien kënnen funktionéieren, awer nëmmen wann de Client weess, an wéi enger en ass.
D'Clienten ënnerscheede sech hei op eng Manéier déi bei der Diagnos zielt. Déi eng léisen éischt a setzen d'Regele duerno, dofir kascht eng Iwwergab eng sichtbar Ënnerbriechung an erholen sech duerno vu selwer; déi aner halen de Block op an hänke vum iwwerlieften Tunnel of, fir d'Sich ze droen, wat komplett feelt wann den Tunnel mat der Verbindung gestuerwen ass. Eng breet direkt Standardroute derbäi setzen, fir d'Konnektivitéit zeréckzebréngen, léisst den Test ëmmer duerchgoen an hannerléisst ëmmer de Lach, deen Dir verhënnert hutt.
Eng Route, déi nach op den ale Gateway weist, gëtt déiselwecht ageklemmt Erhuelung aus aner Ursaach, dofir liest d'Tabell ier Dir de Client beschëllegt. D'Befehl heien drënner nennen den Interface an d'Quelladress, déi de Kernel wierklech benotze géif, an dat entscheet an enger Linn, ob de ale Wee nach installéiert ass.
ip route get 1.1.1.1
ip -6 route get 2606:4700:4700::1111Wann déi nei Verbindung IPv6 bréngt an d'Regele net
Mobil- a Gaaschtnetzwierker verdeelen dacks e globale IPv6-Prefix, och wann den haardverdrahten LAN vum Büro dat ni gemaach huet. Eng Strategie, déi just als IPv4-Regelen geschriwwe gouf, déi üblech Form vu meeschte selwer gebaute iptables- an nftables-Rezepter, deckt dovu näischt. Den Tunnel bleift verbonnen, Uwendungen mat IPv6-Erreechbarkeet ginn dobaussen, an den Indikator kann den Ënnerscheed net weisen, well den Tunnel wierklech steet. De Spigelfall ass grad esou heefeg: e Reegelset nëmmen fir IPv6 mécht näischt op engem Netzwierk, dat kee v6 ubitt.
Vergläicht, wat d'Verbindung ubitt, mat deem wat d'Strategie ernimmt, op béiden Säite vun der Iwwergab. Dës Befehlen drécken déi selwecht Fakten, mat deenen de Client schafft:
ip -4 route show default
ip -6 route show default
sudo nft list ruleset | grep -c 'ip6 'Wann den zweete Befehl eng Standardroute dréckt, während den drëtten Null zeréckgëtt, kann déi nei Verbindung d'Maschinn iwwer IPv6 erausféieren, ouni datt eng Regel oppasst. Féiert all dräi no dem Wiessel nach eng Kéier aus, well déi interessant Zuel den Ënnerscheed tëscht den zwou Ausféierunge ass. Wann den zweeten näischt dréckt, gëllt de ëmgekehrte Fall an all v6-schwéier Strategie ass do just Dekoratioun.
De Resolver wiesselt mëtt an der Sessioun d'Hänn
Op moderne Systemer sinn d'Resolvere mat Verbindungen associéiert, dofir kënnt eng nei Verbindung mat engem neie Resolverset an eventuell enger anerer split-DNS-Vue. systemd-resolved hält ee Scope pro Verbindung a wielt tëscht hinnen no der Route, während macOS scoped Resolvere vum dynamischen Depot liest an d'Reiefolleg vun den Interface respektéiert. E Client, deen säin eigenen Resolver installéiert, konkurréiert mat deem vun der Verbindung, an d'Prioritéitsregele, op déi keen oppasst, entscheeden de Gewënner. Dann kann d'Nimmopléisung briechen, während d'Paketfilterung genee dat mécht, wofir si geschriwwe gouf.
Liest de Resolver deen aktiv ass, net deen deen ageriicht ass. Op engem systemd-Host weist den Ënnerbefehl status, vu wéi enger Verbindung all Scope koum an ob en private-DNS-Numm a Kraaft ass:
resolvectl status --no-pager
resolvectl query intranet.example.comWann d'Ufro iwwer déi physesch Verbindung erausgeet an net iwwer den Tunnel, huet de Client de Prioritéitsconcours verluer an keng Firewall-Astellung wäert d'Nimméierung flécken. Vergläicht de Wee vun der Ufro op béide Säite vun der Iwwergab, fir ze gesinn wéi eng sech geréckelt huet. En Numm, deen op eng privat Adress opléist, déi dat neit Netzwierk net route kann, ass en drëtte Fall, an en erschéngt als Zäitiwwerleeung an net als Feeler.
Übt d'Iwwergab an halet de Rekord
Reproduzéiert d'Ännerung bewosst amplaz drop ze waarden. Setzt den Tunnel op der éischter Verbindung op, start eng laangdauernd Iwwerleeung an eng widderholl Sich, wiesselt dann d'Verbindung a kuckt wéi eng iwwerliewt. Notéiert den Intervall tëscht dem Verschwanne vun der aler Verbindung an der Meldung vum Tunnel datt en verbonnen ass, well an deem Fënster huet d'Strategie gehalen oder net. Féiert d'Sequenz och an déi aner Richtung aus, sou datt d'Resultat net eesäiteg ass.
Ausnamen brauchen hire eigenen Duerchgang, well en Ëmwee, deen um alen Netzwierk gerechtfäerdegt war, um neien net automatesch gerechtfäerdegt ass. En Drucker, en NAS oder e captive Portal um Heem-LAN huet keng Entspriechung am Mobilfunk, an d'Ausnam, déi dohinner koum, gëtt eng Regel ouni Entspriechung.
Schreift d'Interface-Nimm, d'Famillen déi ugebuede ginn, de Resolver deen a Kraaft ass an d'Längt vun der Ënnerbriechung fir all Richtung op. Eng Neiverbindung beweist, datt den Transport sech erholl huet, net datt de Block an der Lück gehalen huet, an dat si getrennt Behaaptungen fir en Ticket. Mat deem Rekord gëtt déi nächst Iwwergab mat engem bekannten Zoustand verglach amplaz mat der Erënnerung.