header image
Home arrow Protokoły TCP/IP arrow NAT arrow NAT - Network Address Translation
NAT - Network Address Translation E-mail
Oceny: / 120
KiepskiBardzo dobry 

Zasady stosowania NAT (Network Address Translation). W ostatnich latach Internet zaczął się bardzo szybko rozwijać. We wczesnych latach jego istnienia, kiedy tylko uniwersytety i instytucje rządowe go używały, cztery miliardy adresów IPv4 wydawały się być granicą nie do osiągnięcia, a co za tym idzie wystarczającą. Jednak mylono się. Szacuje się, że każdego dnia przybywa kilkanście tysięcy nowych hostów podłączonych do sieci.



We wczesnych latach 90-tych panowało ogólne przekonanie, że liczba wolnych adresów IP wkrótce się wyczerpie. W rzeczywistości nadal mamy wystarczającą ilość adresów, ale z powodów właściwości routingu (tabele routingu nie mogą być zbyt duże z powodu zajmowanej pamięci a proces routowania stwarza problemy związane z czasem - efektywne routowanie musi być szybkie) musi być ona podzielona na bloki, podsieci klasy A, B i C.

Dla każdej podsieci w klasie , routery szkieletowe potrzebują wejścia (wpisu) w swojej tabeli. Klasa A umożliwia ponad 16 milionów hostów w podsieci, jest to o wiele za dużo dla większości zastosowań, poza tym jest tylko dostępnych kilka sieci klasy A. Sieci klasy C ze swoimi 254 hostami są znowu zbyt małe. Sieci klasy B zawierają umiarkowaną liczbę hostów ( ok. 10000 adresów) dla średnich przedsiębiorstw, ale ponad połowa adresów została już przydzielona do 1992 roku. Większość organizacji wybiera więc stosowanie wielu podsieci z obszaru klasy C, ale powoduje to przepełnienie tabel routingu w wielu urządzeniach, należy pamiętać, że router potrzebuje wpisu dla każdej pojedyńczej sieci z klasy A, B lub C.

W związku z tym zaczęto opracowywać nowy protokół internetowy, zwany dziś IPv6, który powinien obejść limit nałożony przez IPv4. W związku z ulepszeniem nowego protokołu, wzrośnie przestrzeń adresowa, więc miejmy nadzieje, że z problemem adresacji skonfrontujemy się dopiero za kilka dekad. Jednakże wprowadzenie IPv6 zajmie kilka lat, a migracja z IPv4 do IPv6 nie zostanie przeprowadzona w krótkim czasie. Jest zatem jasne, że z IPv4 będziemy działać jeszcze przez kilka lat. Oznacza to, że należy znaleźć rozwiązanie problemu niewystarczającej przestrzeni adresowej w IPv4.

Krótkoterminowym rozwiązaniem jest koncepcja Supersieci lub Classless Inter Domain Routing (CIDR - RFC 1519). CIDR wspiera agregację tras (route aggregation) ( pojedyńczy wpis w tabeli routingu może reprezentować przestrzeń adresową kilkutysięcy tradycyjnych tras opartych na klasach) i w związku z tym redukuje liczbę wpisów w tabelach routingu. Ponadto CIDR umożliwia bardziej wydajny sposób dla przydziału przestrzeni adresowej IPv4, przez eliminację tradycyjnej koncepcji klas A, B i C. Pozwala to na rozwinięcie dowolnej wielkości sieci przez co nie jesteśmy ograniczani standardowymi 8-mio, 16-to lub 24-ro bitowymi numerami sieciami skojarzonymi z klasami. W modelu CIDR, każda część informacji routingu jest rozgłaszana z długością prefiksu, która określa liczbę bitów (licząc od lewej strony) używanych dla części sieciowej adresu IP. CIDR pomaga tylko osłabić problem adresacji, ale go nie likwiduje.

Internet Assigned Number Authority (IANA) postanowiła rozwiązać ten problem w następujący sposób: zdefiniowano prywatną przestrzeń adresową dla prywatnych celów (komunikacja wewnątrz własnej sieci), a jeśli komunikacja odbywa się poza własną sieć to stosuje sie adresację publiczną, co pomaga zaoszczędzić pulę adresów publicznych. Główną zaletą tego rozwiązania (czyli NAT) jest to, iż prywatna pula adresowa nie jest unikalna, tzn. że mogą ją wykorzystywać różne przedsiębiorstwa oraz adresy te są nie-routowalne w Internecie, dlatego też jeśli jest potrzeba połączenia z Internetem, to adres prywatny musi zostać zastąpiony adresem publicznym.

