Doorbreekt hardwarematige NAT-offload je VPN-routeringsregels?
Versnelling kan de hook overslaan waarop je beleid vertrouwt, of alleen verplaatsen waar tellers worden bijgewerkt. Scheid die uitkomsten voordat je instellingen wijzigt.
Hardwarematige NAT-versnelling aanzetten kan een VPN-opstelling sneller maken, en het kan er ook voor zorgen dat een routeringsbeleid zonder enige foutmelding stopt met gelden voor sommige pakketten. Welke van de twee gebeurt, hangt af van wat het snelle pad overslaat, en dat verschilt per firmware, kernelversie en soort versnelling. Het instellingenmenu vertelt zelden welke je zojuist hebt ingeschakeld.
Twee beweringen verdienen onderscheid voordat de versneller de schuld krijgt: dat een regel niet meer werd afgedwongen, en dat een teller niet meer werd bijgewerkt. Dat zijn niet dezelfde waarnemingen.
Drie verschillende versnellingen worden op een hoop gegooid
Doorstuur-offload, cryptografische versnelling en offload van het datakanaal van de tunnel zijn afzonderlijke mechanismen die vaak een enkele schakelaar delen. Doorstuur-offload laat bestaande stromen een deel van de normale stack overslaan, cryptografische versnelling maakt het cijferwerk goedkoper, en tunnel-offload verplaatst de inkapseling naar hardware. Een router die gewoon gerouteerd verkeer versnelt, kan tunnelverkeer volledig op het langzame pad laten, en dat is een prestatie-uitkomst en geen beleidswijziging. Het omgekeerde bestaat ook: tunnelverkeer wordt offloaded terwijl het omliggende beleid nog steeds wordt geëvalueerd.
Linux flowtables zijn het gedocumenteerde geval dat het meest de moeite van het lezen waard is, omdat bestaande stromen aan een snel pad kunnen worden overgedragen. Hun boekhouding en toestandsafhandeling verschillen dan van klassiek doorsturen, en daarom gaan de tellers er vreemd uitzien.
Een teller die stopt met bewegen bewijst weinig
Regeltellers tellen de pakketten die door de regel gaan, en een offloaded stroom gaat er na het eerste pakket misschien nooit meer doorheen. Dat levert een teller op die bevriest terwijl het verkeer doorgaat, en die ziet er precies als een omzeiling uit als je het getal vertrouwt. Naar de teller kijken blijft nuttig als hint dat de stroom het getelde pad heeft verlaten. De rest van de diagnose moet komen uit waar de pakketten werkelijk heen gaan.
De tegenovergestelde gevolgtrekking faalt net zo hard. Een snelle download bewijst niet dat je uitzonderingsregels en foutafhandeling nog steeds gelden, want hij oefent een enkele stroom en niet het beleid.
Drie voorwaarden bepalen of offload het beleid breekt
De eerste voorwaarde is of het snelle pad de hook raadpleegt waarop je beleid leunt, omdat een beleid dat als marks en routes is uitgedrukt vaker overleeft dan een dat op filtering per pakket is gebouwd. De tweede is of de firmware de combinatie helemaal toestaat, omdat sommige builds offload automatisch uitschakelen wanneer een tunnel of een firewallfunctie actief is. De derde is of het verkeer in aanmerking komt, omdat versnelling meestal aan bestaande stromen is gekoppeld en gefragmenteerde of ongebruikelijke pakketten kan uitsluiten. Waar alle drie versnelling begunstigen, geldt het beleid nog steeds, en waar de eerste faalt, herstelt geen enkele hoeveelheid afstemming het.
Lees de leveranciersdocumentatie voor de combinatie die je draait, niet voor het routermodel in het algemeen. Firmwareversies veranderen deze antwoorden stilletjes.
Test het beleid, niet de doorvoer
Meet wat het beleid hoort te garanderen voordat je meet hoe snel het gaat. De onderstaande opdrachten laten zien of een flowtable is geïnstalleerd, wat verbindingstracking ziet, en vanaf welk adres de client naar buiten gaat. Vergelijk een nieuwe verbinding na de wijziging, omdat een bestaande zijn oude pad kan houden.
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
Een flowtable-vermelding die het tunnelverkeer dekt, vertelt je dat het snelle pad meespeelt, en de verbindingstabel laat zien of de stroom wordt gevolgd zoals je verwacht. De adrescontrole bevestigt de uitgang wanneer het beleid over internet-egress gaat, terwijl de ping een privébestemming bevestigt die bereikbaar moet blijven. Draai dezelfde set met versnelling uit en daarna aan, en vergelijk de resultaten in plaats van de tijden.
Noteer de vorige instelling zodat het experiment omkeerbaar blijft. Een algemene instructie om offload overal uit te zetten geldt als een omweg, niet als een bevinding.