Vyšlo na www.novinky.cz dne 3.3.1999
Vytištěno z adresy: http://www.earchiv.cz/anovinky/ai1721.php3

Privátní IP adresy

Jedním ze základních dogmat Internetu jako celosvětové sítě na bázi protokolů TCP/IP je požadavek, aby každý internetový uzel měl přidělenu jednoznačnou (celosvětově unikátní) IP adresu. To mj. znamená, že žádná IP adresa nemůže být použita vícekrát. Přesto ale z tohoto základního pravidla existují určité výjimky - jde např. o tzv. privátní IP adresy.

Důvod, kvůli kterému musí být v každé TCP/IP síti každý uzel vybaven jednoznačnou (unikátní, jinde nepoužitou) IP adresou, je vcelku jednoduchý a zřejmý - pokud by tomu tak nebylo a alespoň dva uzly měly stejnou adresu, jak by bylo možné je rozlišit? Jak by fungovaly směrovací mechanismy, které se starají o potřebnou volbu směru k příslušnému uzlu - ale ke kterému, když by jich bylo více? Požadavek na unikátnost IP adres se samozřejmě týká i té největší TCP/IP sítě na světě, a to globálního Internetu. Také zde je pro korektní fungování směrovacích mechanismů nutné, aby každý uzel měl unikátní (a tudíž vlastně celosvětově unikátní) IP adresu. Kvůli tomuto požadavku existuje v Internetu poměrně propracovaný systém přidělování IP adres, který potřebnou celosvětovou unikátnost dokáže zajistit - dnes konkrétně jde o celý hierarchický systém tzv. IP registries (jakýchsi "přidělovatelů" IP adres), o kterém si povíme v samostatném vydání této encyklopedie.

Požadavek na unikátnost adres přitom platí i v situaci, kdy se nějaké dvě sítě na bázi protokolů TCP/IP spojují - například když se nějaká dosud samostatná TCP/IP síť připojuje k Internetu. I po jejich spojení totiž musí platit, že každý uzel má unikátní adresu, odlišnou od všech ostatních. Tento požadavek v praxi vedl na velmi důrazná doporučení: aby i zřizovatelé IP sítí, kteří vůbec neplánují jejich připojení k Internetu, vždy používali pro své sítě takové IP adresy, které nejsou a nebudou použity jinde v Internetu - protože nemohou nikdy vyloučit, že v budoucnu se přeci jen nebudou k Internetu chtít připojit. Proto i takovéto "samostatné" a dosud nepřipojené sítě odčerpávaly z celkového adresového prostoru všech IP adres, který je jednou provždy dán jejich 32bitovou velikostí.

Vícenásobně použitelné IP adresy?

Vzhledem k původnímu způsobu přidělování IP adres, který byl poněkud "neekonomický" a vedl ke značnému plýtvání IP adresami (viz zde), se po určité době objevilo reálné nebezpečí jejich vyčerpání (podrobněji viz zde). Časem se podařilo vyvinout takové řešení, které by problém hrozícího nedostatku IP adres vyřešilo zásadním způsobem. Jde o novou verzi síťového protokolu IP (IP verze 6), která pracuje s podstatně většími IP adresami. Současně s tím se ale našly i takové mechanismy, které umožnily zpomalit původně rychlý úbytek IP adres. Jedním z nich je mechanismus CIDR, popisovaný v předchozím dílu této encyklopedie.

Dalším "dočasným" řešením, které neodstraňuje příčinu problému, ale pouze zpomaluje úbytek adres, je řešení umožňující vícenásobné použití IP adres. Tedy takové řešení, které dovoluje přidělit jednu a tutéž IP adresu více různým uzlům, v rámci různých sítí.

Podstata privátních IP adres

