Network address
translation
Network Address Translation (NAT, česky překlad síťových adres,
také Network Masquerading (síťová maškaráda), Native Address
Translation (nativní překlad adres) nebo IP Masquerading(IP Maškaráda)) je
způsob úpravy síťového provozu přes router přepisem výchozí a/nebo cílové IP
adresy, často i změnu čísla TCP/UDP portu u průchozích IP paketů. K tomu patří i
změna kontrolního součtu (u IP i TCP/UDP), aby změny byly brány v úvahu. NAT se
většinou používá pro přístup více počítačů z lokální sítě na Internet pod
jedinou veřejnou adresou (viz gateway). NAT ovšem může způsobit problémy v
komunikaci mezi klienty a snížit rychlost přenosu.
Definice
Překlad
síťových adres je funkce, která umožňuje překládání adres. Což znamená, že
adresy z lokální sítě přeloží na jedinečnou adresu, která slouží pro vstup do
jiné sítě (např. Internetu), adresu překládanou si uloží do tabulky pod náhodným
portem, při odpovědi si v tabulce vyhledá port a pošle pakety na IP adresu
přiřazenou k danému portu. NAT je vlastně jednoduchým proxy serverem. NAT může
být softwarového typu (Nat32, Kerio Winroute firewall), nebo hardwarového typu
(router s implementací nat).
Vlastní komunikace
Klient odešle požadavek na
komunikaci, směrovač se podívá do tabulky a zjistí, zdali se jedná o adresu
lokální, nebo adresu venkovní. V případě venkovní adresy si do tabulky uloží
číslo náhodného portu, pod kterým bude vysílat a k němu si přiřadí IP adresu
Výhody
umožňuje připojit více počítačů na jednu veřejnou IP adresu - řeší se
tak nedostatek přidělených veřejných IP adres.
zvyšuje bezpečnost počítačů
připojených za NATem (potenciální útočník nezná opravdovou IP adresu)
Omezení
Nemáte skutečné připojení k Internetu a tak vám budou fungovat jen ty aplikace,
kterým to nevadí. Pokud patříte mezi uživatele, kteří si myslí, že WWW a
Internet jsou synonyma, pak si nejspíš překladu vůbec nevšimnete, v opačném
případě můžete narazit na situace, kdy vám některé aplikace nebudou fungovat. U
některých to půjde vyřešit konfigurací snadno, u jiných obtížně a funkčnost může
zůstat omezená, u některých to nepůjde vůbec.
Implementace
Ve
světě Windows je to například program WinRoute od Kerio Technologies Inc. Funkce
je implementována i v samotných Windows (Win2K a
novějších) Linuxová implementace je například uiptables.
Pro BSD je možné
použít IP Filter a z něj pak ipnat.
Network address translation neboli
překlad síťových adres, je funkce síťového routeru sloužící pro překládání adres
z lokálních sítí na jedinečnou adresu, umožňující přístup do sítě jiné,
například do Internetu.
Vznikl jako důsledek omezeného počtu veřejných IP
adres (IPv4 má 32 bitů a část z nich je navíc rezervována pro speciální účely).
Každý uživatel dnešního internetu nemůže mít adresu z vnějšího rozsahu, NAT
umožňuje celou vnitřní síť ukrýt za adresu jedinou.
V typické konfiguraci
používá lokální síť některý z rozsahů IP adres (192.168.x.x,
172.16.x.x-172.31.x.x a 10.x.x.x). Router má přidělenu soukromou adresu, ale
také je spojen s Internetem, buď jedinou veřejnou adresou (overloaded NAT), nebo
několika veřejnými adresami, přidělenými poskytovatelem připojení k Internetu
(Internet Service Provider). Jakmile jde paket z lokální sítě do Internetu, je
jeho zdrojová adresa (soukromá) přeložena na veřejnou. Router si uchovává
základní data o každém aktivním spojení (adresu cíle, port). Když se vrátí
odpověď na router, využije data získaná při odchozí fázi a určí kam na vnitřní
síť je třeba odpověď zaslat. Pro systém na Internetu se jeví router jako zdroj i
cíl komunikace.
Pakety posílané protokoly TCP a UDP obsahují kontrolní součet
zahrnující i hlavičku s adresami, tudíž je třeba kromě přepsání IP adres také
přepočítat kontrolní součet pro IP adresu novou.
NAT zvyšuje bezpečnost
počítačů za ním připojených (útočník nezná strukturu sítě a nemůže se spojit
přímo s konkrétním počítačem). NAT ovšem firewall nenahrazuje a existují
způsoby, jak počítače za NATem napadnout.
Druhy síťového překladu adres
- Network Address Port Translation (NAPT, PAT, IP maškaráda), kdy dochází k
mapování čísel portů. Několik strojů pak může sdílet jednu veřejnou IP adresu.
- NAT jedna ku jedné (basic NAT, static NAT), umožňující pouze překlad adres,
nikoli mapování portů. Tato možnost vyžaduje IP adresu pro každé samostatné
spojení.
Omezení NATu
Počítače za NATem mají jistá omezení, nemohou běžně
provozovat některé Internetové protokoly. Například služby vyžadující příchozí
TCP spojení z vnější sítě. Případem problémových protokolů jsou
například FTP nebo SIP, které přenášejí informaci s adresou navíc uvnitř paketu.
Při překladu adres se musí pakety zpracovávat celé a to může být velice náročné,
proto tyto protokoly nebývají podporovány.
Problémy se dají vyřešit několika
způsoby:
ALG (Application Layer Gateway), softwarový modul běžící na zařízení
s NATem
Techniky tunelování NATu užitím protokolů jako jsou STUN (Simple
Traversal UDP through NAT), ICE (Interactive Connectivity Establishment)
nebo TURN (Traversal Using Relay NAT)
UPnP (Universal Plug and Play)
nebo Bonjour (NAT-PMP) vyžadující kooperaci se zařízením s NAT
DNAT
DNAT
je technika pro transparentní změnu cílové IP adresy paketu na cestě a pro
vykonání opačné funkce pro jakékoliv odpovědi. Tuto transformaci může vykonat
kterýkoliv router umístěný mezi dvěma koncovými body.
DNAT se obvykle používá
při zveřejnění služby, umístěné v privátní síti, pro veřejně přístupnou IP
adresu.
SNAT
Použití termínu SNAT je u každé softwarové firmy jiné. To
znamená že každá firma má svou definici pro SNAT. Microsoft například používá
tento název pro Bezpečný (Secure) NAT. Obecná definice je Zdrojový (Source) NAT,
tedy protějšek Cílového NATu (DNAT).