Tunnelingprotocollen: hoe het ene protocol het andere omhult
Een tunnelprotocol neemt pakketten van het ene protocol en wikkelt ze in pakketten van een ander protocol. Dat is hoe VPN's werken, hoe IPv6 de wereld bereikte via een IPv4-internet, hoe bedrijfsnetwerken continenten omspannen en hoe u met SSH uw thuisnetwerk kunt bereiken via een hotelfirewall. Dit is de uitleg van wat tunneling eigenlijk is en welke protocollen er toe doen.
De volledige artikeltekst vindt u hieronder in het Engels.
Het kernidee
A-tunnelprotocol neemt een pakket van één protocol, verpakt het in de payload van een ander protocol en verzendt het resultaat over een netwerk dat normaal gesproken niet het origineel zou transporteren. De verpakking heet encapsulation. Het verpakte pakket reist door een netwerk dat alleen het buitenste protocol begrijpt, en wordt aan het uiteinde uitgepakt.
Praktisch: een IPv6-pakket verpakt in een IPv4-pakket kan netwerken met alleen IPv4 passeren. Een Ethernet-frame verpakt in een IP-pakket kan tussen twee LAN's over het openbare internet reizen. Een TCP-verbinding verpakt in HTTPS kan door een firewall gaan die alleen poort 443 toestaat.
Waarom tunneling bestaat
- Protocolbridging: voer een nieuw protocol uit op netwerken die dit niet standaard ondersteunen. IPv6-over-IPv4 (Teredo, 6in4) is het klassieke voorbeeld.
- Security: verpak een onveilig protocol in een gecodeerd protocol. SMB via SSH, gewoon HTTP via TLS (= HTTPS), bedrijfsverkeer via IPsec.
- Netwerkvirtualisatie: zorg ervoor dat twee fysiek gescheiden netwerken zich als één gedragen. Tailscale, ZeroTier, MPLS L3VPN, VXLAN - ze gebruiken allemaal tunneling onder de motorkap.
- Firewall traversal: verpak geblokkeerde protocollen binnen toegestane protocollen. OpenVPN-over-TCP/443 ziet eruit als HTTPS voor een firewall die al het andere blokkeert.
- Toegang op afstand: geef een externe medewerker een IP-adres binnen het bedrijfsnetwerk. De zakelijke VPN is structureel een tunnel.
De belangrijkste tunnelprotocollen
VPN-gericht
- WireGuard - modern, snel, eigenwijs. Alleen UDP.
- OpenVPN — flexibel, op TLS gebaseerd, draait via TCP of UDP. Kan verbergen als HTTPS.
- IKEv2/IPsec — de native mobiele/ondernemingsoptie.
- L2TP/IPsec — verouderd, dubbel ingekapseld, slow.
- PPTP - historisch gebruikelijk, definitief verbroken in 2012.
- SSTP - Microsoft's TLS-getunnelde VPN-protocol, alleen voor Windows.
IP-in-IP en vrienden
- GRE (Generic Routing Encapsulation) - Door Cisco ontwikkeld, draagt willekeurige netwerklaagprotocollen binnen IP. Basis voor veel zakelijke VPN-opstellingen en de L3-onderlaag voor zaken als NVGRE.
- IP-in-IP - het eenvoudigste geval, gewoon een IP-pakket in een ander pakket wikkelen. RFC 2003.
- Teredo - IPv6 via IPv4-tunneling voor hosts achter NAT. Door Microsoft ontwikkeld.
- 6in4 - handmatig geconfigureerde IPv6-over-IPv4-tunnels, vaak gebruikt door tunnelmakelaarsdiensten.
- 4in6 - de tegenovergestelde richting, IPv4 via IPv6.
Datacenter-overlays
- VXLAN — Virtueel uitbreidbaar LAN. Verpakt Ethernet-frames binnen UDP. Het dominante overlay-protocol in moderne datacenters.
- GENEVE - nieuwere, flexibelere concurrent van VXLAN. Gebruikt in sommige underlays van cloudproviders.
- NVGRE - Microsoft's GRE-gebaseerde variant.
SSH-tunnels
SSH ondersteunt drie doorstuurmodi: lokale port forwarding (routeer een lokale poort via SSH naar een extern adres), remote port forwarding (het omgekeerde), en dynamische SOCKS-proxying (gebruik SSH als algemene SOCKS5-proxy). Alle varianten van tunneling: SSH verpakt willekeurig TCP-verkeer in zijn gecodeerde kanaal. De klassieke opdracht ssh -L 5432:database.internal:5432 jumpbox is een tunnel.
HTTP/HTTPS-tunnels
Voor bedrijfsnetwerken die alleen uitgaande poort 443 toestaan, zijn tools zoals corkscrew, httptunnel en Cloudflare Tunnel verpakken willekeurig TCP in HTTP CONNECT-verzoeken of WebSocket-verbindingen. Minder efficiënt dan directe verbindingen; betrouwbare omzeiling in laatste instantie.
De TCP-over-TCP-meltdown
De meest voorkomende operationele valkuil bij VPN-implementatie. Wanneer u een TCP-verbinding tunnelt binnen een andere TCP-verbinding (bijvoorbeeld OpenVPN-TCP die de HTTPS van een gebruiker draagt), zijn nu two-hertransmissietimers in werking. Wanneer pakketverlies optreedt, proberen beide lagen opnieuw te verzenden. Het congestievenster van het binnenste TCP wordt groter; de buitenste TCP-buffers kunnen het niet bijhouden. De latentie neemt exponentieel toe.
Dit is de reden waarom WireGuard alleen UDP is en waarom OpenVPN-UDP de voorkeur heeft boven OpenVPN-TCP wanneer het netwerk dit toelaat. OpenVPN-TCP is een bewuste afweging voor het specifieke geval waarin het passeren van de firewall belangrijker is dan de doorvoer.
De beveiligingshoek
Tunneling is moreel neutraal. Dezelfde technieken waarmee uw bedrijfs-VPN externe werknemers kan beschermen, kunnen door malware worden gebruikt om gegevens te exfiltreren via DNS-tunnels of HTTPS-tunnels die op gewoon verkeer lijken. Beveiligingsteams van ondernemingen besteden aanzienlijke inspanningen aan het detecteren van vijandige tunnels met behulp van DPI, stroomanalyse en beleidshandhaving op uitgangspunten.
De standaardregel: een tunnel is precies zo veilig als het interne protocol plus het externe protocol plus het dreigingsmodel van de operator. OpenVPN-tunneling van gewone HTTP maakt HTTP niet veilig naar de bestemming; het maakt de verbinding tussen de client en de OpenVPN-server veilig.
Hoe u kunt verifiëren of een tunnel werkt
- Controleer of het verkeer vertrekt waar u verwacht: onze IP-lookup toont het uitgangs-IP en de geolocatie.
- Verifieer dat DNS door de tunnel gaat – ons DNS-lek test.
- Voer onze volledige VPN-lektest uit voor WebRTC, IPv6 en andere lekvectoren.
- Voor SSH-tunnels geeft de opdracht
waan de externe kant uw effectieve bron-IP weer.
Veelgestelde vragen
- Wat is het verschil tussen een tunnel en een VPN?
- Een VPN is een toepassing van tunneling. De tunnel is het inkapselingsmechanisme; de VPN is het product dat eromheen is gebouwd (sleutelbeheer, configuratie, enz.). Alle VPN's zijn tunnels, maar niet alle tunnels zijn VPN's: een TLS-sessie is technisch gezien een tunnel, een SSH port-forward is een tunnel, een MPLS L3VPN-underlay maakt gebruik van tunneling.
- Waarom is TCP-over-TCP slecht?
- Twee hertransmissietimers vechten met elkaar. Wanneer pakketten wegvallen, proberen zowel de binnenste als de buitenste TCP het opnieuw. Het binnenste congestievenster groeit voorbij de buitenste buffer, de latentie neemt exponentieel toe en de doorvoer stort in. Het is aanvaardbaar in omgevingen met weinig verlies; in verliesgevende netwerken is dit de slechtst mogelijke VPN-configuratie. Gebruik op UDP gebaseerde tunneling waar het netwerk dit toelaat.
- Kan een firewall altijd een tunnel detecteren?
- Moderne DPI kan algemene tunnelhandtekeningen identificeren (OpenVPN, WireGuard-handshakes). Verduisteringstools verpakken tunnels zodat ze eruit zien als gewone HTTPS of andere toegestane protocollen. De wapenwedloop is voortdurend. Voor niet-vijandige netwerken inspecteren de basisregels van de firewall niet diep genoeg om tunnels op inhoud te identificeren.
- Is HTTPS een tunnel?
- Technisch gezien wel. HTTPS verpakt HTTP binnen TLS. De relatie is structureel identiek aan die van OpenVPN die willekeurig IP-verkeer binnen TLS verpakt. De grens tussen 'protocol' en 'tunnel' is vooral een kwestie van terminologie; HTTPS wordt meestal geen tunnel genoemd omdat de binnenste en buitenste protocollen zijn ontworpen om samen te werken, maar het inkapselingsmechanisme is hetzelfde.
- Welk tunnelprotocol moet ik kiezen voor een VPN?
- Voor modern consumenten- of zakelijk gebruik: WireGuard. Voor beperkende netwerken: OpenVPN-TCP/443 met TLS-verduistering. Voor native iOS/macOS zonder clients van derden: IKEv2/IPsec. Vermijd PPTP (kapot) en vermijd kale L2TP (gebruik in plaats daarvan IKEv2/IPsec).