Základní myšlenkou právě naznačeného řešení, které je označováno jako použití tzv. privátních IP adres, je zavedení nové kategorie síťových uzlů. Zatímco až dosud byly všechny uzly "veřejné" (v tom smyslu, že byly dosažitelné ze všech ostatních uzlů), nyní se zavedly tzv. privátní uzly, dostupné pouze omezenému okruhu dalších uzlů, ale nikoli obecně všem ostatním uzlům. Asi nejlépe je představit si tuto možnost na lokální síti připojené k Internetu - uzly této lokální sítě mohou být nakonfigurovány jako privátní, neboli být vybaveny tzv. privátními IP adresami. Tedy takovými adresami, které nemusí být získány prostřednictvím IP registries, neboli způsobem, který zajišťuje jejich unikátnost. Mohou to tedy být takové adresy, které jsou již použity někde jinde v Internetu, nebo to o nich není známo (tj. mohou, ale nemusí být použity jinde). V zásadě si lze představit, že tyto privátní IP adresy si zřizovatel sítě může zvolit libovolně, aniž by se ohlížel na někoho jiného (například na celosvětový způsob distribuce IP adres, zajišťující jejich unikátnost).

Zásadním dovětkem, který je nutné dodat pro smysluplnost tohoto řešení, je požadavek na to, aby existence privátních uzlů (uzlů s privátními adresami) nebyla "prozrazována" směrem ven, do "veřejného" Internetu. Přesněji do té části soustavy vzájemně propojených sítí, ve které není možné očekávat, že se zde stejné adresy nevyskytují znovu. V našem konkrétním příkladě lokální sítě připojené k Internetu by to znamenalo, že informace o existenci vnitřních uzlů této sítě by se nesměla dostat do Internetu jako takového. Jinými slovy: vnitřní uzly lokální sítě musí být z vnějšího Internetu neviditelné.

Zkusme se nyní zamyslet nad dvěma otázkami: jak dosáhnout takovéto neviditelnosti a jaký to má smysl.