Jednym z rozwiązań tego problemu jest dynamiczne przydzielanie publicznego adresu IP hostowi, wtedy kiedy chce on wyjść poza sieć prywatną. Powoduje to zamianę lokalnego adresu IP w pakiet z publicznym adresem IP. W związku z tym host prywatny nie jest osiągalny z zewnątrz. Powoduje to pewne wady jak i zalety, np. bezpieczeństwo. Innymi ujemnymi stronami tego rozwiązania jest ograniczenie liczby równoległych połączeń lub cały proces może nie być całkowicie przeźroczysty, z powodu fakty, że istnieją protokoły (np. File Transfer Protocol - FTP), które transmitują swój adres IP w części przeznaczonej na dane w pakiecie IP.

Rozwiązaniem, które wspiera połączenia używające schematów adresacji publicznej/prywatnej jest Network Address Translation (NAT - RFC 1631).

 

ADRESOWANIE

Adresowanie globalne

W roku 1981 protokół IP został standaryzowany. Jego specyfikacja wymagała, że każdy system podłaczony do Internetu i oparty na IP będzie miał unikalny 32-bitowy adres.

Pierwsza część adresu identyfikuje sieć, w której umiejscowiony jest host, natomiast druga część adresu identyfikuje konkretny host w danej sieci. Tworzy się więc dwu-poziomowa hierarchia adresowania (rys.1).

Podzial adresu IP

Rys. 1: Części adresu IP

 

W związku z tym, że adres powinien być elastyczny i dawać możliwość budowania różnej wielkości sieci, twórcy zdecydowali sie podzielić adres IP na trzy różne klasy: klasa A, klasa B i klasa C. Każda klasa ma stałą granicę pomiędzy prefiksem sieci a numerem hosta w tej sieci wewnątrz 32-bitowego adresu IP (rys.2).

Klasy adresów IP dla unicastu

Rys. 2: Klasy adresu IP

 

Jedną z fundamentalnych cech tej adresacji jest to, że każdy adres zawiera klucz samokodujący, identyfikujący punkt podziału pomiędzy prefiksem sieci a numerem hosta. Dla przykładu, jeśli pierwsze dwa bity adresu IP mają wartość ''10'', to punkt podziału przypada pomiędzy 15 a 16 bitem. Uprościło to systemy routingu w czasie pierwszych lat internetu, ponieważ oryginalny protokół routingu nie przenosił informacji o masce sieci, która określała długość prefiksu sieci.

 

 Adresacja prywatna w internecie.

W czasie rozpowszechniania się technologii TCP/IP, wiele adresów IP zostało zarezerwowanych dla przedsiębiorstw nie podłączonych do Internetu. W związku z niedoborem adresów IP, IANA postanowiła zdefiniować metodę chroniącą zakres adresacji IP przed bezsensownym roztrwonieniem.

RFC 1918 (Address allocation for private Internets), definiuje, że hosty wewnątrz sieci korporacyjnej powinny być podzielone na trzy kategorie:

Kategoria 1.
Hosty, które nie wymagają dostępu do hostów w innych korporacjach lub w Internecie. Hosty z tej kategorii używają adresacji IP, która jest jednoznaczna wewnątrz korporacji, ale niejednoznaczna między wieloma korporacjami (np. serwer lokalny).

Kategoria 2.
Hosty, które potrzebują dostęp do okrojonego zbioru zewnętrznych zasobów (np.: E-mail, FTP, news, remote login), który to dostęp może być obsługiwany przez bramę mediacyjną (np. gateway warstwy aplikacyjnej). Dla wielu hostów z tej kategorii ograniczony zewnętrzny dostęp (poprzez połączenie IP) może być niepotrzebny i nawet niepożądany z powodów prywatnych i bezpieczeństwa. Hosty z tej kategorii używają adresacji IP, która jest jednoznaczna wewnątrz korporacji, ale niejednoznaczna między wieloma korporacjami (np. E-Mail, FTP, netnews).

Kategoria 3.
Hosty, które wymagają dostępu warstwy sieciowej na zewnątrz korporacji ( poprzez połączenia IP); hosty tej kategorii wymagają adresu IP, który jest jednoznaczny (unikalny) globalnie, aby mógł być osiągalny z każdego miejsca (Public server).

Pierwsze dwie kategorie tworzą pulę prywatną (private), trzecia kategoria pulę publiczną (public).

Odnosząc się do tej klasyfikacji IANA zarezerwowała bloki adresów prywatnych w sieci Internetowej.

Tymi zarezerwowanymi adresami prywatnymi są:

  Początkowy adres Końcowy adres
