Infrastruktura
NAT i prywatna adresacja IP
NAT jest rozwiązaniem stosowanym na styku sieci lokalnej z Internetem, rozwiązującym problem ograniczonej puli publicznych adresów IP. Często wąskim gardłem przy podłączaniu komputerów do Internetu jest ograniczona pula publicznych adresów IP. Problem ten można obejść, stosując NAT. Funkcje translacji adresów internetowych umożliwiają dostęp do Internetu wszystkim komputerom. Niezależnie, czy chcesz korzystać z NAT na routerze, komputerze PC lub serwerze, jego wdrożenie nie jest trudne.
Rosnąca liczba komputerów w firmach i gospodarstwach domowych, które coraz częściej mają połączenie z Internetem, sprawia, że przestrzeń adresowa (liczba dostępnych adresów IP) oferowana przez protokół IPv4 jest zbyt mała. Komputery w Internecie są adresowane przez protokół IP (Internet Protocol), przy czym każdy komputer ma własny, unikalny adres. Opracowany do tego celu format i protokół powstały jeszcze w latach siedemdziesiątych i otrzymały nazwę IPv4. Jednak wtedy nikt nie był w stanie przewidzieć, że Internet oplecie cały świat i stanie się tak popularny.
A przecież gwałtowny rozwój Internetu wciąż trwa i wcale nie ma się ku końcowi. Nawet telefony komórkowe zaczynają używać adresów IP, dając dostęp do Internetu z dowolnego miejsca. Także różne inne urządzenia elektroniczne korzystają z dostępu do sieci.
Z powodu ograniczeń narzucanych przez protokół IPv4 do dyspozycji jest 32-bitowa przestrzeń adresowa, która już od dawna przestała wystarczać. Firmy oferujące dostęp do Internetu umożliwiają korzystanie z globalnej sieci za pośrednictwem bramy adresów IP, ale jest to rozwiązanie o ograniczonych możliwościach i kosztowne. Co możesz zrobić, gdy w sieci lokalnej masz kilkanaście komputerów i tylko jeden publiczny adres IP do dyspozycji?
NAT jest standardem opracowanym przez IETF (Internet Engineering Task Force), umożliwiającym oddzielenie sieci lokalnej (prywatna przestrzeń adresowa) od Internetu. Gdy dane są wysyłane (transmisja wychodząca), z komputera do Internetu przekazywany jest adres bramy, niezależnie od adresu IP komputera, który komunikuje się z Internetem. W przypadku transmisji nadchodzącej z Internetu NAT zajmuje się przyporządkowaniem pakietów danych do właściwych komputerów mających lokalne adresy IP.
NAT jest szybkim i tanim rozwiązaniem, jeśli pula przydzielonych adresów IPv4 została już wyczerpana. NAT nie tylko redukuje liczbę potrzebnych adresów IP z publicznej przestrzeni adresowej, ale także odpowiada za bezpieczeństwo sieci lokalnej, ponieważ wszystkie komputery z sieci lokalnej korzystają z jednego, wspólnego, publicznego adresu IP. Wprawdzie NAT nie zastąpi zapory sieciowej (firewalla) czy serwera proxy, ale i tak zwiększa bezpieczeństwo sieci lokalnej.
Jak działa NAT?
NAT umożliwia komputerom podłączonym do sieci lokalnej wspólne korzystanie z jednego połączenia internetowego. Składa się z kilku komponentów, które zostały omówione w poniższej tabeli.
Tabela 1. Komponenty NAT
Komponent | Opis |
Translacja | Gdy komputer w sieci lokalnej komunikuje się z Internetem, wysyłane przez niego pakiety IP przechodzą przez komputer z włączonymi funkcjami NAT. Pakiety te zawierają źródłowe informacje adresowe: adres IP i numer portu TCP lub UDP komputera, z którego zostały wysłane. Gdy pakiety wychodzą przez bramkę NAT, informacje adresowe są modyfikowane tak, że pakiety wydają się pochodzić z samej bramki (ang. gateway) NAT. Gdy do bramki NAT nadchodzi odpowiedź, translacji poddawane są informacje adresowe tak, żeby pakiety trafiły do właściwego komputera w sieci lokalnej. |
Przydzielanie adresów IP | Bramka NAT udostępnia komputerom w sieci lokalnej konfigurację adresów IP. Jest to uproszczona wersja serwera DHCP, który przydziela adres IP, maskę podsieci, adresy bramy domyślnej oraz serwerów DNS. Komputery w sieci lokalnej musisz skonfigurować jako klientów DHCP, żeby automatycznie pobierały konfigurację IP. Standardowo konfiguracja TCP/IP systemu Windows umożliwia korzystanie z serwera DHCP. |
Zamiana adresów | Bramka NAT przejmuje rolę serwera DNS dla komputerów w sieci lokalnej. Gdy bramka NAT otrzyma żądanie zamiany adresu, przekaże je do odpowiedniego serwera DNS w Internecie, a następnie przekaże odpowiedź do komputera, z którego przyszło to żądanie. |
Dostęp do Internetu jest możliwy tylko poprzez adresy przydzielane przez InterNIC (Internet Network Information Center). Ponieważ te adresy mogą również odbierać dane nadchodzące z Internetu, są określane jako adresy publiczne. Dostawca usług internetowych (ISP) dysponuje pulą publicznych adresów IP, które przydziela swoim klientom.
Przy standardowej konfiguracji komputer musi mieć własny publiczny adres IP, jeśli użytkownik chce mieć dostęp do Internetu. Jak już wspomnieliśmy, liczba dostępnych publicznych adresów IP jest ograniczona.
Jako doraźne rozwiązanie problemu InternetNIC opracował system wielokrotnego wykorzystania adresów, polegający na zarezerwowaniu puli adresów IP do wykorzystania tylko w sieciach lokalnych.
Tabela 2. Zakresy adresów IP zarezerwowane dla sieci lokalnych
Zakres adresów | Maska podsieci |
10.0.0.0–10.255.255.255 | 255.0.0.0 |
172.16.0.0–172.31.255.255 | 255.240.0.0 |
192.168.0.0–92.168.255.255 | 255.255.0.0 |
Ponieważ adresy IP z zakresów sieci lokalnej nie pozwalają na komunikację z Internetem, muszą być tłumaczone na adresy publiczne. Translacją adresów IP zajmuje się NAT. Źródłowe dane adresowe wychodzących pakietów są przekładane przez NAT na adresy publiczne. Z kolei docelowe dane adresowe pakietów nadchodzących z Internetu – na adresy lokalne.
W sieciach lokalnych używa się adresów IP z zarezerwowanych zakresów, wymienionych w tabeli 2. Przykładowo, Twoja sieć może korzystać z zakresu 192.168.0.0–192.168.255.255. Oprócz tego zakresu masz przydzielony przez ISP publiczny adres IP, np. 83.31.15.15. Serwer NAT dokonuje translacji wszystkich adresów z zakresu 192.168.0.0–192.168.255.255 na publiczny adres 83.31.15.15. Gdy wiele komputerów z sieci lokalnej korzysta z jednego publicznego adresu IP, NAT używa dynamicznie przydzielanych portów TCP i UDP, aby rozróżnić komputery w sieci lokalnej.
Rysunek 1. Konfiguracja NAT obsługująca połączenie między siecią lokalną i Internetem
Przygotowanie sieci do korzystania z NAT
W małych sieciach zadania bramki NAT może przejąć jeden z komputerów PC. Do udanego skonfigurowania NAT potrzebujesz komputera, który będzie zajmować się translacją adresów. Komputer powinien być połączony z pozostałymi komputerami w sieci lokalnej oraz z Internetem. Dlatego musi mieć kartę sieciową łączącą go z siecią lokalną oraz urządzenie łączące go z Internetem, np. drugą kartę sieciową czy modem DSL.
Pierwszym etapem wdrożenia NAT w sieci lokalnej jest wybór i przygotowanie komputera, który będzie spełniał rolę bramki NAT. Mając gotowy komputer z NAT, możesz przystąpić do konfiguracji pozostałych komputerów. Musisz zmienić konfigurację protokołu TCP/IP, aby tym komputerom były przydzielane automatycznie adresy IP. Na koniec uruchom ponownie komputery.
Dla zakresu adresów 192.168.0.0–192.168.255.255 wprowadź poniższe wartości, jeśli komputery w sieci lokalnej mają mieć adresy IP przydzielane przez bramkę NAT:
adresy IP: 192.168.0.0–192.168.255.255,
maska podsieci: 255.255.255.0,
brama domyślna: adres IP lokalnego interfejsu sieciowego bramy NAT,
serwer DNS: adres IP lokalnego interfejsu sieciowego bramy NAT.
Jak uniknąć niektórych problemów?
NAT powinien działać bez zarzutów z komputerami klienckimi, które wspólnie używają jednego, globalnego adresu IP, jeśli klient inicjalizuje komunikację i otrzymuje odpowiedź przez ten sam port.
Jednak wiele aplikacji używa różnych portów, co może prowadzić do błędów z nawiązaniem połączeń przez serwer NAT. Poniższa tabela wymienia najczęstsze problemy i opisuje, jak sobie z nimi radzić.
Tabela 3. Najczęstsze problemy z NAT i rozwiązania
Problem | Opis/rozwiązanie |
Usługi w sieci lokalnej | Ręczne przydzielanie portów: wiele usług sieciowych i serwerów działa w ten sposób, że umożliwia nawiązywanie połączeń z nimi każdemu klientowi w Internecie, który zażąda tego na właściwym porcie. Jeśli w sieci komunikacja odbywa się poprzez serwer NAT, wykorzystuje on przydzielanie portów, żeby nadchodzące dane trafiały do właściwych komputerów w sieci lokalnej. Z tego względu usługi będą działać tylko dla klientów lokalnych, a dla wszystkich pozostałych w Internecie będą niedostępne. Najlepszym sposobem obejścia tego problemu jest ręczna konfiguracja przydzielania portów. W ten sposób NAT będzie prawidłowo przekazywał nadchodzące dane do konkretnego lokalnego adresu IP i właściwego numeru portu usługi. Gdy przydzielanie portów zostanie skonfigurowane, usługi będą mogły odbierać nadchodzące pakiety – w ten sposób usługi lokalne będą dostępne dla komputerów znajdujących się poza siecią. |
Zagnieżdżone adresy i numery portów | Pakiety są odrzucane: Aplikacje sieciowe działają według reguły, że traktują przydzielony klientowi adres IP i odpowiednie porty jako umożliwiające komunikację sieciową i mogą być używane bezpośrednio w Internecie. Jednak w sieciach lokalnych komputery mają adresy IP przydzielone z prywatnych zakresów, niewystępujących w Internecie. Aplikacje umieszczają ten prywatny adres IP i odpowiedni numer portu w pakietach wysyłanych do serwera. Jeśli serwer spróbuje wysłać klientowi odpowiedź na ten zagnieżdżony adres i numer portu, zamiast na adres i numer portu serwera NAT, pakiet zostanie odrzucony. Dzieje się tak dlatego, że prywatne adresy IP nie funkcjonują w Internecie. Rozwiązanie problemu jest możliwe tylko wtedy, gdy aplikacja rozpoznaje serwer NAT i można ją dostosować do umieszczania w pakietach zewnętrznego adresu IP i przydzielania portów. |
Aplikacje korzystające z różnych portów | Niektóre aplikacje wysyłają do serwera dane przez port X, a odpowiedzi oczekują na porcie Y. NAT widzi wychodzące pakiety i tworzy przydzielenie dla portu X, nie wiedząc, że przydzielenie dla pakietów nadchodzących musi dotyczyć portu Y. Pakiety zaadresowane do portu Y zostaną odrzucone. |
Wiele programów próbuje użyć jednego portu | Protokoły internetowe wymagają stale otwartego, umożliwiającego komunikację portu. Jeśli wiele komputerów używa jednego, publicznego adresu IP, tylko jeden z nich może używać danego numeru portu. Przykładowo, tylko jedna usługa sieciowa może używać lokalnie portu 80. W przeciwnym razie serwer NAT nie będzie wiedział, do którego komputera w sieci lokalnej przekazać pakiety przychodzące z zewnątrz. |
Większe bezpieczeństwo dzięki stosowaniu filtrowania pakietów
W sieciach z serwerem NAT możesz zastosować filtry do blokowania niechcianej transmisji danych. Windowsowa usługa RRAS oferuje filtry umożliwiające konfigurację serwera do kontroli nadchodzących i wychodzących pakietów danych.
Filtry pakietów przychodzących (inbound filters) i wychodzących (outbound filters) możesz utworzyć za pomocą konsoli RRAS. W tym celu przejdź w konsoli do węzła IP-Routing i kliknij NAT/Basic Firewall. Następnie otwórz okno ustawień połączenia lokalnego i kliknij, w zależności od potrzeb, przycisk Inbound Filters lub Outbound Filters. W oknie konfiguracji filtrów masz dwie opcje do wyboru:
Receive all packets except those that meet criteria below (wszystkie pakiety są przyjmowane, a odrzucane tylko pakiety spełniające zdefiniowane reguły);
Drop all packets except those that meet criteria below (wszystkie pakiety są odrzucane, a przyjmowane tylko pakiety spełniające zdefiniowane reguły).
Poniższa tabela przedstawia konfigurację filtrów pakietów przychodzących dla najważniejszych protokołów, usług i aplikacji.
Tabela 4. Konfiguracja filtrów pakietów przychodzących dla najważniejszych protokołów
Filtr dla | Opis | Wartości |
PPTP | Komputery w sieci lokalnej potrzebują nawiązywać połączenia z serwerami PPTP w Internecie. | Źródło 0.0.0.0 dla protokołu TCP, port źródłowy 1723Źródło 0.0.0.0 dla innych protokołów, port źródłowy 47 |
DNS | Serwery i komputery klienckie potrzebują dostępu do serwera DNS w Internecie. | Źródło 0.0.0.0 dla protokołu TCP, port źródłowy 53Źródło 0.0.0.0 dla protokołu UDP, port źródłowy 53 |
Dostęp do stron WWW | Komputery w sieci lokalnej potrzebują dostępu do stron WWW. | Źródło 0.0.0.0 dla protokołu TCP, port źródłowy 80 |
Dostęp do lokalnego serwera WWW | Na komputerze z NAT uruchamiasz serwer WWW i chcesz, aby był dostępny z Internetu. | Źródło 0.0.0.0 dla protokołu TCP, port docelowy 80 |
Dostęp do serwerów FTP | Komputery w sieci lokalnej potrzebują dostępu do serwerów FTP. | Źródło 0.0.0.0 dla protokołu TCP, port źródłowy 21Źródło 0.0.0.0 dla protokołu TCP, port źródłowy 20 |
Dostęp do lokalnego serwera FTP | Na komputerze z NAT uruchamiasz serwer FTP i chcesz, aby był dostępny z Internetu. | Źródło 0.0.0.0 dla protokołu TCP, port docelowy 21Źródło 0.0.0.0 dla protokołu TCP, port docelowy 20 |
POP3 | Uruchamiasz internetowy serwer pocztowy, do którego dostęp odbywa się z użyciem protokołu POP3. | Źródło 0.0.0.0 dla protokołu TCP, port docelowy 110 |
SMTP | Uruchamiasz internetowy serwer pocztowy, do którego dostęp odbywa się z użyciem protokołu SMTP. | Źródło 0.0.0.0 dla protokołu TCP, port docelowy 25Źródło 0.0.0.0 dla protokołu TCP, port źródłowy 25 |
Nigdy nie nawiązuj z siecią firmową połączenia PPTP z routera, na którym działa NAT. W ten sposób w Twojej sieci mogą się pojawić luki w bezpieczeństwie.
Dla funkcji Windows Update musisz zezwolić na komunikację przychodzącą i wychodzącą przez port TCP 80 oraz port UDP 53. W zależności od konfiguracji sieci filtry te musisz ustawić na serwerze NAT, zaporze sieciowej lub obu tych elementach sieciowych.