IP

NAT i PAT

Translacja Adresów Sieciowych i Translacja Adresów Portów dla sieci prywatnych.

Ograniczona pula adresów IPv4 i translacja adresów

IPv4 używa adresów o długości 32 bitów, czyli puli około 4,3 miliarda wartości. Liczba urządzeń i sieci korzystających z Internetu przekroczyła możliwości przydzielania osobnego publicznego adresu każdemu hostowi. NAT pozwala używać adresów prywatnych wewnątrz sieci i tłumaczyć wybrane przepływy na adres publiczny routera. Nie zwiększa jednak puli IPv4 ani nie zastępuje wdrażania IPv6.

W sieci prywatnej wiele hostów ma adresy o znaczeniu lokalnym, na przykład z zakresu 192.168.0.0/16. Router na granicy sieci może zamienić źródłowy adres takiego hosta na adres interfejsu zewnętrznego. Dla ruchu powrotnego przechowuje wpis wskazujący host wewnętrzny oraz parametry sesji. Osobne wpisy translacji pozwalają wielu urządzeniom korzystać z jednego adresu publicznego.

jest funkcją urządzenia brzegowego. Router zmienia pola nagłówka zgodnie z tablicą translacji, zapamiętuje stan przepływu i odwraca mapowanie dla odpowiedzi. Wpis zawiera kierunek translacji oraz informacje potrzebne do obsługi odpowiedzi i wygasania stanu. W typowej sieci domowej komputery, telefony i inne urządzenia używają adresów prywatnych, a router korzysta z jednego lub kilku adresów publicznych przydzielonych przez dostawcę usług internetowych (ISP).

Prywatne i publiczne adresy IPv4

Opis NAT wymaga rozróżnienia adresów o znaczeniu lokalnym od adresów używanych do routingu w publicznej części Internetu:

Prywatne Adresy IP

Są przeznaczone do użycia wewnątrz sieci prywatnej, na przykład w domowej sieci Wi-Fi. RFC 1918 nadaje im znaczenie lokalne. Routery publicznego Internetu nie powinny przekazywać pakietów z tymi adresami jako globalnymi adresami źródłowymi lub docelowymi, dlatego do komunikacji poza siecią potrzebna jest translacja albo inny jawnie skonfigurowany mechanizm.

Bloki adresów zarezerwowane do użytku prywatnego (zdefiniowane w ) to:

  • 10.0.0.0 do 10.255.255.255 (10.0.0.0/8)
  • 172.16.0.0 do 172.31.255.255 (172.16.0.0/12)
  • 192.168.0.0 do 192.168.255.255 (192.168.0.0/16)

Publiczne Adresy IP

Adres publiczny: jest przydzielany w sposób zapewniający unikatowość w odpowiednim zakresie routingu i może być ogłaszany w Internecie. Zewnętrzny serwer widzi taki adres po translacji ruchu wychodzącego. Usługa osiągalna z zewnątrz może korzystać z publicznego adresu własnego urządzenia albo z adresu routera i przekierowania portu, dlatego nie każda usługa wymaga adresu bezpośrednio na hoście.

NAT tłumaczy adresy między interfejsem wewnętrznym i zewnętrznym. Zakres translacji, czas przechowywania wpisów oraz dopuszczany ruch wynikają z konfiguracji urządzenia i zastosowanego wariantu NAT.

Rodzaje Translacji Adresów Sieciowych

W praktyce wyróżnia się translację statyczną, dynamiczną oraz translację adresów i portów. Różnią się sposobem tworzenia wpisów oraz liczbą adresów publicznych potrzebnych do obsługi przepływów.

1. Statyczny NAT

Statyczny NAT tworzy stałe mapowanie jeden-do-jednego między prywatnym adresem IP a publicznym adresem IP. Wpis może obsługiwać ruch wychodzący i przychodzący, jeśli pozwalają na to reguły filtrowania.
Zakres zastosowania: Publikowanie wskazanego hosta lub usługi przez stały adres translacji.

