Ødelægger hardware-NAT-offload dine VPN-rutningsregler?
Acceleration kan springe den krog over, som din politik hviler på, eller blot flytte, hvor tællerne opdateres. Skeln mellem de udfald, før du ændrer indstillinger.
At slå hardware-NAT-acceleration til kan gøre en VPN-opsætning hurtigere, og det kan også få en rutningspolitik til at holde op med at gælde for nogle pakker helt uden fejl. Hvilket af de to der sker, afhænger af, hvad den hurtige vej springer over, og det varierer mellem firmware, kernelversion og den slags acceleration, der bruges. Indstillingsmenuen fortæller sjældent, hvilken du netop har aktiveret.
To påstande fortjener at blive skilt ad, før acceleratoren får skylden: at en regel er holdt op med at blive håndhævet, og at en tæller er holdt op med at blive opdateret. Det er ikke den samme observation.
Tre forskellige accelerationer blandes sammen
Offload af videresendelse, kryptografisk acceleration og offload af tunnelens datakanal er separate mekanismer, som ofte deler en enkelt switch. Offload af videresendelse lader etablerede flows springe en del af den normale stak over, kryptografisk acceleration gør krypteringsarbejdet billigere, og tunnel-offload flytter indkapsling ud i hardware. En router, der accelererer almindelig rutet trafik, kan lade tunnelens trafik blive helt på den langsomme vej, hvilket er et ydelsesresultat og ikke en politikændring. Det omvendte findes også, hvor tunnelens trafik offloades, mens den omgivende politik stadig evalueres.
Linux-flowtables er det dokumenterede tilfælde, der er mest værd at læse, da etablerede flows kan overgives til en hurtig vej. Deres bogføring og tilstandsbehandling adskiller sig så fra klassisk videresendelse, og derfor begynder tællerne at se mærkelige ud.
En tæller, der holder op med at bevæge sig, beviser lidt
Regeltællere tæller de pakker, der passerer reglen, og et offloadet flow passerer måske aldrig igennem den igen efter den første pakke. Det giver en tæller, der fryser, mens trafikken fortsætter, og det ligner præcis en omgåelse, hvis du tror på tallet. At holde øje med tælleren er stadig nyttigt som et hint om, at flowet forlod den talte vej. Resten af diagnosen må komme fra, hvor pakkerne faktisk går hen.
Den modsatte slutning fejler lige så slemt. En hurtig download viser ikke, at dine undtagelsesregler og fejlhåndtering stadig gælder, fordi den øver ét flow og ikke politikken.
Tre betingelser afgør, om offload bryder politikken
Den første betingelse er om den hurtige vej konsulterer den krog, som din politik afhænger af, da en politik udtrykt som mærker og ruter overlever oftere end en, der er bygget på filtrering pr. pakke. Den anden er, om firmwaren overhovedet tillader kombinationen, fordi nogle builds automatisk slår offload fra, når en tunnel eller en firewallfunktion er aktiv. Den tredje er, om trafikken er kvalificeret, da acceleration normalt er knyttet til etablerede flows og kan udelukke fragmenterede eller usædvanlige pakker. Hvor alle tre favoriserer acceleration, gælder politikken stadig, og hvor den første fejler, genopretter ingen mængde tuning den.
Læs leverandørens dokumentation for den kombination, du kører, snarere end for routermodellen generelt. Firmwareversioner ændrer disse svar stille.
Test politikken, ikke gennemstrømningen
Mål, hvad politikken skal garantere, før du måler, hvor hurtigt den går. Kommandoerne nedenfor viser, om en flowtable er installeret, hvad forbindelsessporing ser, og hvilken adresse klienten forlader fra. Sammenlign en ny forbindelse efter ændringen, da en etableret kan beholde sin gamle vej.
nft list flowtables
conntrack -L | head -n 20
curl -sS --max-time 8 https://api.ipify.org; echo
ping -c 3 192.168.50.20
En flowtable-post, der dækker tunnelens trafik, fortæller dig, at den hurtige vej er i spil, og forbindelsestabellen viser, om flowet spores, som du forventer. Adressekontrollen bekræfter udgangen, når politikken handler om internetudgang, mens ping bekræfter en privat destination, der skal forblive nåelig. Kør det samme sæt med acceleration slået fra og derefter til, og sammenlign resultaterne frem for tiderne.
Notér den tidligere indstilling, så eksperimentet forbliver reversibelt. En generisk instruks om at slå offload fra overalt tæller som en omgåelse, ikke som en opdagelse.