Sieci komputerowe

NAT / PAT

NAT to translacja adresów i portów wykonywana podczas przechodzenia pakietu przez urządzenie sieciowe. Ten materiał rozdziela routing, NAT i firewall oraz pokazuje SNAT, DNAT, PAT, port forwarding i typową diagnostykę.

NATPATSNATDNATport forwarding

Routing

droga pakietu

NAT

translacja

PAT

porty

Firewall

filtracja

Network Address Translation

NAT - podstawy

NAT oznacza Network Address Translation. Mechanizm zmienia wybrane informacje adresowe w pakietach podczas przechodzenia przez urządzenie wykonujące translację. W odmianach takich jak PAT mogą być zmieniane również numery portów.

Najczęstszy scenariusz domowy lub biurowy jest prosty: wiele urządzeń z prywatnymi adresami IPv4 korzysta z jednego albo kilku publicznych adresów IPv4. Router może jednocześnie wykonywać routing, NAT i firewall, ale to nadal trzy różne funkcje.

RFC 1918

Private i public IPv4

Adresy prywatne RFC 1918 nie są globalnie routowane w publicznym Internecie. Mogą powtarzać się w wielu niezależnych sieciach LAN, dlatego przy wyjściu do Internetu często pojawia się NAT.

Tabela: Zakres, Typ, Uwagi
ZakresTypUwagi
10.0.0.0/8prywatny RFC 1918nie jest globalnie routowany w publicznym Internecie
172.16.0.0/12prywatny RFC 1918obejmuje zakres 172.16.0.0 - 172.31.255.255
192.168.0.0/16prywatny RFC 1918częsty zakres w sieciach domowych i laboratoryjnych

W przykładach publicznych używamy zakresów dokumentacyjnych, a nie przypadkowych rzeczywistych publicznych adresów IP.

Tabela: Zakres, Nazwa, Zastosowanie
ZakresNazwaZastosowanie
192.0.2.0/24TEST-NET-1adresy dokumentacyjne
198.51.100.0/24TEST-NET-2adresy dokumentacyjne
203.0.113.0/24TEST-NET-3adresy dokumentacyjne
01

Routing, NAT i firewall

Tabela: Funkcja, Co robi, Czego nie zakładać
FunkcjaCo robiCzego nie zakładać
Routingwybiera drogę pakietu do celunie musi zmieniać adresów IP
NATzmienia określone informacje adresowe lub portowedziała zgodnie z regułą translacji
Firewalldopuszcza albo blokuje ruchdecyzja wynika z reguł filtrowania

Routing wybiera drogę pakietu do celu. NAT zmienia określone informacje adresowe lub portowe zgodnie z regułą translacji. Firewall podejmuje decyzje o dopuszczeniu lub blokowaniu ruchu.

ROUTING ≠ NAT NAT ≠ FIREWALL
NAT, routing i firewall mogą działać na jednym urządzeniu, ale nie są tym samym mechanizmem.

Ważne rozróżnienie

Routing ≠ NAT

Przy zwykłym routingu pakiet może przejść z hosta 192.168.10.10 przez router do hosta 192.168.20.20, a destination IP pozostaje 192.168.20.20. Sam routing nie wymaga NAT.

W scenariuszu NAT host prywatny wysyła ruch przez urządzenie translacji, a na zewnątrz ruch może być reprezentowany przez publiczny adres NAT.

Bezpieczeństwo

NAT ≠ firewall

NAT odpowiada za translację adresów lub portów. Firewall odpowiada za filtrowanie ruchu zgodnie z regułami. Jedno urządzenie może wykonywać routing, NAT i firewall jednocześnie, ale nie należy przedstawiać NAT jako mechanizmu bezpieczeństwa równoważnego firewallowi.

02

Source NAT / SNAT

SNAT, czyli Source NAT, zmienia adres źródłowy dla ruchu wychodzącego. Host LAN 192.168.10.20 wysyła ruch do serwera 198.51.100.20, a urządzenie NAT może zastąpić source address publicznym adresem 203.0.113.5.

Tabela: Etap, Source, Destination
EtapSourceDestination
Przed NAT192.168.10.20198.51.100.20
Po NAT203.0.113.5198.51.100.20
SNAT zmienia informację źródłową ruchu wychodzącego; destination IP serwera pozostaje ten sam.

Stan NAT

Odpowiedź wraca przez tablicę translacji

Serwer 198.51.100.20 odpowiada do 203.0.113.5. Urządzenie NAT sprawdza stan lub tablicę translacji i przekazuje odpowiedź do 192.168.10.20. Musi więc wiedzieć, któremu hostowi wewnętrznemu odpowiada dana translacja.

03

Static NAT i Dynamic NAT

Tabela: Typ, Przykład, Znaczenie
TypPrzykładZnaczenie
Static NAT192.168.10.20 ↔ 203.0.113.20stałe mapowanie 1:1 dla konkretnego hosta lub usługi
Dynamic NAT192.168.10.0/24 → pula 203.0.113.10-203.0.113.14adres zewnętrzny jest wybierany z puli

