Den üblechen Loop-Schutz ass eng Hostroute: schéck Verkéier op déi ëffentlech Adress vum VPN-Server iwwer den Uplink eraus, sou datt déi verschlësselt Sessioun ni an hirem eegenen Tunnel landt. Dat funktionéiert genee bis zu deem Moment, wou s de och eng Webdéngscht um selwechte Server iwwer den Tunnel erreeche wëlls, well d'Ausnam un der Destinatioun hänkt an d'Destinatioun identesch ass. Den Auswee ass, ophale mat der Klassifizéierung no Destinatioun an amplaz no deem ze klassifizéieren, wéi eng Socket de Pak geschéckt huet.

Fänk mat deenen zwee Flëss un, déi s de trenne wëlls

Deen een Flux ass den verschlësselten OpenVPN-Transport selwer, deen iwwer den Uplink eraus muss, soss géif den Tunnel seng eege baussenzeg Verbindung droen. Deen aneren ass eng gewéinlech HTTPS-Ufro op déiselwecht ëffentlech Adress, déi s de banne vum Tunnel wëlls, sou datt se aus enger Tunnelquell beim Déngscht ukënnt. Déiselwecht Destinatioun, a ville Fäll déiselwecht Portnummer, en aneren erfuerderlechen Wee.

An dësem Duerchgang huelen mir un: e Client op 10.90.0.10 iwwer tun1, eng ëffentlech Serveradress vun 198.51.100.25 an eng onberéiert Haapttabell, deenen hir Standard op den normale Uplink weist. D'Serversäit muss d'Webdéngscht och um bannenzege Wee akzeptéieren an de Verkéier zréck un d'Tunnelquell schécken; e Pak op eng ëffentlech Adress ze schécken hieft de Listener oder d'Firewall-Regele vum Server net op.

Ier s de eppes änderst, hale d'aktuell Reegele vum Host fest a wiel Wäerter, déi keen aneren notzt: eng Mark, eng Tabellennummer an dräi Regelprioritéiten. Halt en Zougang zréck an d'Maschinn op, deen net iwwer dës Verbindung leeft, well e Feeler hei hëlt däin eegenen Fernzougang ewech, amplaz just en Browser-Tab ze briechen.

Markéier d'Socket, déi den Ëmschlag dréit

D'Clientkonfiguratioun kritt eng Mark fir hir verschlësselt erausgoend Päck a stellt keng Route méi selwer op, sou datt d'Ersatzpolitik dat eenzegt ass, wat d'Weeër bestëmmt:

mark 42
route-noexec
disable-dco

Dezimal 42 ass hexadezimal 0x2a, an et ass d'Hexform, op déi d'Routingregele passen. D'Referenz zu de Link-Optiounen beschreift mark als eppes, wat op Linux fir verschlësselt erausgoend Päck gëllt, also genee fir d'Socket, deenen hire Wee s de muss steieren. D'Ausschalten vum Datakanal-Offload hält dëst Beispill um Userspace-Wee, wou d'Markverhalen dat ass, wat beschriwwe gëtt.

route-noexec ënnerdréckt d'automatesch Bäisetzen an Ewechhuele vu Route vum OpenVPN. Et setzt näischt an hire Plaz, also muss den Routebesëtzer vun dësem Moment un all Route ënnerhalen, déi den Tunnel brauch. Wann eng privat Destinatioun no der Ännerung verschwënnt, ass dat déi feelend Ersatzpolitik an net e Feeler an der Mark.

Behal während dësem Vorgang keng Hostroute an der Haapttabell fir 198.51.100.25. Sou eng Route féiert genee déi Ausnam erëm an, déi d'Design versicht ze verengen, an et wäert fir den HTTPS-Flux gewannen, ier eng vun de Politiken hei drënner gefrot gëtt.

Schéck alles anescht an d'Tunneltabell

Soubal d'Tunnelschnëttstell existéiert an hir Adress huet, gesäit d'Politik esou aus:

ip -4 route add default dev tun1 src 10.90.0.10 table 47100
ip -4 rule add priority 20000 lookup main suppress_prefixlength 0
ip -4 rule add priority 20001 not fwmark 0x2a lookup 47100
ip -4 rule add priority 20002 not fwmark 0x2a unreachable

Déi éischt Regel hält déi spezifesch Route vum Host sichtbar, inklusiv engem guttgeheescht lokale Netz, a mécht gläichzäiteg d'Standardroute vun der Haapttabell fir dës Nokuck onsiichtbar. Deeën Ënnerscheed zielt: den Standard z'ënnerdrécken ass net datselwecht wéi d'Tabell z'ignoréieren, an déi lokal Ausnamen, déi s de nach brauchs, iwwerliewen genee duerch si. Liest déi Ausnamen een nom aneren, amplaz unzehuelen, d'Resultat wier en universellen Noutschalter.