Odpověď na první otázku je vcelku jednoduchá: na tzv. směrovači, prostřednictvím kterého je lokální síť k Internetu připojena, se zablokuje šíření tzv. směrovacích informací (tedy informací sloužících potřebám směrování, které přenáší informace typu "uzel s adresou XY se nachází tam a tam), a to z lokální sítě směrem do veřejného Internetu.

S touto odpovědí pak souvisí i odpověď na druhou otázku: k čemu je to dobré? Kromě možnosti použití "neunikátních" IP adres to přináší například výrazné posílení bezpečnosti - když nějaké uzly nejsou zvenku viditelné, pak je o to těžší je tzv. nabourat neboli proniknout k nim nedovoleným způsobem.

Na druhé straně se za tyto výhody platí tím, že privátní uzly (v naší lokální síti) nemají možnost komunikovat s jinými uzly (ve veřejném Internetu). Tomu je ale třeba správně rozumět: nemají možnost přímé komunikace na úrovni síťové vrstvy a IP protokolu. Mohou však komunikovat s vnějšími uzly nepřímo, pomocí různých mechanismů. Například pomocí mechanismu NAT (Network Address Translation), přímo na úrovni síťové vrstvy. Nebo pomocí tzv. aplikačních bran, označovaných jako tzv. proxy brány (a tedy na aplikační úrovni).

Princip aplikačních proxy bran

Konkrétní představu řešení s proxy bránou naznačuje obrázek - proxy brána je umístěna na rozhraní dvou prostředí, tedy "veřejného" Internetu s unikátními IP adresami a "privátní" lokální sítě (s uzly, které mají privátní IP adresy). Každý uzel uvnitř privátní sítě přitom má možnost komunikovat s proxy bránou (resp. s uzlem na kterém běží), ale nemá již možnost komunikovat s uzly za touto proxy bránou. Samotná proxy brána přitom musí být "veřejná" neboli vybavena unikátní IP adresou a "viditelná" z obou stran.

Každá proxy brána neboli brána fungující na úrovni aplikační vrstvy je přitom zaměřena na určitou konkrétní službu. Nechť je to v praxi nejčastější příklad služby WWW (pak jde o tzv. WWW proxy bránu). Když uživatel některého z počítačů uvnitř lokální sítě (s privátními IP adresami) vznese požadavek na nějakou WWW stránku umístěnou ve veřejném Internetu, jeho browser tento požadavek ve skutečnosti pošle zmíněné WWW proxy bráně ("dál" ani nemůže). Proxy brána již sama má přístup ke "zbytku světa", neboli do veřejného Internetu, a tak zmíněný požadavek odešle - tentokráte svým jménem, tomu WWW serveru, kterého se požadavek skutečně týká. Jakmile dostane odpověď s požadovanou stránkou, uvědomí si, od kterého privátního uzlu původně požadavek přešel, a předá mu výsledek.

[Obr: bs6_1.gif (9561 Bytes)]
Představa lokální sítě s privátními IP adresami a proxy brány

Z pohledu uživatele "privátního" počítače je tento "přestup" přes proxy bránu zcela neviditelný (zajišťuje jej sám browser bez vědomí uživatele) a celkový efekt je tedy takový, jako kdyby uživatel měl ze svého počítače plný přístup k Internetu - ovšem jen pokud jde o službu, pro kterou je realizována příslušná brána.

Díky tomuto řešení jsou i "zvenku neviditelné" počítače s privátními IP adresami pro uživatele normálně použitelné, chtějí-li pracovat s konkrétními službami Internetu. Kromě efektu na použití IP adres to má i četné další výhody: například WWW proxy server může být současně tzv. cachujícím serverem, který si pamatuje ve své vyrovnávací paměti ty stránky, které přes něj projdou. Když je pak bude znovu kdokoli chtít - ten samý či jiný uživatel - bude je moci poskytnout ze své vyrovnávací paměti (paměti cache), a nebude je muset znovu načítat z původního místa. Ještě další efekt pak může být i v určitém omezení toho, kam uživatelé privátních uzlů smějí přistupovat a kam nikoli - i toto lze na cachující proxy bráně snadno nastavit.

Jaké adresy použít jako privátní?

Vraťme se nyní zpět k meritu věci - k možnosti použít privátní IP adresy. Již dříve jsme si řekli, že to mohou být v zásadě jakékoli IP adresy, a jediným požadavkem je to, aby byly různé v rámci celé "privátní" sítě - čili všude tam, kde je šířena informace o jejich existenci. V našem ukázkovém případě musí být tyto adresy unikátní pouze v rámci lokální sítě, připojené ke "zbytku světa" přes směrovač a proxy bránu.

V praxi ale není úplně optimální, aby jako privátní byly používány úplně libovolné adresy. Důvodem je skutečnost, že oddělení od vnějšího světa (blokování směrovacích informací o existenci uzlů s privátními adresami) nemusí být vždy ideální resp. může být někdy narušeno - ať již nevhodným nakonfigurováním příslušného směrovače, či jiným nedopatřením či chybou, závadou atd.

Proto byl z celého adresového prostoru všech IP adres vyčleněn určitý objem adres, o kterých se pak prohlásilo, že právě ony mají být používány v roli privátních IP adres. Toto "prohlášení" bylo učiněno formou internetového standardu, konkrétně dokumentu RFC 1918 (původně RFC 1597), a tudíž význam těchto adres je všeobecně znám. Znají jej například i výrobci směrovačů, kteří tudíž mohou do svých produktů zabudovat pojistky proti případnému "úniku" směrovacích informací. Pokud by u našeho ilustrativního příkladu tyto adresy přeci jen nějak "prosákly" z lokální sítě, ve které jsou použity, nejbližší další směrovač v Internetu by jejich další šíření automaticky zastavil, aniž by mu to musel někdo explicitně nakázat.

Rozsah IP adres, které byly vyčleněny pro použití v roli privátních IP adres, je následující: jde o jednu síťovou adresu třídy A (resp. jeden CIDR blok odpovídající velikosti síťové adresy třídy A), dále 16 síťových adres třídy B a konečně 256 síťových adres třídy C. Konkrétně jde o tyto adresy:

1x A 10.0.0.0 ==> 10.255.255.255
16x B 172.16.0.0 ==> 172.31.255.255
256x C 192.168.0.0 ==> 192.168.255.255