Static NAT może realizować stałe mapowanie jednego adresu wewnętrznego na jeden adres zewnętrzny, np. dla określonego hosta lub usługi. Nie jest to jednak typowe rozwiązanie dla wszystkich klientów domowych.

Static NAT jest stałym mapowaniem, a Dynamic NAT korzysta z puli dostępnych adresów zewnętrznych.
04

PAT / NAT overload

PAT oznacza Port Address Translation i jest często nazywany NAT overload. Wiele hostów prywatnych może korzystać z jednego publicznego IPv4, ponieważ translacje są rozróżniane m.in. za pomocą portów oraz protokołu transportowego.

Tabela: Host, Inside local, Public mapping, Cel
HostInside localPublic mappingCel
Host A192.168.10.10:50000203.0.113.5:40001198.51.100.20:443
Host B192.168.10.20:50000203.0.113.5:40002198.51.100.20:443

Porty 40001 i 40002 są przykładowe. Nie są obowiązkowymi wartościami, tylko prostym sposobem pokazania, że dwa przepływy mogą używać tego samego publicznego adresu.

W PAT publiczny adres może być ten sam, a przepływy są rozróżniane m.in. portami i protokołem transportowym.
05

Tablica translacji NAT

Tabela: Inside local, Outside/public mapping, Destination
Inside localOutside/public mappingDestination
192.168.10.10:50000203.0.113.5:40001198.51.100.20:443
192.168.10.20:50000203.0.113.5:40002198.51.100.20:443
192.168.10.50:51500203.0.113.5:40010198.51.100.20:443

Nazewnictwo kolumn różni się między producentami i systemami. Ważna jest sama idea: urządzenie NAT zapamiętuje powiązanie między hostem wewnętrznym, mapowaniem zewnętrznym i ruchem do celu.

Tablica translacji pozwala dopasować ruch powrotny do właściwego hosta wewnętrznego.
06

Port forwarding / DNAT

DNAT, czyli Destination NAT, może zmieniać destination address dla ruchu przychodzącego. Typowy port forwarding kieruje ruch z 203.0.113.5:443 do wewnętrznego serwera 192.168.10.50:443.

Samo utworzenie DNAT albo port forwarding nie oznacza uniwersalnie, że firewall przepuści ruch. W zależności od urządzenia lub systemu mogą być potrzebne również odpowiednie reguły filtrowania.

Port forwarding jest typowym zastosowaniem DNAT dla ruchu przychodzącego.
07

Pełna droga pakietu przez PAT

  1. 1. Host tworzy pakiet: src 192.168.10.10:51500, dst 198.51.100.20:443.
  2. 2. Router wybiera trasę do sieci zewnętrznej.
  3. 3. NAT/PAT tworzy translację na 203.0.113.5:40010.
  4. 4. Internet widzi src 203.0.113.5:40010 i dst 198.51.100.20:443.
  5. 5. Serwer WWW odpowiada do 203.0.113.5:40010.
  6. 6. Urządzenie NAT znajduje wpis translacji.
  7. 7. Odpowiedź wraca do 192.168.10.10:51500.
Host LAN: 192.168.10.10:51500 Gateway/NAT: 192.168.10.1 Public NAT: 203.0.113.5 Serwer WWW: 198.51.100.20:443
Warto rozdzielić decyzję routingu od translacji NAT/PAT wykonywanej po drodze.

Szczegół techniczny

Dla zainteresowanych: checksumy

Zmiana adresów IP lub portów może wymagać aktualizacji odpowiednich sum kontrolnych. Nie rozwijamy tutaj matematyki checksum, ale warto pamiętać, że NAT nie jest prostą podmianą tekstu w pakiecie.

Rozszerzenie

Dla zainteresowanych: IPv6 i CGNAT

NAT jest bardzo silnie kojarzony z IPv4. IPv6 został zaprojektowany z ogromną przestrzenią adresową i nie wymaga NAT44 jako sposobu oszczędzania publicznych adresów IPv4. Istnieją różne mechanizmy translacji związane z IPv6, ale są poza zakresem tego podstawowego materiału.

CGNAT, czyli Carrier-Grade NAT, oznacza, że operator może współdzielić publiczny IPv4 między wielu klientów. Może to utrudniać bezpośrednie połączenia przychodzące, hosting usług w domu i klasyczne port forwarding po stronie klienta.

Typowy kłopot

Double NAT

Double NAT może wyglądać tak: LAN → własny router NAT → router operatora NAT → Internet. Taki układ może komplikować przekierowanie portów, gry, VPN i połączenia przychodzące, ale nie oznacza automatycznie, że sieć zawsze przestaje działać.

Narzędzia

Diagnostyka NAT/PAT

Tabela: Windows, Zastosowanie
WindowsZastosowanie
ipconfigadres, maska, gateway i DNS klienta
route printlokalna tablica routingu
tracertkolejne hopy na drodze do celu
nslookuppodstawowa diagnostyka DNS
Tabela: Linux, Zastosowanie
LinuxZastosowanie
ip address showadresy i stan interfejsów
ip route showrouting hosta
sprawdź publiczny adres przez zaufaną usługę zewnętrznąwymaga Internetu i działającej usługi zewnętrznej
curl ifconfig.metylko przykład zapytania HTTP do zewnętrznej usługi, nie jedyna metoda

