Wszystko o NAT – mechanizmy translacji adresów sieciowych

NAT w praktyce

Adresacja IPv4 została zaprojektowana w sposób, który zapewniał unikalność każdego z adresów IP oraz możliwość globalnej komunikacji pomiędzy każdym z adresów. Wszystkie protokoły sieciowe były projektowane właśnie pod taką architekturę. Na początku lat 90. część specjalistów zaczęła sygnalizować możliwość wyczerpania się zasobów adresacji publicznej IPv4. Propozycja rozwiązania problemu musiała pojawić się szybko. Wykorzystano pule adresów do użytku prywatnego zdefiniowanych w RFC1918 z zakresów 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8. Adresy te mogły zostać wykorzystane w różnych sieciach, więc nie były globalnie unikalne. Jeżeli chciano, aby urządzenie z jednej sieci komunikowało się z urządzeniem z innej sieci (obie wykorzystywały adresację prywatną) poprzez publiczną sieć internet, musiano komunikować się z wykorzystaniem mechanizmu NAT. NAT spowodował możliwość wykorzystania tych adresów w komunikacji globalnej.

Rozwiązanie NAT jest proste i skuteczne. Konfigurujemy router lub zaporę ogniową realizującą funkcje NAT44 na brzegu sieci, gdzie posiadamy interfejs do publicznej sieci internet. Interfejs zewnętrzny posiada przypisany jeden lub kilka unikalnych adresów IPv4 publicznych, przydzielonych przez operatora. Adresy prywatne IPv4 przypisane do interfejsu wewnętrznego sieci komunikują się z publiczną stroną internetu. NAT zamienia w pakietach prywatny adres źródłowy IPv4 na jeden z publicznych adresów IPv4. Mechanizm NAT pamięta, które urządzenie wewnętrzne wysyłało pakiet poprzez realizację tablicy mapowania wewnętrznych adresów na zewnętrzne adresy. Istnieje możliwość statycznego przypisania, które adresy prywatne mają być zamieniane na określone adresy publiczne. W najprostszej postaci NAT zamienia pulę adresów prywatnych na pulę adresów publicznych. Szczególnym przypadkiem jest zamiana puli adresów prywatnych IPv4 na jeden adres publiczny IPv4, określane nazwą maskarady lub PAT (Port Address Translation). W tym przypadku do mapowania wykorzystano nie publiczny adres IP, ale także numery portów dostępne dla każdego indywidualnego adresu. Protokół TCP oraz UDP wspiera do 65536 portów, z których większość jest niewykorzystywana. Port jest liczbą 16-bitową, więc potencjalnie można zamapować 65536 przepływów TCP oraz 65536 przepływów UDP za pomocą pojedynczego adresu IPv4. Przeciętne gospodarstwo domowe lub firma nie generują jednocześnie tak wiele przepływów. W ten sposób mapujemy sesję – wewnętrzne połączenie adresu prywatnego i portu na zewnętrzny adres publiczny i port. Za pomocą tego rozwiązania możemy udostępnić połączenie z internetem dla całej sieci adresów prywatnych z wykorzystaniem tylko jednego adresu publicznego. Opisane przypadki kwalifikowały się do wersji SNAT. Mechanizm SNAT pozwala wykorzystać także zalety rozkładania ruchu na kilka łączy do różnych dostawców, obsługiwanych przez jeden router (multihoming). Dzięki SNAT możemy sterować ruchem wychodzącym z naszej sieci na kilka łączy, bez konieczności zmiany adresacji wewnętrznej.

Wszystko o NAT – mechanizmy translacji adresów sieciowych

Mechanizm PAT wykorzystuje jeden adres IP do maskarady sieci adresów prywatnych

Jeżeli w sieci wewnętrznej istnieją serwery, które powinny być osiągalne z zewnątrz, musimy wykorzystać mechanizm DNAT. W tym przypadku podajemy najczęściej numer portu i adres publiczny IPv4 od strony interfejsu zewnętrznego oraz adres IP serwera wewnątrz sieci i udostępnianego portu. Ta funkcjonalność na routerach sprzętowych często określana jest nazwą wirtualnego serwera lub przekazywania portów. Ciekawym zastosowaniem DNAT są mechanizmy rozkładania obciążenia serwerów (load balancing). W takiej konfiguracji istnieje urządzenie balansujące ruch, które z jednej strony jest przyłączone do internetu, natomiast z drugiej strony obsługuje siatkę serwerów oferujących określone usługi. Użytkownik łącząc się do danej usługi, przechodzi przez urządzenie balansujące ruchem, które za pomocą mechanizmu DNAT podmienia adres docelowy IP serwera, zawarty w pakiecie. Urządzenie balansujące ma informacje na temat obciążenia każdego z serwerów, więc może zamienić adres docelowy IP na serwer najmniej obciążony.

Implementacje mechanizmów NAT w urządzeniach są dość zróżnicowane, ale efekt jest zawsze identyczny. Producenci sprzętu posiadają własne implementacje NAT. W przypadku systemu Linux mechanizm NAT jest realizowany przez pakiet iptables, natomiast w przypadku systemu FreeBSD jest to ipfw (IP firewall), ipf (IP filter) lub pf (OpenBSD Packet Filter). Własną konfigurację NAT w elementach RRAS (Routing and Remote Access) zawierają także systemy Windows. W nieskomplikowanych urządzeniach NAT ogranicza się zazwyczaj do udostępnienia maskarady (PAT) w kierunku do internetu oraz możliwości udostępnienia określonych serwerów z wewnętrznej sieci. W zaawansowanych rozwiązaniach sprzętowych, a także w większości implementacji systemów operacyjnych możliwa jest praktycznie dowolna konfiguracja NAT.


TOP 200