Tunelování v sítích (nejen) IPv6

Transkript

Tunelování v sítích (nejen) IPv6
Tunelovaní v sítích
(nejen) IPv6
Tomáš Hlaváček
Tunelování je metoda přenosu dat, která umožňuje překlenout omezení
existující fyzické sítě a zajistit vyšší úroveň bezpečnosti, přenášet proto­
koly, které nejsou na fyzické síti podporovány, nebo spojit fyzicky oddělené
sítě do logického celku. Článek projednává o různých tunelovacích techno­
logiích, zejména ve vztahu k IPv6.
Význam a druhy tunelů
Typické situace, kdy se vyplatí postavit tunel
je, když fyzická síť mezi dvěma body, které
spolu chtějí komunikovat, sice existuje,
ale má omezení, které znemožňuje provoz
požadované aplikace. Dalším případem
je poskytování tunelů ve velkém měřítku
přímo providerem podkladové sítě, který
tak může oddělit zákazníky, kontrolovat lépe
provoz. Dokonce existují i technologie na
velmi inteligentní manipulaci s tunelovaným
provozem, rezervace pásma pro tunely,
přesměrování tunelů v případě výpadků
nebo k řízenému snížení kvality služeb
podle stanovených politik a priorit. Z hle­
diska uživatele se tunelem může překlenout
L3 síť (například síť s IP routingem) mezi
dvěma či obecně více L2 sítěmi. Tunel lze
také efektivně použít k překlenutí L3 sítě,
která podporuje pouze protokol IPv4 a cílem
je přenášet IPv6 nebo i nějaký exotičtější
protokol typu IPX/SPX nebo AppleTalk.
Další důvod pro tunelování je zabezpečení
provozu šifrováním.
Výhodou tunelů je, že jsou z velké části
softwarovou záležitostí a že je zpravidla
celkem jednoduché a levné tunel sestavit,
zvlášť v relaci s možností stavby fyzické
síťové trasy nebo poskytnutím okruhu či
síťového pásma nějakou jinou síťovou tech­
nologií, jako je DWDM. Nevýhodou tunelů
je, že na obou stranách tunelu je nutné
zpracovat (zabalit nebo rozbalit) tunelované
datagramy, což stojí CPU čas a sběrnicové
pásmo na koncových bodech. V případě šif­
rování provozu posílaného tunelem je využití
CPU kritický parametr a často se používají
i hardwarové kryptografické akcelerátory,
zejména v enterprise aplikacích, kde je třeba
dosahovat rychlostí řádově stovky Mbps
a více. Dále tunely zvětšují latenci a snižují
MTU (maximum transfer unit), to proto, že
datagram je po zabalení do další vrstvy hla­
viček větší. Přitom na velikost datagramů je
horní limit daný nejmenším linkovým MTU
v cestě mezi zdrojem a cílem (resp. mezi
koncovými body tunelu, kde se od linkového
MTU ještě odečítá velikost tunelovacích
hlaviček). Z toho jsou dvě cesty ven. Buď
nastavit na interfacy tunelu menší MTU, což
může někdy dělat trochu problémy, protože
se najdou i systémy, co uvažují s defaultním
MTU 1500 bytů a nepodporují mechanismy
path MTU discovery. Druhou možností je
fragmentace datagramů, které po zabalení
do tunelovacích hlaviček přesáhnou linkové
MTU. To sebou samozřejmě přináší všechna
negativa fragmentace z TCP, tedy zpoma­
lování, zátěž CPU na sestavení fragmentů,
větší náchylnost k zahazování datagramů,
a navíc to je agnostické k protokolům vyš­
ších vrstev.
Tunelování se považuje v řadě aplikací za
standardní řešení, které má z technického
i cenového hlediska optimální vlastnosti. Na­
příklad zabezpečené šifrované spojení dvou
poboček firmy mezi dvěma městy, nebo
i dvěma kontinenty lze vybudovat pomocí
enterprise-grade zařízení s použitím silných
šifer a s redundancí za pouhý zlomek ceny,
jakou by stálo vybudovat nebo pronajmout
privátní síťový propoj například optickým
kabelem. Stejně tak zabezpečené a šifrované
připojení do vzdálené firemní sítě pro pra­
covníky, jejichž fyzická poloha připojení do
přístupové sítě se v čase mění, jde zařídit
nejsnáze a nejlevněji tunelem. Tunely jsou
také považovány za univerzální přechodový
mechanismus pro připojení k IPv6 internetu
pro uživatele, jejichž ISP IPv6 ještě nepod­
poruje. V této aplikaci hraje roli především
cena tunelu, která musí být pro koncové
uživatele blízká nule.
Topologie sítí s tunely
Tunely lze používat ojediněle jako spojnice
mezi disjunktními sítěmi pro jejich vzájemné
propojení, ale pomocí tunelů lze postavit
i rozsáhlou virtuální síť, kde tunelování
tvoří základ architektury. V obou případech
se užívají návrhové vzory, které respektují
nutná omezení daná fyzickou sítí, nad kterou
se tunely budují, ale umožňují překlenout
jiná omezení. Hlavní dva návrhové vzory
jsou point-to-point, respektive mesh, versus
hub-and-spoke. První termín point-to-point
vyjadřuje fakt, že oba koncové body tunelu
mají stejné postavení, oba mohou spojení
navázat, nebo je spojení nestavové a tím
pádem se navazovat po prvotní konfiguraci
už nemusí. Hlavními reprezentanty point-topoint tunelů jsou GRE (Generic Routing En­
capsulation) popsaný v RFC 2784 [1] a PPTP
(Point-to-Point Tunneling Protocol) popsaný
v RFC 2637 [2], který používá GRE jako svůj
stavební prvek. GRE je protokol nestavový,
má velmi malou režii z hlediska velikosti
vlastní hlavičky i spotřebovaného CPU výko­
nu na tunelování a je velmi robustní. Jeho
nevýhodou je, že v okamžiku nastavení GRE
tunelu je třeba znát adresy obou koncových
bodů tunelu a oba koncové body musí být
navzájem dostupné přes IP, což explicitně
vylučuje, aby byl mezi koncovými body NAT,
s výjimkou 1:1 NATu. Naproti tomu PPTP
je už stavový protokol, kde jedna nebo obě
strany podle vlastních pravidel sestavují spo­
jení. PPTP spojení se skládá z kontrolního
TCP kanálu a z datového kanálu, který je ve
skutečnosti dynamicky sestavený GRE tunel.
Mezi další reprezentanty point-to-point tune­
lů patří protokol L2TP [3] a 6in4 [4].
Návrhový vzor mesh vychází z toho, že
koncové body tunelů, i pokud jich je víc,
jsou rovnocenné. Tunely se používají k pře­
krytí fyzické sítě virtuální topologií, aby se
eliminovaly například bezpečnostní nebo
směrovací omezení fyzické sítě. Předpokládá
se, že ve směru předpokládaných toků se
mezi koncovými body nastaví tunel a po­
užije se směrování podle příslušné vrstvy,
na jakou se tunely napojují. Pro L3 tunely
(například statické GRE tunely) určené pro
přenos IPv4 mezi pobočkami firmy, které
používají v rámci kanceláře vyhrazené sítě
podle RFC 1918 [5], lze použít statické smě­
rování nebo některý standardní dynamický
směrovací protokol, jako OSPFv2 nebo
RIPv2. Mesh je možné postavit jen částečný,
tak aby logická topologie vhodně skryla
fyzickou topologii a její omezení, zajistila
dosažitelnost a přiměřenou redundanci,
ale nepřinesla velkou administrační zátěž.
Extrémní návrh full-mesh, tedy propojení
všech tunnel-endpointů se všemi, má smysl
při malém počtu koncových bodů (do pěti)
a při nepředvídatelných tocích, nicméně
znamená dohromady navázat N*(N-l)/2 tu­
nelů, kde N je počet koncových bodů.
Naproti tomu návrhový vzor hub-and-spo­
ke vychází z myšlenky, že se určí omezené
množství hubu, centrálních směrovačů, na
které si všechny endpointy navážou tunel
Společnost Ignum se rozhodla podpořit aktivity tunnel brokera SixXS poskytnutím vlastního
který zatím jako jediný zajišťuje v ČR tyto služby
a budou mezi sebou komunikovat skrze
hub. Výhody jsou ve snadnější administraci
a v tom, že při použití stavového protokolu
není třeba předem znát adresy koncových
uzlů, stačí, aby koncový bod tunelu znal ad­
resu hubu a aby sám vyvolal spojení. Nevý­
hodou pak je, že jde o komplexnější situaci,
huby jsou zatěžovány veškerým provozem
a jsou kritickou infrastrukturou, jejíž výpa­
dek znamená rozpojení všech tunelů. Použití
hub-and-spoke je celkově méně robustní, má
větší režii a přináší prostoje při navazování
a obnovování spojení.
Ještě existuje kategorie exotických
protokolů a technologií, které nelze zařadit
ani do jednoho z návrhových vzorů a které
zpravidla umožňují postavit síť oběma způ­
soby, a navíc přináší vlastnosti, které ani
nemusí nutně zapadat do obecného paradig­
matu tunelování.
Protokoly pro podporu
přechodu na IPv6
Přechod internetu v globálním měřítku
z protokolu IPv4 na IPv6 bude dříve či poz­
ději nevyhnutelný. To se samozřejmě ví už
dávno, oficiálně podle [6] už několik let.
Aby byl přechod co nejméně problematický
a uživatele významně neovlivňoval, pro
podporu přechodu na IPv6 vznikly různé
mechanismy, které jsou zpravidla postave­
né na myšlenku tunelování. Cílem je buď
připojit k IPv6 internetu host nebo síť, která
má pouze IPv4 upstram či obecně uplinky,
nebo opačně zpřístupnit obsah na IPv4 in­
ternetu IPv6-only hostům v IPv6-only sítích.
V prvním případě se tunelováním překlenuje
neschopnost podkladné fyzické sítě přenášet
IPv4, ale není problém dát koncovým uzlům
IPv6 adresy. Ve druhém případě je situace
složitější, počítá se totiž s tím, že koncový
uzel prostě nebude mít vůbec IPv4 adresu,
ale přesto bude chtít komunikovat s IPv4
světem. Za tím účelem je navrženo několik
protokolů, které různě kombinují tunelo­
vání, překlad adres a protokolů, případně
i manipulace s DNS.
Tunelovací protokol 6in4
Protokol 6in4 definovaný v RFC 4213 [4]
definuje velmi jednoduchý protokol na enkapsulaci IPv6 datagramů přímo v IPv4. Tím
zajišťuje svoji úlohu s minimální režií. Ne­
výhodou 6in4 je, že jako nestavový protokol
neprochází v obecném případě NATem a že
je nutné ho staticky konfigurovat podobně
jako GRE. Protože oba koncové body musí
znát adresu svého partnera, je nutné mít
buď statické veřejné a neNATované IPv4
adresy na koncových bodech, nebo použít
nějaký automatický konfigurační mechanis­
mus či protokol. Kvůli omezením protokolu
6in4 není tento protokol příliš rozšířený pro
tunelování IPv6 ke koncovým uživatelům, ale
používá se k tunelování mezi servery a celý­
mi sítěmi a jeho podpora je na běžných síťo­
vých operačních systémech bezproblémová.
Z hlediska zařazení k návrhovému vzoru je
tento protokol nestavový a point-to-point.
Tunelování IPv6 pro
koncové uživatele
Zajistit IPv6 konektivitu pro koncové uživa­
tele, jejichž ISP IPv6 nepodporují, lze také
pomocí tunelů. Díky několika celosvětovým
iniciativám, které vytvořily takzvané Tunnel
Brokery toho lze dosáhnout dokonce zdarma
a relativně snadno. Tunnel Broker je zpra­
vidla organizace, která umožňuje registraci
a získání uživatelského přístupu do provisio­
ning systému, který uživateli založí a nastaví
tunel, přidělí adresy pro koncovou síť, nasta­
ví reverzní DNS a pomůže při nastavení jeho
koncové stanice či sítě. Z hlediska topologie
se jedná o hub-and-spoke a současní TB
disponují (často vlastními proprietárními)
protokoly a softwarem pro automatické
navazování tunelů pro klienty s dynamickou
IPv4 adresou, nebo dokonce i přes NAT.
Hlavní TB jsou v současnosti SixXS
a Hurricane Electric. SixXS je nekomerční
organizace, která má centrální provisioning
systém, ale IPv6 adresy, koncové body pro
tunely a síťové pásmo získává od sponzorů
- provozovatelů koncových bodů. Mimo­
chodem, koncový bod SixXS je i v Praze,
což umožňuje českým uživatelům připojení
k IPv6 internetu se zanedbatelnou latencí
a dostatečným síťovým pásmem. Hurricane
Electric je velký mezinárodní síťový provi­
der, a tak pásmo a tunelové body poskytuje
převážně sám.
Protokol AYIYA
K překlenutí NATu a jistých omezení firewally vznikl také pokročilý protokol AYIYA
(Anything In Anything) [7]. Smyslem tohoto
protokolu je umožnit relativně nenákladné
tunelování libovolného protokolu, v součas­
nosti zejména IPv6, přes L4 protokoly, jako
je UDP, TCP nebo SCTP. Tím se sice zvyšuje
režie a komplexita protokolu, ale výhodou
je, že L4 protokoly prochází NATem. AYIYA
navíc poskytuje základní zabezpečení proti
útokům na tunely, zejména vydávání se
za jednu stranu tunelu a opětovné vyslání
zachycených dat. Implementace AYIYA na
straně klienta existuje v podobě multiplatformího open-source softwaru AICCU (Au­
tomatic IPv6 Connectivity Client Utility),
který je šířen pod BSD licencí a vznikl přímo
v rámci SixXS.
Jiné tunelovací
technologie
Mimo rozebraných protokolů ještě stojí za
pozornost celá rodina protokolů IPsec, která
má provozní mód tunel a jím umožňuje do­
sáhnout tunelování různorodých protokolů
po heterogenní nebezpečné síti. Zaměření
IPsecu je sice především na bezpečnost,
kryptografii a autenticitu dat, což ale nevylu­
čuje možnost postavit pomocí IPsec tunelů
zajímavé a komplexní virtuální sítě.
Další důležitá technologie je Teredo [8],
za níž v současnosti stojí Microsoft. Jedná se
o cloud koncových bodů pro dynamické nestavové tunely a používá vlastní protokol pro
sestavování tunelů, vyhledávání nejkratší
cesty a řízení. Výhodou je, že Teredo funguje
prakticky samo a nevyžaduje konfiguraci,
dokonce je dodávané v některých verzích
Windows a je ve výchozím stavu zapnuté,
takže umožňuje komunikovat uživatelům
s IPv6 světem, aniž by to vůbec věděli. Na
druhou stranu Teredo neposkytuje pevné
IPv6 adresy a jeho architektura je složitá, ne­
přehledná a v mnoha ohledech znemožňuje
řešení problémů, pokud nějaké nastanou.
Teredo je také považováno za bezpečnostní
riziko, a proto ho administrátoři Windows
často hned deaktivují.
Tunelování v budoucnosti
Nedostatek IPv4 adres je velkou výzvou pro
celý internet a návrháři protokolů projevili
velkou invenci při vymýšlení přechodových
mechanismů, které umožňují obejít ome­
zení IPv4 internetu, zejména NAT, který je
vlastně také důsledkem nedostatku adres.
V budoucnu, až se prosadí IPv6, zmizí NATy
a v internetu bude opět běžná end-to-end
konektivita, zmenší se význam tunelovacích
technologií jako prostředku pro přechod na
IPv6. Naopak s příchodem cloud computingu a privátních cloudů bude třeba zajistit ve
velké míře bezpečné, vyhrazené a spolehlivé
komunikační kanály, a tak se možná přesune
hlavní význam tunelování právě do zajišťo­
vání bezpečnosti a robustnosti spojení mezi
cloudem a konzumentem jeho služeb.
Zdroje
[1] RFC2784, http://tools.ietf.org/html/
±2784
[21 RFC2637, http://tools.ietf.org/html/
±2637
[3] RFC2661, http://tools.ietf.org/html/
±2661
[4] RFC4213, http://tools.ietf.org/htmt/
±4213
[5] RFC 1918, http://tools.ietf.org/html/
±1918
[6] RIPE 55 meeting report, www. ripe, net/
ripe/meetings/ripe-meetings/ripe-55/
meeting-report
[7] Internet Draft AYIYA: Anything In
Anything, http://unfix. org/~ jeroen/
archive/drafts/draft-massar-v6ops-ayiya-01.
txt
[8] RFC4380, http://tools.ietf.org/html/
±4380
Autor pracuje jako
síťový specialista
ve společnosti
Ignum.