D'Ufro ass ëmmer eng Variant vum selwechte Saz: behalt de VPN fir ze browsen, awer looss SSH oder eng Backup-Aufgab déi normal Verbindung benotzen. Den Tipp, dee ronderëm geet, de Port mat iptables NAT-Regelen ëmzeleeden, mécht dat net. Eng NAT-Regel schreift Adressen a Porten an engem Flux ëm; si wielt ni, iwwer wéi eng Interface de Paket erausgeet. Déi Entscheedung gehéiert zum Routing-Lookup, an de Routing-Lookup brauch Hëllef fir ee Port ze gesinn.

Firwat eng normal Route keen Port ka treffen

Linux wielt eng Route, andeems en d'Zieladress an enger Tabell sicht, nodeems d'Kandidatentabellen duerch Policy-Regele gefiltert goufen. Déi Regele kënnen op eng Firewall-Mark, eng Quelladress, eng erakommend Interface oder eng UID passen. Den Route-Andrag selwer huet kee Portfeld, well d'Route gewielt gëtt, ier den Transportheader zielt.

Aktuell iproute2 a Käre vergréisseren de Selekter vun der Regel: ipproto, sport an dport ginn akzeptéiert, sou datt ip rule add ipproto tcp dport 22 table 100 den Intuitioun an enger Linn ausdréckt. Fëllt ip rule add help um richtege Host aus, fir ze gesinn, ob ären Build dport oplëscht. Wann jo, sidd Dir mat engem Kommando fäerdeg; wann net, ass de Markwee hei drënner d'Äquivalent.

Wéi och ëmmer, d'Regel ass nëmmen e Weiser. D'Tabell 100 brauch nach ëmmer eng Route, an dat ass dee Stéck, deen d'Leit vergiessen.

Dräi Stécker, oder eng

Déi modern Form ass déi eenzeg Regel uewen plus eng Route an der alternativer Tabell. Déi klassesch Form setzt netfilter an d'Mëtt: markéier de Paket, da passt de Mark an enger Regel. Béid hale bei der selwechter Opzoekung op; si ënnerscheeden sech doran, wou de Port gelies gëtt.

De Mark-Approche gëtt et, well netfilter den Transportheader gesäit an de Routing-Code en historesch net gesinn huet. Dat ass deen ganze Mechanismus, an et erkläert, firwat de Fallback dräi Zesummenaarbecht Stécker sinn an net ee cleveren Kommando.

Déi dräi Stécker an der Rei

Fir d'éischt markéier d'Flëss, déi s du wëlls ëmleeden, an enger Kette, déi fréi genuch leeft, fir datt de Mark virun der Route-Entscheedung existéiert:

nft add table inet vpnexempt
nft 'add chain inet vpnexempt out { type route hook output priority mangle; }'
nft add rule inet vpnexempt out tcp dport 22 meta mark set 0x1

Zweetens schéck markéiert Paketen an eng separat Tabell:

ip rule add fwmark 0x1/0x1 table 100

Drëttens gëff där Tabell eng Standardroute iwwer de physesche Link. D'Adressen sinn illustrativ; setz däin eege eran:

ip route add default via 192.168.1.1 dev wlan0 table 100

Loos deen drëtten Schrëtt aus an de markéierte Paket fënnt keng Route an der Tabell 100, also schléit en fehl. De Symptom gesäit aus, wéi wann d'Regel d'Netz gebrach hätt, während se tatsächlech deen eenzegen Wee ewechgeholl huet, deen de Paket nach hat.

Wat en no dem éischte Paket weider schaffe léisst

Marke gëllen fir erausginn Paketen. D'Äntwert kënnt op der physescher Interface mat der Adress un, déi dee Link verginn huet, an d'Haapttabell kann nach ëmmer den Tunnel fir dat Zil bevorzugen. Zwee Mechanismen halen den Äntwertwee konsequent: eng quellbaséiert Regel fir d'Linkadress an d'Verbindungsverfolgung, déi d'Entscheedung fir d'Liewensdauer vum Flux behält. De Mark an conntrack späicheren an en bei der Äntwert restauréieren ass de gewéinleche Wee, fir eng zustandsbaséiert Ausnam stabil ze maachen.

D'Filtere vum ëmgedréinte Wee ass deen aneren duuschterlosen Härenomen. Wann de Kernel de Réckwee streng validéiert an d'Äntwert op enger Interface ukommt, déi d'Haapttabell net géif wielen, gëtt de Paket ouni Noriicht verworf. rp_filter Standardwäerter variéiere jee no Distributioun an no, ob d'Interface weidergeleet gëtt, also liest den effektive Wäert, amplaz unzehuelen, datt en aus ass.

Markéier net den Transport vum Tunnel selwer. En WireGuard- oder UDP OpenVPN-Tunnel ass net TCP 22, also ass d'Rezept uewen sécher, awer eng Ausnam, déi geschriwwe gëtt als alles ausser dem Tunnelziel, kann déi verschlësselt Paketen afänken an den Tunnel esou briechen, datt et wéi eng Routingsschleif ausgesäit.

Iwwerpréif et amplaz unzehuelen

Fro de Kernel, wéi en Wee en huelen, fir d'Zil a fir de Port, a fuer de reellen Transfer duerch:

ip route get 203.0.113.10
ip rule show
nft list ruleset

Wann de Mark existéiert awer d'Zieler sech ni beweegen, dann trefft d'Regel net. Zieler si den Ënnerscheed tëscht enger Konfiguratioun, déi s du geschriwwen hues, an enger Politik, déi de Kernel applizéiert.

Wéini dëst dat falscht Instrument ass

Portbaséiert Ausnamen sinn natierlech brécheg. Servicer verréckelen Porten, HTTP/3 kënnt als UDP 443, an eng Applikatioun kann e puer Flëss vun ënnerschiddlecher Aart opmaachen. Wann d'rell Ufuerderung ass, datt dëst Programm de normalen Link benotzt, ass d'Routingschicht déi falsch Plaz; eng Netz-Namespace oder e Proxy pro Applikatioun passt besser.

Wann d'Ufuerderung ass, datt dëst Subnetz den normalen Link benotzt, loos d'Marke komplett aus an addéier eng méi spezifesch Route. Et ass méi einfach, et ass an enger Tabell visibel, an déi nächst Persoun kann et iwwerpréiwen, ouni e Reegelset ze liesen.

Schreif op, wéi eng vun den dräi Ufuerderungen s du wierklech hues, ier s d'Firewall beréiers. De Mechanismus uewen ass prezis, a Prezisioun, déi op de falsche Schicht ugewannt gëtt, ass just eng méi laang Ausfallzäit.

Ähnlech Artikelen