Sprawdzenie publicznego adresu przez usługę zewnętrzną jest tylko jednym z testów. Wymaga dostępu do Internetu i działającej usługi zewnętrznej, więc nie powinno być jedynym źródłem diagnozy.

Troubleshooting

Najczęstsze problemy NAT/PAT

  • - brak reguły NAT
  • - zła sieć źródłowa
  • - błędny interfejs
  • - brak routingu
  • - brak trasy powrotnej
  • - firewall blokuje ruch
  • - błędny port forwarding
  • - konflikt portów
  • - serwer nie nasłuchuje na wskazanym porcie
  • - CGNAT operatora
  • - double NAT

Praktyka

Scenariusz diagnostyczny

Host 192.168.10.20 ma gateway 192.168.10.1, ale Internet nie działa. Problem NAT może wyglądać podobnie do problemu routingu albo firewalla, więc testuj warstwowo.

Tabela: Krok, Co sprawdzić
KrokCo sprawdzić
1sprawdź adres i maskę hosta 192.168.10.20
2sprawdź gateway 192.168.10.1
3wykonaj ping do gateway
4sprawdź routing hosta
5sprawdź osiągalność zewnętrznego adresu IP
6sprawdź DNS
7sprawdź NAT i firewall na routerze

Ćwiczenia

Sprawdź samodzielnie

Odpowiedzi ukryte

Najpierw wykonaj obliczenia samodzielnie. Odpowiedzi rozwiń dopiero wtedy, gdy masz własny wynik.

Zadanie 1łatwyKtóry adres jest prywatny: 192.168.10.20, 198.51.100.20 czy 203.0.113.5?
Sprawdź odpowiedź: 192.168.10.20 jest adresem prywatnym RFC 1918. Pozostałe dwa adresy są zakresami dokumentacyjnymi używanymi w przykładach.
Zadanie 2łatwyWyjaśnij różnicę routing vs NAT jednym zdaniem.
Sprawdź odpowiedź: Routing wybiera drogę pakietu, a NAT zmienia wybrane informacje adresowe lub portowe.
Zadanie 3średniCo zmienia SNAT w przykładzie 192.168.10.20 → 198.51.100.20?
Sprawdź odpowiedź: SNAT zmienia adres źródłowy, np. 192.168.10.20 na 203.0.113.5, a destination IP serwera pozostaje 198.51.100.20.
Zadanie 4średniCo zmienia DNAT w przykładzie 203.0.113.5:443 → 192.168.10.50:443?
Sprawdź odpowiedź: DNAT zmienia informację docelową dla ruchu przychodzącego, kierując go do hosta wewnętrznego.
Zadanie 5łatwyCzym różni się Static NAT od Dynamic NAT?
Sprawdź odpowiedź: Static NAT to stałe mapowanie 1:1, a Dynamic NAT wybiera adres z dostępnej puli.
Zadanie 6średniDlaczego PAT może obsługiwać wielu hostów przez jeden publiczny IPv4?
Sprawdź odpowiedź: PAT rozróżnia przepływy m.in. przy pomocy portów i protokołu transportowego.
Zadanie 7średniZinterpretuj wpis: 192.168.10.10:50000 → 203.0.113.5:40001 → 198.51.100.20:443.
Sprawdź odpowiedź: Połączenie hosta wewnętrznego zostało przetłumaczone na publiczny adres NAT z przykładowym portem zewnętrznym 40001.
Zadanie 8średniDopasuj odpowiedź serwera do klienta, gdy odpowiedź wraca na 203.0.113.5:40002.
Sprawdź odpowiedź: Urządzenie NAT sprawdza tablicę translacji i kieruje odpowiedź do hosta, który ma wpis z portem publicznym 40002.
Zadanie 9średniZaprojektuj port forwarding dla 203.0.113.5:443 → 192.168.10.50:443.
Sprawdź odpowiedź: Reguła DNAT powinna kierować ruch przychodzący na 203.0.113.5:443 do wewnętrznego serwera 192.168.10.50:443; osobno trzeba uwzględnić reguły firewalla.
Zadanie 10trudniejszyWyjaśnij, dlaczego double NAT albo CGNAT może utrudnić połączenia przychodzące.
Sprawdź odpowiedź: Ruch przychodzący musi przejść przez dodatkową warstwę translacji, często poza kontrolą użytkownika, co komplikuje port forwarding i bezpośrednie połączenia.

Pytania kontrolne

Zatrzymaj się i odpowiedz

  1. 1Czym jest NAT?
  2. 2Czym NAT różni się od routingu?
  3. 3Czym NAT różni się od firewalla?
  4. 4Czym jest SNAT?
  5. 5Czym jest DNAT?
  6. 6Czym jest PAT?
  7. 7Po co PAT używa portów?
  8. 8Czym jest port forwarding?