Z hlediska Internetu (např. z hlediska originálního serveru) není vnitřní síť vidět - je skrytá. Klienti vnitřní sítě se jeví jakoby byli lokálními klienty proxy. Z hlediska Internetu to vypadá, jakoby proxy byla nějakým velkým počítačem s velkým množstvím terminálů a všichni klienti vnitřní sítě seděli u těchto terminálů.
Spojení klienta se serverem může být realizováno protokolem TCP/IP nebo i jinými protokoly jako např. IPX/SPX. Nás však zajímá protokol TCP/IP.
V případě protokolu TCP/IP z pohledu Internetu na IP-adresách klientů nezáleží - jsou přece skryty. Avšak z hlediska proxy bychom proxy zbytečně přivedly do svízelné situace, kdyby klient i originální server měli stejnou IP-adresu. Proto je důležité volit pro klienty vnitřní sítě IP-adresy takové, které se v Internetu nevyskytují.
I když je na Zemi mnoho vnitřních sítí (Intranetů), tak klienti
jednotlivých intranetů mezi sebou nenavazují žádné spojení, tj. všechny
Intranety mohou používat stejné IP-adresy. Pro Intranety byly přiděleny
následující intervaly IP-adres:
10.0.0.0 | až | 10.255.255.255 |
172.16.0.0 | až | 172.31.255.255 |
192.168.0.0 | až | 192.168.255.255 |
Často se setkávám s otázkou: "My už máme vybudovanou podnikovou síť a chtěli bychom ji připojit do Internetu. Avšak použili jsme pro naši síť IP-adresy, které jsou v Internetu přiděleny někomu jinému. Co máme dělat". Odpověď je:"Přečíslovat celou vnitřní síť na IP-adresy buď uvedené v předchozí tabulce, nebo pokud byste použili pouze ochranu filtrací, pak si nechat přidělit IP-adresy pro sebe."
Můžete o tom dlouho diskutovat, ale to je praktická zkušenost. Setkal jsme se s mnoha názory, jak se v takové situaci obejít bez přečíslování. Např. názor, že stačí mít umístěnou proxy na počítači s dvěma síťovými interfejsy, jeden interfejs pro vnitřní síť a druhý pro Internet. Pak přece proxy může rozlišit jestli se jedná o IP-adresu z Internetu nebo o stejnou adresu z Intranetu. Jenom si stačí uvědomit, že proxy pracuje na aplikační vrstvě, takže jej nezajímá problematika vrstvy IP. Standardní knihovny TCP/IP aplikační vrstvě žádné informace o použitém interfejsu nepředávají. Software, který by tak činil, by byl pěkně atypický. Firewally používají modifikovaný software, který by to byl asi schopen zajistit, ale zase z bezpečnostního hlediska nebudete chráněni před útokem označovaným address spoofing attack, o kterém jsme se zmiňovali v kapitole o filtrech. Prostě přečíslovat a neztrácet čas planými diskusemi. Nechápejte proto následující kapitolu NAT jako cestičku, jak se vyhnout přečíslování, protože každé takové řešení je jen dočasné. A politicky je uvnitř firmy nejpříhodnější situace k přečíslování právě v okamžiku připojování firmy k Internetu.
Proxy nám umožnila skrýt vnitřní podnikovou síť. Z hlediska Internetu si stačí i pro velkou firmu nechat přidělit v Internetu jednu IP-adresu a použít ji pro proxy. Všichni klienti vnitřní sítě pak z pohledu Internetu používají tuto IP-adresu. Pro úplnost musím dodat, že je praktické si nechat přidělit subsíť např. o osmi adresách. Jedna adresa by stačila v případě, že byste proxy připojovali pomocí sériového (COM) portu přímo k providerovi. Výhodné je mít na straně Internetu LAN připojenou přes přístupový router. Jednak kromě proxy můžete na tuto LAN připojit např. počítač s WWW-serverem vaší firmy a jednak na přístupovém routeru můžete kombinovat ochranu proxy s ochranou filtrací.
Některé routery realizují tzv. "Network Adress Translator" (NAT), který takové převody provádí. NAT specifikuje RFC-1631.
NAT se konfiguruje jako funkce přístupového routeru do Internetu, tj. routeru na straně firmy (nikoliv routeru na straně providera).
V nejjednodušším případě stačí pro vnitřní síť používat např. adresy 10.x.x.x, tj. adresy určené pro uzavřené podnikové sítě. A providerem si nechat přidělit několik celosvětově jednoznačných adres. Jako příklad budeme předpokládat, že máme od providera přiděleny celosvětově jednoznačné adresy 172.16.1.x (také to nejsou jednoznačné adresy, ale je to jen příklad - budeme si prostě představovat, že jsou celosvětově jednoznačné).
Pak stačí mít na routeru převodní tabulku (NAT-tabulku) obsahující
jednoduché položky, tj. IP-adresu vnitřní sítě a IP-adresu na kterou se
má adresa vnitřní sítě konvertovat v případě průchodu IP-datagramu routerem.
IP-adresa vnitřní sítě | IP-adresa celosvětově jednoznačná |
10.0.0.1 | 172.16.1.1 |
10.0.0.2 | 172.16.1.2 |
Takže z hlediska Internetu se počítač ve vnitřní sítí o IP-adrese 10.0.0.1 jeví jakoby měl IP-adresu 172.16.1.1.
NAT-tabulka může obsahovat statické položky, kdy je počítači vnitřní sítě jednoznačně trvale přiřazena celosvětově jednoznačná IP-adresa. Takováto strategie je např. důležitá pro IP-adresu WWW-serveru či poštovního serveru, na které se přistupuje z Internetu a které musí mít pevné IP-adresy, tj. stálá jména.
Statické přidělování adres má nevýhodu v tom, že každá statická položka NAT-tabulky vyčerpá jednu celosvětově jednoznačnou IP-adresu.
U klientů není přidělování pevných adres nutné. Stačí vzít několik přidělených IP-adres a dát je do pytle. Pytel adres pak předat routeru. Jestliže klient začne navazovat spojení se serverem v Internetu, pak se mu dynamicky přidělí z pytle jedna adresa. Po ukončení spojení se adresa vrací zpět do pytle.
Pro dynamické přidělování IP-adres potřebujeme mít v pytli připraveno tolik IP-adres, kolik může v jednom okamžiku přistupovat do Internetu klientů.
Avšak ve skutečnosti ani tolik adres nepotřebovali, kdyby NAT
nepoužil jednoduché položky ve své tabulce obsahující pouze IP-adresy,
ale položky rozšířené o čísla portů a typ protokolu. Následující příklad
znázorňuje jak dvěma klientům může NAT přidělit stejnou adresu, přesto
je spojení určeno jednoznačně - obě spojení se liší číslem portu klienta.
Nejprve NAT-tabulka:
Protokol | IP-adresa vnitřní sítě:Port | IP-adresa celosvětově jednoznačná:Port | IP-adresa serveru:Port |
TCP | 10.0.0.1:1500 | 172.16.1.1:1500 | 172.10.1.1:80 |
TCP | 10.0.0.2:1600 | 172.16.1.1:1600 | 172.10.1.1:80 |
Problém spočívá v tom, že klient 10.0.0.1 chce komunikovat se serverem Server, který má IP-adresu 10.0.0.2, avšak o stejné adrese jakou má server existuje i počítač ve vnitřní síti.
Klient si nechá od DNS přeložit jméno počítače na IP-adresu. Jelikož
Server
má adresu 10.0.0.2 oficiálně přidělenu, tak DNS odpoví klientovi, že server
má adresu 10.0.0.2. Odpověď DNS prochází routerem, který ji musí změnit.
Nejprve však přidá do NAT-tabulky další položku, která má jako celosvětově
jednoznačnou adresu 10.0.0.2, ale jako adresu vnitřní sítě jí musí přiřadit
nějakou volnou nepoužívanou adresu z vnitřní sítě, např. adresu 10.1.1.1.
Pak router provede konverzi odpovědi od DNS podle právě vytvořené položky
v NAT-tabulce.
Klient: IP-adresa vnitřní sítě | Klient: IP-adresa celosvětově jednoznačná | Server: IP-adresa vnitřní sítě | Server: IP-adresa celosvětově jednoznačná | |
10.0.0.1 | 172.16.1.1 | 10.1.1.1 | 10.0.0.2 |
Původní jméno dáme pomyslnému virtuálnímu serveru. Před tento pomyslný server umístíme router s aktivovanou komponentou NAT. Přijde-li první požadavek na spojení s našim virtuálním serverem, pak NAT změní IP-adresu virtuálního serveru na IP-adresu prvního reálného serveru. Druhý požadavek přesměruje na druhý reálný server atd. Až vyčerpá všechny reálné servery, tak další požadavek přesměrovává opět na první reálný server atd.