Firwat Är iptables-Reeg gebréckte VPN-Traffik ni gesäit
Gebréckt Frame kënnen d'IP-Kette ëmgoen, déi Dir iwwerwaacht. Vergläicht déi gebierteg bridge-Famill mam ale br_netfilter, ier Dir nach eng Reeg bäifügt.
Zwee virtuell Maschinnen um selwechten Host erreechen d'LAN iwwer eng Bréck, an eng Reeg an der ip forward-Kette weist en Zähler, dee sech ni beweegt. D'Frame sinn echt, den Traffik geet duerch, an d'Reeg ass einfach net op sengem Wee. D'Vergläiche vun den zwou Aarten, wéi Linux gebréckten Traffik weist, erkläert dës Stille, an et erkläert och, firwat ee ale Modul ze lueden eng méi schlecht Äntwert ass, wéi et schéngt.
Zwee Weeër duerch een Host
E Paket ka souguer dësen Host op zwou ganz ënnerschiddlech Aarte verloossen, an den Ënnerscheed entscheet, wéi eng Hooken et gesinn. Wann d'Zil hannert engem physesche Port läit an de Frame tëscht zwee Bréckeporte geschalt gëtt, leet den Host en Ethernet-Frame virun; de Routing-Code gëtt net gefrot, an et geschitt kee geroutete Sprong. Wann d'Zil den Host selwer ass oder en Netz, dat iwwer eng Tunnel-Interface erreecht gëtt, gëtt d'Paket geroutet an d'Hooke vun der IP-Schicht gëllen tatsächlech. Halt dës Gafel am Kapp, well all spéider Fro zu Ketten a Famillen doraus folgt, wéi ee vun den zwee Weeër e Frame hëlt.
Dee Ënnerscheed ass déi ganz Geschicht hannert enger Reeg, déi näischt zielt. En iwwer d'Bréck gebréckte Frame vun veth9a1 op enp3s0 iwwerquiert d'Bréck, net de IP-Stack, sou datt eng ip forward-Kette näischt ze passen huet. Interface-Nimm an engem eelere Beispill entscheeden net, wéi ee Wee Dir hutt, an dowéinst ass den éischte Schrëtt, op d'Topologie ze kucken an net op de Reegelsatz.
En Tunnel füügt en drëtte Fall derbäi, deen en Numm verdéngt. En TUN-Apparat leet IP-Pakete beim Host of, sou datt se geroutet ginn an tatsächlech duerch IP-Kette goen, während en TAP-Apparat, deen un eng Bréck ugeschloss ass, Frame leet an sech wéi de Bréckefall verhält. Den Apparatentyp entscheet, net den Numm vum Produkt.
Vergläicht déi zwou Famillen, déi en gebréckte Frame kënne gesinn
Linux ënnerstëtzt nativen Bréckefilterung iwwer d'bridge-Famill vun nftables, an et brauch keen ale Modul, fir Frame am Fluch ze kontrolléieren an ze verwerfen. Dem Kernel seng Bréckedokumentatioun gëtt dës Empfehlung direkt, wat ee sollt wëssen, ier en Suchresultat Iech seet, ee Modul ze lueden.
| Observation point | What it sees | What it costs |
|---|---|---|
nftables bridge family chains | Ethernet frames forwarded between bridge ports, in both directions | Rules must be written in bridge syntax with link-layer matches |
Legacy br_netfilter plus an ip chain | Bridged IPv4 and IPv6 packets, re-exposed through IP-layer hooks | Existing host rules may begin matching traffic they never saw before |
inet chain for routed traffic | Packets the host routes, including traffic arriving from a TUN device | No visibility into purely switched frames |
Den nft-Befehl amplaz vun iptables ze benotzen setzt fir sech selwer keng Reeg an déi richteg Famill. Eng Kette, déi an der bridge-Famill deklaréiert ass, gesäit Frame; eng Kette, déi an ip, ip6 oder inet deklaréiert ass, gesäit se net, egal wéi en Binär se erstallt huet. D'Famill ass eng Eegenschaft vun der Kette, net vum Instrument, dat se getippt huet.
Den ale Wee funktionéiert anescht, an dowéinst sollt ee vergläichen amplaz aus Gewunnecht eng Säit ze wielen. D'Luede vun br_netfilter an d'Aktivéiere vun den bridge-nf-call-Astellungen weist de gebréckten IPv4- an IPv6-Traffik erëm iwwer d'Hooke vun der IP-Schicht, sou datt eng gewéinlech iptables-Reeg endlech ka passen. D'Frame änneren sech net; d'Ensembel vun den Hooke, duerch déi se goen, ännert sech, wat bedeit, datt all bestoend Host-Reeg elo en neie Publikum huet.
Liest den effektiven Wee, ier Dir eng Reeg bäifügt
Dräi Befehler leeën fest, wou Dir sidd: u wat d'Bréck ugeschloss ass, ob den ale Modul aktiv ass, a wéi eng Ketten et an der bridge-Famill scho gëtt. Fëllt se aus, ier Dir eppes schreift, well d'Äntwert entscheet, wéi ee vun den zwou Designen Dir erweidert. Dëse Schrëtt ze iwwersprangen ass de Wee, wéi eng korrekt Reeg an enger Kette hannerkënnt, duerch déi näischt geet.
bridge link show
lsmod | grep br_netfilter
nft list ruleset | grep -A4 "chain forward"
D'Ausgab trennt d'Fäll propper. Porten, déi ënner der Bréck opgezielt sinn, soen Iech, wéi eng Interface geschalt ginn; en eidel lsmod-Resultat bedeit guer keng Visibilitéit op der IP-Schicht vun de gebréckte Frame; eng bestoend forward-Kette vun der bridge-Famill bedeit, datt et schonn en Eigner vun der Politik gëtt an Är Reeg dohi gehéiert an net an eng nei eege Kette.
Dann füügt eng Reeg bäi, déi sech liicht zréck liest, mat engem Zähler a mat kengem aneren Urteil, a schéckt ee representativen Floss duerch d'Bréck. En Zähler, dee sech beweegt, beweist, datt de Frame d'Reeg erreecht huet. Dat ass alles, wat en beweist, also follegt him och mam verwäerte Wee, well eng Politik, déi alles akzeptéiert, och en Zähler produzéiert, dee sech beweegt.
nft add rule bridge filter forward iifname "veth9a1" oifname "enp3s0" counter acceptWou den ale Modul d'Verhalen ännert
Den ale Wee op enger lafender Bréck z'aktivéieren ass keen neutrale Akt vum Visibilitéit bäisetzen. Reegelen, déi virdrun fir gebréckten Traffik onerreechbar waren, gi erreechbar, dorënner Host-Reegelen, déi fir eng aner Interface geschriwwe goufen, an eng Standard-drop-Politik an der ip forward-Kette kann op eemol op Frame gëllen, déi virdrun onberéiert duerchgaange sinn. Op engem Host, deen iwwer déi Bréck geréiert gëtt, ass d'Resultat eng Spär ouni Konsol. Dat ass kee hypothetesche Feelerfall; et ass déi gewéinlech Konsequenz vum Erweidere vun engem Hookensembel op enger Maschinn, déi Dir iwwer de Wee erreecht, deen Dir just erweidert hutt.
Déi méi sécher Sequenz ass ze entscheeden, wéi eng Famill d'Politik besëtzt, d'Reegelen do ze schreiwen an en onofhängege Wee fir d'Erhuelung ze halen, ier Dir en sysctl ännert. Wann zwou Famillen allebéid Reegelen hunn, dokumentéiert, wéi eng autoritär ass; zwou iwwerlappend Politike sinn de Wee, wéi e Paket op enger Plaz akzeptéiert an op enger anerer verworf gëtt, ouni eng eenzeg Datei ze liesen.
D'Isolatioun selwer brauch nach eng komplett Konzeptioun. Ee Quell op een Zil z'erlabe beweist nëmmen, datt ee Floss funktionéiert, während d'Ufuerderung meeschtens ass, datt eng VM hir Nopere oder den Host net erreeche kann. Zähler op de Refus-Reegelen si méi wichteg wéi den Zähler op der Akzept-Reeg, well den Akzept-Zähler deen ass, vun deem Dir schonn erwaart hutt, datt en sech beweegt.
Zum Schluss, haalt de Fall vum Host-Input getrennt. Traffik, deen un déi eege IP vun der Bréck adresséiert ass, kënnt bei input un, net bei forward, an eng Reeg an forward wäert en ni gesinn, wéi eng Famill Dir och wielt. Dräi Fäll, zwou Familljen, eng Lektioun: de Wee entscheet den Hook, an den Hook entscheet, ob Är Reeg iwwerhaapt existéiert.