Stelt u zich een browser voor die een HTTPS-pagina laadt terwijl een SSH-client een andere server bereikt en een resolver een query beantwoordt, allemaal via één OpenVPN-sessie. Op de fysieke interface ziet u één gesprek; in de tunnel ziet u er drie. Beide beelden zijn juist, en weten waarom is het verschil tussen een bruikbare en een verwarrende opname. Volg één inwendige stroom van socket tot kabel en de gelaagdheid houdt op abstract te zijn.

Eén uitwendig gesprek, veel inwendige stromen

Elke toepassing opent zijn eigen socket, en de kernel geeft die een vijf-tuple van bronadres, bronpoort, bestemmingsadres, bestemmingspoort en protocol. Die tuples bestaan voordat er ooit een tunnel in het spel is. Daarna besluit de routering dat ze allemaal via het tunnelapparaat naar buiten gaan, dus het pakket dat aan OpenVPN wordt overhandigd draagt nog steeds de oorspronkelijke headers in zich. OpenVPN versleutelt dat inwendige pakket en wikkelt het resultaat in één uitwendig UDP- of TCP-gesprek met de peer. Het uitwendige gesprek is dus één, terwijl de stromen erin zo talrijk zijn als de toepassingen hebben geopend.

Niets valt samen. De inwendige tuples overleven van begin tot eind, en daarom kan de verre kant de drie stromen nog steeds onderscheiden.

De poort die vast blijft

Constant blijft de uitwendige tuple: uw adres, de lokale poort die de client bond, het adres van de peer en de geconfigureerde servicepoort. Die tuple is wat een firewall of NAT op het pad moet toestaan, en die zal een opname op de uplink laten zien. Het is ook degene die verandert na een herverbinding of een netwerkwissel, omdat de client een andere lokale poort kan binden. Eén tunnel betekent niet voor altijd één vaste bronpoort.

De inwendige poorten zijn wat de eindpunten aangaat. Een HTTPS-stroom houdt bestemmingspoort 443 binnen de tunnel, ook al zit het uitwendige transport op de poort die de operator heeft geconfigureerd. De eindpunten van de toepassing leren de uitwendige poort nooit kennen.

Wat decapsulatie aan de verre kant verandert

Bij de peer gaat de uitwendige laag eraf, en het inwendige pakket is wat overblijft. Vanaf daar gelden doorsturen en toegangsbeleid voor de inwendige bestemming en het protocol. De webserver ontvangt nog steeds een HTTPS-verbinding, de SSH-daemon ontvangt nog steeds SSH, en de resolver ontvangt nog steeds een query.

Daarom is een regel die het uitwendige transport toestaat niet dezelfde regel als het toestaan van een interne dienst. De eerste beschrijft een pad; de tweede beschrijft een autorisatie.

Uitwendige TCP betekent één stroom, niet één verbinding

Als het uitwendige transport UDP is, is het lot van elke inwendige stroom onafhankelijk: een verloren datagram beïnvloedt één overdracht tot de eigen herverzending. Als het uitwendige transport TCP is, delen alle inwendige stromen één betrouwbare bytestroom.

Die gedeelde stroom is het deel dat mensen missen. Herstel gebeurt één keer, voor alles, dus één verloren segment vertraagt het verkeer van elke toepassing die erin gemultiplext is. Het zijn nog steeds veel verbindingen aan de eindpunten en één verbinding op de kabel, en op de kabel leeft het head-of-line-effect. Het aantal luisterende poorten vertelt u hier niets over, en daarom is poorten tellen een slechte manier om over tunnelprestaties te redeneren.

Beschrijf uw eigen opstelling nauwkeurig

Benoem het gekozen inwendige verkeer en het specifieke uitwendige transport dat het draagt, in plaats van te zeggen dat de machine alles via één poort verstuurt. Lokale diensten, een tweede tunnel en de andere adresfamilie maken allemaal stromen die nooit in dit gesprek komen. Een opname op de uplink toont de uitwendige tuple; een opname in de tunnel toont de inwendige.

Neem beide, en zet de tijdstempels naast elkaar. Als u moet bewijzen welke toepassing welke inwendige stroom heeft gemaakt, is de sockettabel op de host het betere instrument, omdat die poorten rechtstreeks aan processen koppelt. Schrijf dan de waargenomen uitwendige tuple en het moment van waarneming op, want de volgende opname na een herverbinding kan legitiem andere getallen tonen.

Gerelateerde artikelen