IPsec-pass-through op een thuisrouter: wat het echt doet
De schakelaar laat één protocol door de adresvertaling; hij meldt de router niet als client aan. Leg de uitwisseling vast, lees de associaties en beslis dan.
Pass-throughschakelaars op de router zijn doorlaatconcessies voor een apparaat erachter, geen VPN-diensten. Ze melden de router niet als client aan, bewaren geen inloggegevens en duwen niet elk apparaat in huis door een externe uitgang. Wat ze doen is vormgeven hoe één protocol de adresvertaling en de filters oversteekt. Zodra dat duidelijk is, is de schakelaar makkelijk te testen en makkelijk uit te laten.
Wat de router werkelijk doet
De router zit tussen een client en een IPsec-peer en stuurt pakketten door die hij nooit ontworpen is om te begrijpen. Fabrikanten implementeren de functie op minstens drie manieren: een protocolhelper die toestand volgt of herschrijft, een filteruitzondering die stopt met het laten vallen van ESP, of een compatibiliteitsmodus voor oudere clients. Het label in de webinterface zegt zelden welke van de drie je hebt. Alleen de firmwarenotities of een pakketopname vertellen het.
Een helper kan het ook erger maken. Hulp die voor een oudere stroom is geschreven, stoort soms een client die de vertaling al correct afhandelt. Als een moderne client werkt met de optie uit, is het de betere configuratie om hem uit te laten.
Pass-through geeft de router nooit de sleutels van de peers. Hij ziet nog steeds de buitenste adressen en poorten, en past daar nog steeds zijn eigen doorstuurbeleid op toe.
NAT en NAT-T bepalen het pad
IPsec is niet gebouwd om adresvertaling te overleven, dus voegden de standaarden een omhulsel toe. NAT-traversal kapselt ESP in UDP in, waardoor een gewone NAT-tabel de stroom kan dragen, en de onderhandeling spreekt die omschakeling af tijdens IKE (RFC 3948). IKE zelf gebruikt UDP 500, terwijl het ingekapselde pad meestal UDP 4500 gebruikt.
Daarom is een firewallregel die alleen protocol 50 toestaat niet genoeg op een vertaald pad. Het blokkeren van 4500 breekt het geval waarvoor het omhulsel bestaat, en het blokkeren van 500 stopt de onderhandeling voordat er een tunnel ontstaat. Beide richtingen tellen, omdat een stateful router het antwoord meestal pas toestaat nadat hij het verzoek heeft gezien. Een poort bereiken is niet hetzelfde als de authenticatie afronden, en ook niet hetzelfde als beveiligd verkeer doorsturen.
Oudere opstellingen verschillen genoeg dat een gids die daarvoor is geschreven kan misleiden. Als een client beide modi aanbiedt, test dan degene die je peer documenteert en niet degene met meer zoekresultaten.
Vind de fase die faalt
Splits het probleem in onderhandeling, authenticatie, kinderbescherming en interne doorsturing, en verzamel dan bewijs voor één fase tegelijk. Een herstart die het resultaat tijdelijk verandert, bewijst alleen dat er enige toestand bij betrokken was.
sudo tcpdump -ni any 'udp port 500 or udp port 4500'
ip xfrm state list
ip xfrm policy list
De opname laat zien of de uitwisseling de peer bereikt en of antwoorden terugkomen, wat een filterprobleem van een inlogprobleem scheidt. De toestandslijst toont gevestigde beveiligingsassociaties, dus een lege lijst na een poging wijst op onderhandeling en niet op routing. De beleidslijst toont welke selectors zijn geïnstalleerd, en daar wordt een bestemming buiten het subnet uitgesloten. Lees beide xfrm-uitvoer voordat je de router aanraakt, want ze beschrijven wat de host gelooft en niet wat de router toestaat.
Als pakketten vertrekken en er komt niets terug, verplaats de opname dan naar de WAN-kant van de router. Het vergelijken van de twee opnames lokaliseert de drop zonder te gissen.
Schakel uit wat je niet nodig hebt
Eén werkende laptop bewijst niet dat de router meerdere clients tegelijk aankan. Elke client maakt zijn eigen vertalingstoestand en zijn eigen onderhandeling, en sommige helpers volgen maar één stroom. Test het aantal gelijktijdige sessies dat je echt nodig hebt, vanuit de netwerken die je echt gebruikt. Als de tweede client faalt terwijl de eerste bloeit, is dat de bevinding en geen wankele tunnel.
Laat de optie alleen aan staan als een opname laat zien dat het nodig is. Noteer de firmwareversie naast het resultaat, want dit gedrag verandert tussen releases. Het doel is een clienttunnel die je hebt geverifieerd, geen schakelaar die je hoopvol hebt aangezet.