Network address translation

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

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í nebo cílové IP adresy, často i změnu čísla TCP/UDP portu u průchozích IP paketů. Po přepisu je obvykle nutné měnit kontrolní součet datagramu. 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.[zdroj?]

Definice[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

  • 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í[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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 u iptables.

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[editovat | editovat zdroj]

Network Address Port Translation
Network Address Port Translation (NAPT, PAT, IP maškaráda) je technika, 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é
NAT 1:1 (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[editovat | editovat zdroj]

Některé protokoly aplikační vrstvy (např. FTP nebo SIP) odesílají včetně dat i síťové adresy. Např. FTP v aktivním módu používá jedno připojení pro data a jedno pro samotné příkazy. Iniciátor datového přenosu na počátku identifikuje příslušné datové spojení z adres jeho síťové a transportní vrstvy. Jestliže iniciátor přenosu leží za jednoduchým NAT firewallem, tak překlad IP adresy a/nebo čísla TCP portu vrátí ze serveru nesprávné informace. SIP ovládá mnoho VoIP hovorů a trpí stejným problémem. SIP a SDP mohou využívat více spojení a posílat hlasový proud přes RTP. IP adresy a čísla portů jsou zakódovány v přenášených datech a musí být známy před tím, než překročí NAT. Bez speciálních technik jako je STUN, je chování NATu nepředvídatelné a komunikace tak může často selhávat.

Speciální softwarový modul – brána aplikační vrstvy (ALG) tyto problémy může napravit. ALG běžící na zařízení s NAT firewallem aktualizuje data zneplatněná adresním překladem. ALG potřebuje rozumět všem protokolům z vyšších vrstev, aby vše mohlo fungovat, a proto každý protokol potřebuje vlastní ALG. Na linuxových systémech jsou jaderné moduly, které mají na starost sledování spojení (anglicky connection trackers) a slouží k implementaci ALG. To ale nefunguje, když je kanál šifrovaný (např. FTPS).

Další možností jak tento problém řešit, je použití NAT-T techniky (anglicky NAT traversal) pomocí protokolů STUN nebo ICE (anglicky Interactive Connectivity Establishment). NAT-T je možný jak v aplikacích založených na TCP i UDP. Využití přes UDP je ale jednodušší.

Dále se nabízí řešit problém za pomoci UPnP (anglicky Universal Plug and Play) nebo NAT-PMP (anglicky NAT Port Mapping Protocol). Ty ale nutně potřebují, aby s nimi NAT na samotném zařízení spolupracoval.

Většina tradičních klient-server protokolů (kromě FTP), ale ve třetí vrstvě neposílá kontaktní informace a tudíž s NATem výše zmíněné problémy nevznikají. Ve skutečnosti se dnes řešením problémů s NATem zabývají především ti, kteří vymýšlejí nové protokoly vyšších vrstev (např. používání SFTP místo FTP).

NAT může také způsobovat potíže tam, kde je spuštěno IPsec a v případech, kdy je za NATem více zařízení jako jsou SIP telefony. Telefony, které šifrují svou signalizaci s IPsec zapouzdří informace o portu do zašifrovaného paketu, což znamená, že NA(P)T zařízení se k němu nemohou dostat a přeložit ho. V těchto případech NA(P)T zařízení dělají jednoduché NAT operace. To způsobí, že veškerý provoz, který se bude vracet na NAT se přesměruje na jednoho klienta a obsluha ostatních klientů selže. Dá se to řešit několik způsoby. Jedním z nich je použití TLS, který běží na čtvrté vrstvě referenčního modelu ISO/OSI a proto neskrývá číslo portu. Tím dalším je zapouzdření IPsec do UDP, což využívá TISPAN k dosažení bezpečného NAT-T.

Bezpečností díra DNS protokolu, kterou 8. července 2008 ohlásil Dan Kaminsky, byla nepřímo způsobena NAT mapováním portů. Aby se tomu zabránilo, tak je potřeba, aby se nepřekládala původní čísla UDP portů odchozích DNS požadavků ze serveru, který je za NATem. Doporučuje se, aby pomocné DNS servery využívaly náhodné porty. Když NAT způsobí, že porty nebudou náhodné, tak bude DNS server zranitelný.

DNAT[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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).

Reference[editovat | editovat zdroj]

V tomto článku byl použit překlad textu z článku Network address translation na anglické Wikipedii.

Externí odkazy[editovat | editovat zdroj]