Notacja CIDR
 w klasie A
 10.0.0.0  10.255.255.255  10/8 prefix
 w klasie B
 172.16.0.0  172.31.255.255  172.16/12 prefix
 w klasie C
 192.168.0.0  192.168.255.255  192.168/16 prefix

Dzięki prywatnej adresacji firmy mają możliwość budowy elastycznej sieci według własnej koncepcji, bez potrzeby rejestrowania adresów w IANA, gdyż adresy z powyższej tabeli mogą dowolnie wykorzystywać. W związku z tym, że adresy prywatne mogą być wykorzystywane przez wszystkie korporacje w ich własnych sieciach, zaoszczędzono adresy publiczne.

Translatory adresów IP (NAT i NAPT)

Istnieją dwa sposoby translacji adresów prywatnych na publiczne:

1. NAT - Network Address Translation.

2. NAPT - Network Address Port Translation  bądź inna nazwa PAT - Port Address Translation

Zaawansowanym scenariuszem routingu, który wykorzystuje adresację prywatną / publiczną (private / global) jest NAT Network Address Translation. NAT, wspierając wszystkie klasyfikacje adresów hostów, może być efektywnie wykorzystany do zredukowania liczby przydzielonych adresów w klasach IANA. NAT umożliwia ponowne użycie adresów z klas routowalnych przez translację nie-routowalnych adresów w globalne adresy routowalne. Jest to mechanizm, dla sieci o adresacji prywatnej, umożliwiający dostęp do zarejestrowanych sieci, bez potrzeby rejestracji prywatnej podsieci. Odnosząc się do NAT (Network Address Translation), sieć prywatna jest zdefiniowana jako wewnętrzny (inside) schemat adresowania, który będzie w procesie NAT przekonwertowany na legalnie zarejestrowaną adresację, zanim pakiet zostanie przekazany do publicznej sieci Internet, zdefiniowanej jako zewnętrzna (outside).

Sieć z NAT

Rys.3. Implementacja NAT

NAT może dokonać konwersji na dwóch różnych poziomach adresowania pakietu:

1. na poziomie warstwy sieciowej: adres IP - NAT

2. na poziomie warstwy transportowej: socket (adres IP i numer portu) - NAPT (PAT)

Rozpatrzmy powyższe dwie metody translacji NAT i NAPT (PAT).

1. Pierwsza metoda (NAT) dokonuje translacji tylko adresu IP prywatnego hosta.
Informacja adresowa wygląda następująco:

(adres IP źródła : numer portu źródłowego;
adres IP przezn. : numer portu przeznaczenia)

pakiet, który wychodzi w kierunku Internetu jest translowany do postaci:

(adres IP źródła : numer portu źródłowego;
adres IP przezn. : numer portu przeznaczenia)

2. W drugim przepadku modyfikacji (NAPT, PAT) podlegają zarówno adres IP jak i numer portu TCP/UDP.
Informacja adresowa wygląda następująco:

(adres IP źródła : numer portu źródłowego;
adres IP przezn. : numer portu przeznaczenia)

pakiet, który wychodzi w kierunku Internetu jest translowany do postaci:

(adres IP źródła : numer portu źródłowego;
adres IP przezn. : numer portu przeznaczenia)

Dla pakietów w kierunku odwrotnym, czyli z Internetu do sieci prywatnej, dokonywane są podobne modyfikacje, ale na polach przeznaczenia.

Poniżej graficznie przedstawione są modyfikacje pól nagłówków TCP/IP z NAT.

Modyfikacje pól IP z NAT

 

Poniżej graficznie przedstawione są modyfikacje pól nagłówków TCP/IP z NAPT (PAT).

Modyfikacje pól IP z NAPT (PAT)

 

Translacja statyczna i dynamiczna

Kiedy mówimy o NAT (Network Address Translation) to musimy wiedzieć, że translacje NAT mogą być dokonywane statycznie (dokonywane ręcznie) lub dynamicznie. W pierwszym przypadku przydział adresu NAT-IP dla oryginalnego adresu IP jest jednoznaczny w drugim nie jest. W statycznym NAT pewien stały źródłowy adres IP jest zawsze translowany do tego samego adresu NAT-IP i żaden inny adres IP nie będzie translowany do tego samego adresu NAT-IP. Natomiast w przypadku translacji dynamicznej NAT, adres NAT-IP jest zalężny od różnorodnych warunków działania i może być kompletnie inny dlakażdej pojedyńczej sesji.

ADSL

Translacja adresów NAT (Network Address Translation) jest powszechnie wykorzystywana w modemach ADSL.