{ }
menu zespół linki Logowanie
Stabilny hosting
BSDGuru zawdzięcza
firmie Datanet.pl
Hosting BSDGuru.org - DataNet.pl

Sieciowe tłumaczenie adresów NAT


Autor: Chern Lee.

Wstęp

Demon tłumaczenia adresów sieciowych (ang. Network Address Translation), znany potocznie jako natd(8), akceptuje przychodzące, nie przetworzone pakiety IP, zmienia ich źródło na to maszyny lokalnej i wypuszcza te pakiety z powrotem do wychodzącego strumienia pakietów IP. natd dokonuje tego poprzez zmianę adresu źródłowego IP oraz portu, ponadto w drodze powrotnej potrafi określić pierwotną lokalizację danych i przesłać je z powrotem do odpowiedniego źródła.

Najpowszechniejszym sposobem użycia NAT jest udostępnianie połączenia internetowego.

Ustawienia

Za sprawą ograniczonej ilości IP w wersji czwartej, wciąż wzrastającej liczby użytkowników na szybkich liniach, takich jak na przykład połączenie kablowe lub DSL, wciąż rośnie zapotrzebowanie na rozwiązanie udostępniania połączenia internetowego. Zdolność połączenia wielu komputerów do sieci Internet przez jeden IP publiczny sprawia, że natd(8) jest obecnie w częstym użyciu.

Często bywa, że użytkownik posiada komputer z połączeniem kablowym lub linią DSL z jednym adresem IP, a chciałby udostępnić dostęp do sieci kilku innym maszynom z sieci lokalnej.