Gdy pakiet pochodzi z urządzenia wewnętrznego, na przykład 192.168.1.50, router tłumaczy jego źródłowy adres na przypisany adres publiczny, na przykład 203.0.113.10. Ruch skierowany do 203.0.113.10 może zostać przetłumaczony do 192.168.1.50, jeśli istnieje odpowiedni wpis i reguła dostępu. Mechanizm stosuje się między innymi do publikowania serwera WWW lub poczty z adresem prywatnym. Nie zmniejsza zapotrzebowania na adresy w tej relacji, ponieważ każdy taki host wymaga osobnego adresu publicznego.

2. Dynamiczny NAT

Dynamiczny NAT mapuje pulę prywatnych adresów IP na pulę publicznych adresów IP. Urządzenie wybiera wolny adres z puli i utrzymuje mapowanie przez czas określony stanem sesji lub konfiguracją.
Przydział adresu: Wpis jest tworzony dla dostępnego elementu puli i zwalniany po zakończeniu użycia.

W tym modelu organizacja ma grupę urządzeń wewnętrznych i mniejszą grupę publicznych adresów IP. Gdy urządzenie wewnętrzne rozpoczyna ruch, router wybiera wolny adres z puli i tworzy tymczasowe mapowanie jeden-do-jednego. Wpis pozostaje w tablicy translacji do zakończenia sesji albo wygaśnięcia czasu bezczynności. Liczba równoczesnych mapowań jest ograniczona liczbą dostępnych adresów publicznych. Przy pustej puli nowe połączenie nie otrzyma mapowania.

3. Translacja Adresów Portów (PAT) / Przeciążanie NAT

PAT, czyli NAPT, pozwala wielu urządzeniom wewnętrznym współdzielić jeden publiczny adres IP.
Rozróżnianie przepływów: Router rozróżnia przepływy przez kombinację adresów oraz portów, a przy kolizji wybiera inny port z zakresu dostępnego dla translacji.

PAT, często nazywany przeciążaniem NAT (NAT Overload), wykorzystuje adresy IP oraz numery portów TCP lub UDP. Wpis przechowuje mapowanie potrzebne do skierowania odpowiedzi do właściwego hosta wewnętrznego. Port zewnętrzny jest elementem tego wpisu i pozwala rozróżnić równoczesne przepływy.

Szczegóły działania translacji adresów portów (PAT)

PAT wykorzystuje numery portów. Adres IP kieruje pakiet do urządzenia, a numer portu wskazuje proces lub usługę na tym urządzeniu. Zakres portu ma 16 bitów i obejmuje wartości 0-65535. Sesję rozróżnia się na podstawie adresu źródłowego i docelowego, portu źródłowego i docelowego oraz protokołu transportowego. Dwie sesje mogą używać tego samego portu źródłowego, jeśli różnią się pozostałymi elementami tego zestawu.

PAT wykorzystuje port zewnętrzny jako część mapowania widocznego w sieci publicznej. Tablica translacji pozwala odtworzyć adres i port hosta wewnętrznego dla pakietu powrotnego.

Przykład Działania PAT Krok po Kroku

