Co to jest translacja adresów sieciowych?

Translacja adresów sieciowych (NAT) to proces, w którym urządzenie sieciowe, zwykle zapora ogniowa, przypisuje publiczny adres do komputera (lub grupy komputerów) w sieci prywatnej. Głównym zastosowaniem NAT jest ograniczenie liczby publicznych adresów IP, z których musi korzystać organizacja lub firma, zarówno ze względów ekonomicznych, jak i bezpieczeństwa.

Najczęstszą formą translacji sieci jest duża sieć prywatna wykorzystująca adresy z prywatnego zakresu (10.0.0.0 do 10.255.255.255, 172.16.0.0 do 172.31.255.255 lub 192.168.0 0 do 192.168.255.255). Prywatny schemat adresowania sprawdza się w przypadku komputerów, które muszą mieć dostęp tylko do zasobów wewnątrz sieci, takich jak stacje robocze potrzebujące dostępu do serwerów plików i drukarek. Routery wewnątrz sieci prywatnej mogą bez problemu kierować ruch pomiędzy adresami prywatnymi. Jednakże, aby uzyskać dostęp do zasobów poza siecią, takich jak Internet, komputery te muszą posiadać adres publiczny, aby odpowiedzi na ich żądania mogły do nich powrócić. W tym miejscu do gry wkracza NAT.

Żądania internetowe wymagające translacji adresów sieciowych (NAT) są dość złożone, ale zachodzą tak szybko, że użytkownik końcowy rzadko wie o ich wystąpieniu. Stacja robocza wewnątrz sieci wysyła żądanie do komputera w Internecie. Routery wewnątrz sieci rozpoznają, że żądanie nie dotyczy zasobu znajdującego się wewnątrz sieci, więc wysyłają żądanie do zapory sieciowej. Zapora widzi żądanie od komputera o wewnętrznym adresie IP. Następnie kieruje to samo żądanie do Internetu, używając własnego adresu publicznego, i zwraca odpowiedź z zasobu internetowego do komputera wewnątrz sieci prywatnej. Z punktu widzenia zasobu w Internecie, wysyła on informacje na adres zapory. Z perspektywy stacji roboczej wygląda na to, że komunikacja odbywa się bezpośrednio z witryną w Internecie. Gdy NAT jest wykorzystywany w ten sposób, wszyscy użytkownicy wewnątrz sieci prywatnej mają ten sam publiczny adres IP, gdy korzystają z Internetu. Oznacza to, że potrzebny jest tylko jeden adres publiczny dla setek, a nawet tysięcy użytkowników.

Większość nowoczesnych zapór sieciowych jest stateful – to znaczy, że są w stanie skonfigurować połączenie między wewnętrzną stacją roboczą a zasobem internetowym. Mogą one śledzić szczegóły połączenia, takie jak porty, kolejność pakietów i adresy IP biorące udział w połączeniu. Nazywa się to śledzeniem stanu połączenia. W ten sposób są w stanie śledzić sesję złożoną z komunikacji między stacją roboczą a zaporą oraz między zaporą a Internetem. Gdy sesja się kończy, zapora odrzuca wszystkie informacje o połączeniu.

Są inne zastosowania translacji adresów sieciowych (NAT) niż tylko umożliwienie dostępu do Internetu stacjom roboczym z wewnętrznymi adresami IP. W dużych sieciach niektóre serwery mogą działać jako serwery WWW i wymagać dostępu z Internetu. Serwery te mają przypisane publiczne adresy IP na zaporze sieciowej, co umożliwia publiczny dostęp do serwerów tylko za pośrednictwem tego adresu IP. Jednakże, jako dodatkowa warstwa bezpieczeństwa, firewall działa jako pośrednik między światem zewnętrznym a chronioną siecią wewnętrzną. Można dodawać dodatkowe reguły, w tym określać, które porty mogą być dostępne pod danym adresem IP. Wykorzystanie NAT w ten sposób pozwala inżynierom sieciowym na bardziej efektywne kierowanie ruchu w sieci wewnętrznej do tych samych zasobów i zezwalanie na dostęp do większej liczby portów, przy jednoczesnym ograniczeniu dostępu na firewallu. Pozwala również na szczegółowe rejestrowanie komunikacji pomiędzy siecią a światem zewnętrznym.

Dodatkowo, NAT może być również wykorzystany do umożliwienia selektywnego dostępu na zewnątrz sieci. Stacjom roboczym lub innym komputerom wymagającym specjalnego dostępu poza siecią można przydzielić określone zewnętrzne adresy IP za pomocą NAT, umożliwiając im komunikację z komputerami i aplikacjami, które wymagają unikalnego publicznego adresu IP. Również w tym przypadku firewall pełni rolę pośrednika i może kontrolować sesję w obu kierunkach, ograniczając dostęp do portów i protokołów.