Aby tego dokonać, komputer z FreeBSD połączony do Internetu odgrywa rolę bramy. Maszyna ta musi mieć dwie karty sieciowe - jedną dla połączenia z routerem, drugą z siecią lokalną. Wszystkie komputery w sieci wewnętrznej połączone są koncentratorem (hub'em) lub switch'em.

Konfiguracja tego typu jest bardzo powszechna w przypadku współdzielenia połączenia internetowego. Jedna z maszyn z sieci wewnętrznej jest połączona z Internetem. Pozostałe uzyskują dostęp poprzez ten komputer bramę.

Konfiguracja

Poniższe opcje muszą znaleźć się w pliku konfiguracyjnym jądra:

     options IPFIREWALL
     options IPDIVERT

Dodatkowo można zdecydować się na opcje:

     options IPFIREWALL_DEFAULT_TO_ACCEPT
     options IPFIREWALL_VERBOSE

Poniższe należy dopisać do /etc/rc.conf:

     gateway_enable="YES"
     firewall_enable="YES"
     firewall_type="OPEN"
     natd_enable="YES"
     natd_interface="fxp0"
     natd_flags=""
gateway_enable="YES" Ustawia maszynę jako bramę.
Wykonanie komendy sysctl -w net.inet.ip.forwarding=1 da ten sam efekt.
firewall_enable="YES" Uruchamia zasady ściany ognia z /etc/rc.firewall podczas startu
systemu.
firewall_type="OPEN" Określa ustalony zestaw zasad, który zezwala na przesyłanie wszystkich
pakietów przychodzących. Aby zapoznać się pozostałymi zestawami zasad
zobacz /etc/rc.firewall.
natd_interface="fxp0" Określa przez który interfejs przepuszczać pakiety
(urządzenie połączone do Internetu).
natd_flags="" Pozostałe dodatkowe opcje natd(8) egzekwowane podczas startu systemu.

Zdefiniowanie powyższych opcji w /etc/rc.conf uruchomi natd -interface fxp0 podczas startu systemu. Można to również zrobić ręcznie.

Każdy komputer i interfejs za siecią lokalną powinien mieć przypisany adres IP z puli adresów prywatnych, tak jak zdefiniowano to w dokumencie RFC 1918. Ponadto musi mieć ustawiony adres IP domyślnej bramy taki, jaki ma karta sieciowa komputera połączonego z Internetem po stronie sieci lokalnej.

Na przykład klienci a i b w sieci lokalnej mają adresy IP 192.168.0.2 i 192.168.0.3, podczas gdy karta sieciowa maszyny z natd, po stronie lokalnej, ma adres 192.168.0.1. Domyślna brama klienta a i b musi być ustawiona na ten adres maszyny z natd występujący po stronie sieci lokalnej, czyli 192.168.0.1. Zewnętrzny adres komputera z połączeniem internetowym nie wymaga żadnych zmian do działania natd.

Przekierowywanie portów

Wadą natd jest, że klienci z sieci lokalnej nie są bezpośrednio osiągalni z Internetu. Mogą oni ustanawiać połączenia wychodzące na świat, ale nie mogą otrzymywać przychodzących. Jest to przeszkodą, kiedy zachodzi potrzeba uruchomienia usług internetowych na maszynach z wewnątrz sieci lokalnej. Najprostszym rozwiązaniem jest przekierowanie wybranych portów maszyny z natd do maszyn klientów z sieci lokalnej.

Przykładowo serwer IRC'a jest uruchomiony na maszynie Klient A, natomiast serwer www na Klient B. Aby konfiguracja ta zadziałała, należy połączenia przychodzące na porty 6667 (irc) i 80 (www) przekierować do odpowiednich maszyn.

Do natd(8) należy dołączyć -redirect_port wraz z odpowiednimi opcjami. Składnia jest następująca:

-redirect_port proto docelowyIP:docelowyPORT[-docelowyPORT]
       [aliasIP:]aliasPORT[-aliasPORT]
       [zdalnyIP[:zdalnyPORT[-zdalnyPORT]]]

W powyższym przykładzie, argumenty powinny wyglądać w następujący sposób:

         -redirect_port tcp 192.168.0.2:6667 6667
         -redirect_port tcp 192.168.0.3:80 80

Przekieruje to odpowiednie porty tcp do komputerów w sieci lokalnej.

Argument -redirect_port może zostać użyty do określenia zakresów portów. Na przykład tcp 192.168.0.2:2000-3000 2000-3000 przekieruje wszystkie połączenia otrzymane na porty od 2000 do 3000 do klienta A na jego porty od 2000 do 3000.

Opcje te mogą zostać użyte, gdy natd(8) uruchamiany jest bezpośrednio, albo jeśli w pliku /etc/rc.conf znajduje się wpis

     natd_flags=""

Aby zasięgnąć dodatkowych informacji w tym temacie należy zapoznać się z
podręcznikiem systemowym dotyczącym natd(8).

Przekierowanie adresów

Przekierowanie adresów jest użyteczne jeśli do dyspozycji na jednej maszynie jest kilka adresów IP. W tym przypadku natd(8) może przypożądkować każdej maszynie z sieci lokalnej zewnętrzny adres IP.
natd(8) przepisuje wychodzące pakiety od klientów sieci lokalnej z odpowiednimi zewnętrznymi adresami IP i przekierowuje cały ruch przychodzący na dany adres IP z powrotem do odpowiedniego klienta sieci lokalnej.

Zagadnienie to często określane jest mianem "Statyczny NAT". Przykładowo, adresy IP 128.1.1.1, 128.1.1.2 oraz 129.1.1.3 należą do bramy natd. 128.1.1.1 może być użyty jako zewnętrzny adres komputera z natd podczas, gdy 192.1.1.2 i 128.1.1.3 są przesyłane do klientów A i B sieci lokalnej.

Składnia -redirect_address jest następująca:

   -redirect_address lokalnyIP publicznyIP

lokalnyIP - Wewnętrzny adres IP klienta z sieci lokalnej.

publicznyIP - Zewnętrzny adres IP odpowiadający klientowi z sieci lokalnej.

Zgodnie z przykładem argumenty powinny wyglądać następująco:

-redirect_address 192.168.0.2 128.1.1.2 -redirect_address \
192.168.0.3 128.1.1.3

Podobnie jak -redirect_port, argumenty te dołącza się do natd_flags w /etc/rc.conf. Z przekierowaniem adresów nie ma potrzeby przekierowywania portów, ponieważ wszystkie dane otrzymane na określony adres IP są przekierowane.

Zewnętrzny adres IP maszyny z natd musi być aktywny i aliasowany do zewnętrznego interfejsu. Informacje na ten temat znajdują się w rc.conf(5).

Id: Aleksander Fafuła  2003-06-19 

mlodszy, pt., 18/07/2008 - 22:43