Nat (Network Address Translation)
Nat (ang. Network Address Translation) – technika stosowana w sieciach komputerowych umożliwiająca zmianę adresów źródłowych i docelowych w nagłówkach pakietów IP. Dzięki NAT wiele urządzeń może współdzielić jeden publiczny adres IPv4 lub IPv6, co zwiększa efektywność wykorzystania adresacji i poprawia bezpieczeństwo.
Definicja
Nat polega na dynamicznej lub statycznej konwersji prywatnych adresów IPv4 (np. 192.168.0.0/16) na adresy publiczne przychodzące i wychodzące z routera. Mechanizm ten jest realizowany najczęściej w bramach sieciowych, zaporiach ogniowych lub serwerach proxy.
Zastosowanie
- Udostępnianie połączenia internetowego wielu hostom w sieci lokalnej przy użyciu jednego publicznego adresu.
- Maskowanie wewnętrznej struktury sieci przed zewnętrznymi podmiotami, co zwiększa bezpieczeństwo.
- Umożliwienie jednoczesnego działania urządzeń z ograniczonym zakresem adresów, np. w IoT.
Rodzaje NAT
- Statyczny NAT (SNAT)
- Mapuje stały prywatny adres na stały publiczny adres. Stosowany w sytuacjach, gdy konieczna jest stała dostępność usług z zewnątrz.
- Dynamiczny NAT (DNAT)
- Przypisuje prywatnym adresom publiczne adresy z puli w momencie nawiązywania połączenia.
- Port Address Translation (PAT) – NAT z translacją portów
- Umożliwia wielu prywatnym hostom korzystanie z jednego publicznego adresu IP, różnicując połączenia na podstawie numerów portów.
- Masquerading
- Specjalny typ PAT, stosowany najczęściej w systemach Linux, automatycznie dopasowujący adresy i porty.
Historia
Pierwsze implementacje NAT pojawiły się w połowie lat 1990, kiedy to rosnące zapotrzebowanie na adresy IPv4 wymusiło potrzebę oszczędzania przydzielanej puli. W 1994 roku RFC 1631 opisało koncepcję NAT, a kolejne standardy, takie jak RFC 3022, uzupełniły jej specyfikację.
Problemy i ograniczenia
- Trudności w konfiguracji usług wymagających otwartych połączeń przychodzących, np. VoIP czy gry sieciowe.
- Potencjalne spowolnienie transmisji spowodowane dodatkową warstwą translacji.
- Kompatybilność z protokołami, które zawierają adresy w warstwie aplikacji (np. FTP).