Onmarkéierte Verkéier fält dann an d'Tunneltabell, hëlt d'Tunnelquell op a verléisst den Host iwwer de VPN. Markéierte Verkéier fält um fwmark-Test vun den nächsten zwee Regele a geet weider bei déi gewéinlech Haaptnokuck méi wäit ënnen an der Lëscht, wou den Uplink-Standard nach läit. Déi ofschléissend unreachable-Regel ass et, déi en onmarkéierte Flux drun hënnert, bei enger feelender Tunnelroute Rou ze maachen an op den Uplink zréckzefalen. De Selekter ass vun Ufank bis Enn d'Mark, an d'Destinatiounsadress geet ni an d'Entscheedung an.

Hal dës Spär iwwer Trennung heen oprecht an installéier se mam Rescht vun der Politik amplaz vun Hand. Eng Regel, déi mat der Schnëttstell verschwënnt, ass keng Politik, et ass en Zoufall. D'Politik ze läschen, wann den Tunnel fällt, ännert de Feelermodus vun „blockéiert“ op „geleakt“, an eng veroudert Tunnelroute, déi méi spéit ofleeft, ass e vill méi einfach z'erklärende Problem wéi Verkéier, deen iwwer déi falsch Schnëttstell erausgaang ass.

Lo den Ëmwee déiselwecht Mark gesinn

Erausgoend Marke sinn nëmmen d'Halschent vum Mechanismus, an dëst ass den Deel, deen déi meescht Noreproduktiounen ausloossen. Äntwerten op déi verschlësselt Sessioun kommen iwwer den Uplink un a si gëllen der Reverse-Path-Validéierung, déi freet, ob d'Quell de selwechte Wee zréck gerout géif. Ouni Hëllef wendt déi Nokuck deng onmarkéiert Tunnelpolitik un a schléisst, de Pak wier op der falscher Schnëttstell.

D'Korrektur gehéiert dem Firewall-Besëtzer: späicher d'Mark op der erausgoender Verbindung, restauréier se op de passenden erakommende Päck a schalt quellvalidéiert Markbehandlung fir de betraffenen Wee an. Datt OpenVPN eng Socketmark setzt, erleedegt kee vun deenen dräi Dingen, an e Rezept, dat just d'Clientoptiounen opzielt, ass onkomplett. Verlaang déi Integratioun schrëftlech, well se den am mannsten sichtbaren Deel vum Design ass an deen, deen am einfachsten bei engem Neibau verluer geet.

Och eng lass Reverse-Path-Kontroll ass keen Ersatz. De lose Modus brauch nach ëmmer eng Route fir d'Quell, an déi unreachable-Spär, déi s de bäigefüügt hues, hëlt bewosst eng fir onmarkéiert Nokucken ewech. Lo d'Integratioun vun der Verbindungsmark fäerdeg maachen a begéine loossen, ier s dech op dëst Design verléisst, a behandelt Hostfilter als eng separat Fro: eng Mark ass e Routingsignal, keng Erlaabnes. Feehlt d'Integratioun, dann ass de Symptom eng Sessioun, déi sech opbaut an duerno stëll gëtt, soubal Äntwerten ukommen.

Beweis et mat zwou Routenokucken

Vergläich, wat de Kernel fir déi zwee Kontexter entscheet, a liest d'Felder dev a src amplaz den Exitstatus:

ip -4 route get 198.51.100.25
ip -4 route get 198.51.100.25 mark 0x2a

Déi éischt Nokuck sollt op tun1 mat der Tunnelquell opléisen an déi zweet op den Uplink. Dat si synthetesch Nokucken, also beweise se d'Politik an net de lafende Prozess: bestäteg de tatsächleche Transportwee vum lafende Client separat a maach duerno eng richteg HTTPS-Ufro mat ageschaltener Zertifikatsprüfung.

Schreif op, wat d'Design net ofdeckt, ier s de et fäerdeg erkläers. DNS, IPv6 an de Liewenszyklus vun de Regele brauchen all hir eege Entscheedung, an dëst ass en IPv4-Routingbeispill an net eng komplett Privatsphärkonfiguratioun. Säi Wäert ass de Selekter: den Ëmschlag kritt d'Uplink-Ausnam, an en normale Déngscht op der selwechter Adress muss se net ierwen.

Ähnlech Artikelen