Duxo Academy
Blog ›

NAT i PAT: jak router ukrywa Twoją sieć domową

· 4 min czytania

A mimo to wszystkie naraz przeglądają Internet, który widzi jeden publiczny adres. Robi to NAT (Network Address Translation, tłumaczenie adresów) — mechanizm, który musisz znać na CCNA, a przy okazji zrozumiesz, co dzieje się we własnym routerze Wi-Fi. W tym artykule: skąd biorą się prywatne adresy, jak router je „tłumaczy”, jak skonfigurować najpopularniejszy wariant — PAT (Port Address Translation) — na Cisco i jak sprawdzić, że działa.

Dlaczego w ogóle trzeba coś tłumaczyć

Adresy publiczne IPv4 dawno się skończyły, więc sieci lokalne dostają za darmo adresy prywatne (zakresy RFC 1918):

Zakres Maska
10.0.0.0 – 10.255.255.255 /8
172.16.0.0 – 172.31.255.255 /12
192.168.0.0 – 192.168.255.255 /16

Problem w tym, że pakiety z takimi adresami nie są routowalne w Internecie — operator je po prostu odrzuci. Zadaniem NAT (Network Address Translation, tłumaczenie adresów) jest przepisanie adresu w nagłówku IP: host w LAN-ie wysyła pakiet z adresem prywatnym, router brzegowy zamienia go na swój adres publiczny, a gdy przyjdzie odpowiedź — odtwarza adres pierwotny i oddaje pakiet właściwemu hostowi.

W terminologii, która wraca na egzaminie:

Trzy warianty NAT

  1. NAT statyczny — stałe parowanie jeden do jednego. Klasyczne zastosowanie: serwer w LAN-ie, który ma być widoczny z zewnątrz pod konkretnym adresem publicznym: ip nat inside source static 192.168.1.10 203.0.113.5.
  2. NAT dynamiczny — pula adresów publicznych przydzielanych na żądanie; jeden publiczny adres obsługuje jednego hosta naraz. Rzadko spotykany, bo nie oszczędza wielu adresów.
  3. PAT (Port Address Translation), w nomenklaturze Cisco NAT overload — wszyscy hostowie LAN-u wychodzą przez jeden adres publiczny, a router rozróżnia ich po portach TCP/UDP. To wariant, który działa w praktycznie każdym domowym routerze — i najczęściej pada na egzaminie.

Jak PAT rozróżnia hosty po portach

Gdy laptop 192.168.1.10 otwiera stronę z portu źródłowego 49152, router zapisuje w swojej tabeli translacji parę: 192.168.1.10:49152 ↔ 203.0.113.1:49152 i wysyła pakiet dalej. Gdy kolejny host wybierze akurat ten sam port źródłowy, router po prostu przydziela inny port zewnętrzny — liczy się jednoznaczność pary adres:port.

Gdy przychodzi pakiet powrotny, router zagląda do tabeli, znajduje wpis po porcie docelowym i wie, komu w LAN-ie oddać dane. To dlatego połączenie musi zostać zainicjowane od środka: z zewnątrz nikt nie „dzwoni” do hosta za NAT-em, bo dla niego nie ma jeszcze wpisu w tabeli. Efekt uboczny bywa pożądany — niechciany ruch przychodzący sam odpada. Ale uwaga: NAT to nie jest firewall; poważną ochronę robi dopiero lista ACL (lista kontroli dostępu) na interfejsie zewnętrznym.

Konfiguracja PAT krok po kroku

Topologia: LAN 192.168.1.0/24 wpięty w GigabitEthernet0/0, Internet w GigabitEthernet0/1.

access-list 1 permit 192.168.1.0 0.0.0.255 ! interface gigabitEthernet 0/0 ip address 192.168.1.1 255.255.255.0 ip nat inside no shutdown ! interface gigabitEthernet 0/1 ip address 203.0.113.1 255.255.255.0 ip nat outside no shutdown ! ip nat inside source list 1 interface gigabitEthernet 0/1 overload

Kolejność ma znaczenie i każdy element jest potrzebny:

Weryfikacja dwoma poleceniami:

show ip nat translations show ip nat statistics

Pierwsze pokazuje tabelę translacji: po jednej linii na każde aktywne tłumaczenie, z lokalną i globalną parą adres:port. Drugie podsumowuje liczbę tłumaczeń i trafień — przydatne, gdy coś nie działa i szukasz, czy router w ogóle próbuje tłumaczyć.

Ćwiczenie: zobacz tabelę translacji na żywo

W Cisco Packet Tracerze zbuduj lab: PC → switch → R1, a z drugiej strony R1 → serwer (symuluje Internet).

  1. Na R1 skonfiguruj interfejsy dokładnie jak w listingu wyżej: 192.168.1.1/24 z ip nat inside na G0/0, 203.0.113.1/24 z ip nat outside na G0/1, oba z no shutdown.
  2. Serwerowi nadaj adres 203.0.113.2/24 — bez bramy, bo router jest w jego sieci. PC: 192.168.1.10/24, brama 192.168.1.1.
  3. Zanim dodasz NAT, spróbuj z PC: ping 203.0.113.2. Nie przejdzie — serwer nie zna drogi powrotnej do 192.168.1.0/24.
  4. Dodaj ACL i polecenie ip nat inside source list 1 interface gigabitEthernet 0/1 overload, po czym powtórz ping. Tym razem odpowiedzi wracają.
  5. Wydaj na R1 show ip nat translations — zobaczysz wpis typu icmp 192.168.1.10:1 203.0.113.1:1 203.0.113.2:1, a po dodaniu przeglądarki na PC i wejściu na serwer także wpisy tcp.

Na koniec rada z praktyki: przy problemach typu „Internet działa, ale nie mogę udostępnić usługi" zacznij właśnie od show ip nat translations i kierunku inicjacji. Jeśli tabela jest pusta, router w ogóle nie tłumaczy; jeśli ma wpisy tylko wychodzące — to normalna praca PAT, a ruch przychodzący trzeba świadomie wpuścić NAT-em statycznym albo ACL-em.