Rozważmy dwa komputery w sieci domowej, które jednocześnie otwierają tę samą stronę internetową. Adresy i porty poniżej są przykładowymi wartościami wpisów PAT.

  • Publiczny IP Twojego Routera: 203.0.113.45
  • Prywatny IP Komputera A: 192.168.1.100
  • Prywatny IP Komputera B: 192.168.1.101
  • Publiczny IP serwera WWW: 198.51.100.10 (nasłuchujący na standardowym porcie web 443)
  1. Komputer A wysyła żądanie: Przeglądarka na Komputerze A chce połączyć się ze stroną. Tworzy pakiet. Adres źródłowy w pakiecie to 192.168.1.100 i wybiera losowy, wysoki port źródłowy, powiedzmy 12345. Celem jest 198.51.100.10:443.
  2. Router wykonuje PAT dla Komputera A: Pakiet dociera do routera brzegowego. Router rozpoznaje ruch wychodzący i wykonuje translację:
    • Zamienia prywatny adres IP źródła (192.168.1.100) na swój publiczny adres IP źródła (203.0.113.45).
    • Zamienia oryginalny port źródłowy (12345) na nowy, unikalny port publiczny ze swojego dostępnego zakresu, powiedzmy 61001.
    • Zapisuje tę translację w swojej tablicy NAT: 192.168.1.100:12345 → 203.0.113.45:61001.
    • Wysyła zmodyfikowany pakiet do internetu. Serwer WWW widzi żądanie przychodzące z 203.0.113.45:61001.
  3. Jednocześnie Komputer B wysyła żądanie: Twoje inne urządzenie również chce połączyć się z tą samą stroną. Tworzy pakiet ze źródłem 192.168.1.101 i wybiera inny losowy port, powiedzmy 54321. Cel to 198.51.100.10:443.
  4. Router wykonuje PAT dla Komputera B: Ten drugi pakiet również dociera do routera. Router wykonuje podobną translację:
    • Zamienia adres IP źródła 192.168.1.101 na ten sam publiczny IP 203.0.113.45.
    • Zamienia port źródłowy 54321 na inny unikalny port publiczny, np. 61002.
    • Dodaje drugi wpis do swojej tablicy NAT: 192.168.1.101:54321 → 203.0.113.45:61002.
    • Wysyła ten zmodyfikowany pakiet. Serwer widzi całkowicie oddzielne żądanie przychodzące z 203.0.113.45:61002.
  5. Podróż powrotna: Serwer WWW odpowiada. Wysyła jeden pakiet z odpowiedzią z powrotem do 203.0.113.45:61001 (dla Komputera A) i drugi do 203.0.113.45:61002 (dla Komputera B).
  6. Router Tłumaczy z Powrotem:
    • Gdy dociera pakiet przeznaczony na port 61001, router sprawdza swoją tabelę, znajduje wpis ... → 203.0.113.45:61001 i ustala, że należy on do 192.168.1.100:12345. Odwraca translację i przekazuje pakiet do Komputera A.
    • Gdy dociera pakiet na port 61002, znajduje drugi wpis i poprawnie przekazuje ten pakiet do Komputera B.

Mapowanie portów pozwala routerowi obsługiwać wiele jednoczesnych sesji urządzeń sieci lokalnej przy użyciu jednego publicznego adresu IP. Rzeczywista liczba wpisów zależy od zakresu portów, zasobów urządzenia i limitów konfiguracyjnych.

Zalety i ograniczenia NAT

NAT ogranicza zapotrzebowanie na publiczne adresy IPv4, lecz zmienia sposób, w jaki urządzenia są widoczne dla innych sieci.

Zalety

  • Ogranicza użycie adresów IPv4: PAT pozwala wielu urządzeniom współdzielić jeden publiczny adres IPv4, gdy router utrzymuje odrębne mapowania portów dla ich przepływów.
  • Ogranicza część ruchu inicjowanego z zewnątrz: W wielu implementacjach pakiet przychodzący bez pasującego wpisu stanu nie jest kierowany do hosta wewnętrznego. To zachowanie nie czyni z NAT zapory sieciowej. Filtrowanie wymaga osobnej polityki bezpieczeństwa.
  • Ułatwia zmianę adresacji wewnętrznej: Administrator może utrzymywać lokalny plan adresów niezależnie od adresu zewnętrznego. Zmiana adresu publicznego nie musi wymagać zmiany wszystkich adresów hostów prywatnych.

Wady

  • Zmienia model end-to-end: Zewnętrzny serwer widzi adres i port translacji zamiast adresu hosta prywatnego. Połączenie przychodzące wymaga istniejącego mapowania albo jawnego przekierowania portu.
  • Komplikuje działanie niektórych aplikacji: Aplikacje wymagające połączeń przychodzących, takie jak udostępnianie plików peer-to-peer (P2P), niektóre gry online i protokoły VoIP, mogą wymagać przekierowania portu, STUN, TURN albo innego mechanizmu przechodzenia przez NAT.
  • Narzut wydajnościowy: Modyfikowanie nagłówków IP i transportowych oraz wyszukiwanie wpisu stanu zużywa zasoby routera i może zwiększać opóźnienie. Wielkość narzutu zależy od sprzętu i liczby przepływów.
  • Ograniczona identyfikowalność: W logach zewnętrznej usługi wiele hostów może występować pod jednym adresem publicznym. Do rozróżnienia urządzeń potrzebne są logi mapowań z czasem i portem zewnętrznym.

Powiązane artykuły