|
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).
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).
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).
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.
Poniżej graficznie przedstawione są modyfikacje pól nagłówków TCP/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.
|