Első és legfontosabb kérdésként tisztáznunk kell, hogy mik is azok a tunnelek.
Tunnelek használatára akkor van szükség, ha egy bizonyos forgalmat izolálni szeretnénk egy másik hasonló forgalomtól. A tunnelek alkalmazásának több oka is lehet. Ebből az egyik a biztonsági tényező melynek alkalmazásával garantálni szeretnénk azt, hogy a hálózaton átmenő adatokba harmadik fél ne nézhessen bele, illetve rosszabb esetben ne módosíthassa azt. Tunnelek használata javasolt továbbá akkor is, hogy ha egy olyan helyen kell átjuttatnunk bizonyos forgalmat, amely magától nem tudja, hogy ezt a forgalmat merre irányítsa.
Hol alkalmazható ez a gyakorlatban? Például amikor interneten keresztül egy olyan forgalmat szeretnénk átvinni, amely egy magánhálózat olyan címtartományában van vagy olyan protokollt használ, ami az interneten nem routeolható.
Ilyenkor az eredeti IP csomagot becsomagoljuk egy másik IP csomagba, mint ahogy azt tesszük L2TP vagy GRE tunneling alkalmazása esetén majd elküldjük és ezután a céloldali állomáson egy router feldolgozza a kapott adatokat majd kicsomagolja azt.
Leggyakrabban használt tunneling-ek:
GRE (Generic Routing Encapsulation): Alkalmas arra, hogy Layer 3-as, valamint Layer 2-es forgalmat átvigyünk a segítségével. Ezen felül vannak egyszerűbb és bonyolultabb megoldások is mint például az IP-IP tunneling protokoll. GRE-nél fontos kiegészítés, hogy NAT-olt környezetben csak egy végpontot vagyunk képesek felépíteni.
A két fő tunnelling fajtáról is ejtenünk kell néhány szót. Az első ezek közül, amikor kölcsönösen mindkét fél tudja a másik címét és ezáltal akadálytalanul folyhat a kommunikáció. A másik esetben egy úgynevezett kliens és szerver közti kommunikáció valósul meg. Itt a kliens minden esetben tudja a szerver címét, de ez fordított esetben nem szükséges. Itt lép még be a képbe az authentikáció, amely során a küldő és a fogadó fél egyaránt azonosítja egymást majd kiépül a kapcsolat.
Az MTU szempontjából a leghatékonyabb tunneling protokollnak a GRE minősül mivel mindösszesen egy extra 4 bájtos fejléccel kell kalkulálnunk. Természetesen minden esetben ez előtt szerepelnie kell egy extra IP fejlécnek is, amely a tunnel célállomásának az IP címét tartalmazza. A fent már említett 4 byte-on felül még alkalmazhatunk különböző kiegészítőket is azonban ezek beépítése minden esetben megnövekedett overhead mérettel jár. A teljesség igénye nélkül a GRE tunnelbe beépíthetünk checksumming-ot, tunnel kulcsokat, valamint lehetőségünk van sequence number alkalmazására is.
TCP kommunikáció esetén MSS clamping használatával biztosíthatjuk azt, hogy a tunnelbe beépített forgalmunkat már kisebb csomagmérettel küldjük el elkerülve az esetleges fragmentálást.
Az L2TP a GRE vel ellentétben nem egy saját protokollra, hanem az UDP-re épül. Ahogy a neve is tartalmazza elsősorban Layer 2-es kommunikációra használjuk. NAT-olt környezetben az UDP protokoll-ra épülése okán sokkal jobb választás.
Amennyiben nem szeretnénk L2TP-t használni még mindig ott a lehetőség a Microsoft saját fejlesztésű SSTP VPN megoldására. Az SSTP TCP protokollt használ kommunikációra. A 443-as port használata pedig nagy mértékben megkönnyíti a kommunikáció sikerességét hisz nagy többségben e portot a tűzfalszabályok nem korlátozzák. Az SSTP-be definiálva van a https proxy is így, ha adott esetben rendelkezünk egy proxy infrastruktúrával és authentikációra van szükség akkor segítségével egy védett helyre beépíthetünk egy kívülről érkező tunnelt. Egyetlen hátránya az un. TCP over TCP hibaként ismert. Ez azt jelenti, hogy míg az UDP nem úgy a TCP protokoll rendelkezik congestion control mechanizmussal.
A TCP fölött megvalósítható még OpenVPN illetve egyéb más VPN protokollokat is lehet erre építeni. Az SSTP és az OpenVPN is egyaránt tartalmaz már titkosítást önmagában. L2TP-esetén ilyenről nem beszélhetünk. SSTP esetén például TLS 1.2-őt már nagy biztonsággal használhatunk.
Köszönjük, hogy velünk tartottatok, jövő héten az OpenVPN-ről, illetve az IPsec-ről hallhattok bővebben.