NAT i PAT: jak router ukrywa Twoją sieć domową
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:
- inside local — prywatny adres hosta w Twojej sieci,
- inside global — publiczny adres, na jaki NAT go tłumaczy,
- inside / outside — role interfejsów routera:
ip nat insidepo stronie LAN,ip nat outsidepo stronie Internetu.
Trzy warianty NAT
- 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. - 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.
- 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:
- lista ACL wskazuje, które adresy wolno tłumaczyć (tutaj: cały LAN),
- role
ip nat inside/ip nat outsidemówią routerowi, po której stronie jest sieć tłumaczona, - końcówka
overloadto właśnie przełącznik PAT — bez niej router próbowałby tłumaczyć jeden-do-jednego i pula by się skończyła, no shutdownna interfejsie — bez tego cała reszta jest martwa.
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).
- Na R1 skonfiguruj interfejsy dokładnie jak w listingu wyżej:
192.168.1.1/24zip nat insidenaG0/0,203.0.113.1/24zip nat outsidenaG0/1, oba zno shutdown. - Serwerowi nadaj adres
203.0.113.2/24— bez bramy, bo router jest w jego sieci. PC:192.168.1.10/24, brama192.168.1.1. - Zanim dodasz NAT, spróbuj z PC:
ping 203.0.113.2. Nie przejdzie — serwer nie zna drogi powrotnej do192.168.1.0/24. - Dodaj ACL i polecenie
ip nat inside source list 1 interface gigabitEthernet 0/1 overload, po czym powtórz ping. Tym razem odpowiedzi wracają. - Wydaj na R1
show ip nat translations— zobaczysz wpis typuicmp 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 wpisytcp.
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.