TwojePC.pl © 2001 - 2024
|
|
A R C H I W A L N A W I A D O M O Ś Ć |
|
|
|
Techniki NAT , Chicken81 25/02/04 20:08 Witam, mam problem bo musze przygotować ćwiczenie a właściwie zarys na początek na temat technik NAT. Wiem co to jest NAT ale nie wiem za bardzo co miałbym osiągnąć i co jest najistotniejsze do pokazania w tym ćwiczeniu. HELP!!!"Tylko dwie rzeczy są nieskończone -
wszechświat i ludzka głupota...." -
A.Einstein - wycinalem fragmenty z jakiegos tekstu wiec nie wiem czy bedzie OK... , KwiateK 25/02/04 20:19
2.1 Co to jest Translacja Adresów Sieciowych (NAT)?
Zwykle, pakiety podróżują od źródła (takiego jak twój komputer) do swojego przeznaczenia (takiego jak www.gnumonks.org) przez wiele różnych połączeń: około 19 stąd gdzie jestem, w Australii. Żaden z tych węzłów nie zmienia twojego pakietu: po prostu przesyła go dalej.
Jeśli jeden z tych węzłów miałby wykonać NAT, zmieniłby adres źródłowy lub przeznaczenia w trakcie jak pakiet przechodziłby przez niego. Jak sobie pewnie wyobrażasz, nie jest to sposób w jaki system miał działać, i w związku z tym używanie NAT jest zawsze trochę ryzykowne. Zwykle węzeł który wykonuje NAT zapamięta sposób w jaki zmienił pakiet i kiedy nadejdzie odpowiedź na niego, wykona odwrotne czynności tak, by wszystko działało.
2.2 Po co miałbym stosować NAT?
W idealnym świecie, nie byłoby powodu. Ale, głównymi powodami są:
Modemowe połączenie do Internetu
Większość ISP (dostawców internetowych) daje ci jeden IP gdy się do nich wdzwaniasz. Możesz wysyłać pakiety z dowolnym adresem źródłowym, ale tylko odpowiedzi przeznaczone do tego konkretnego IP który został Ci przydzielony dotrą z powrotem do Ciebie. Jeśli chcesz używać wielu komputerów (jeśli posiadasz na przykład sieć w domu) i zapewnić im dostęp do Internetu, będziesz potrzebował NAT.
Aktualnie jest to najczęstsze zastosowanie NAT, znane pod nazwą 'masquerading' w świecie linuksa. Nazywam to SNAT, ponieważ zmieniasz adres źródłowy pierwszego pakietu (Source-NAT, czyli Źródłowa Translacja Adresów - przypomnienie tłum.).
Wiele serwerów
Czasami chcesz zmienić sposób w jaki pakiety rozprowadzane są w twojej sieci. Zwykle dzieje się tak ponieważ masz jeden adres IP, ale chciałbyś by ludzie mogli się dostać do maszyn w środku sieci tak jakby miały 'prawdziwe' adresy IP. Jeśli zmienisz adres przeznaczenia przychodzących pakietów, możesz to osiągnąć. Ten typ NAT nazywany był w dotychczasowych wersjach Linuksa przekazywaniem portów (ang. port-forwarding).
Najczęstszym rodzajem tego sposobu jest rozkładanie obciążenia (ang. load-sharing), mapowanie wskazuje wtedy na listę maszyn które dzielą się nadchodzącymi wywołaniami. Jeśli zamierzasz robić coś takiego na poważnie, warto zajrzeć pod adres linuksowego serwera wirtualnego.
Transparentne Proxy
Czasami chcesz udawać że każdy pakiet który przechodzi przez twój komputer z Linuksem, przeznaczony jest do jakiejś aplikacji uruchomionej właśnie na nim. Używa się tego do tworzenia transparentnych proxy: proxy to program który pośredniczy w wymianie informacji między twoją siecią a światem zewnętrznym. Transparentnych dlatego, że twoja sieć nie wie nawet że rozmawia z proxy, dopóki oczywiście proxy działa.
Można tak skonfigurować Squida, i nazywa się to przekierowywaniem (ang. redirection) lub transparentnym proxy we wcześniejszych wersjach Linuksa.
3. Dwa typy NAT
Dzielę NAT na dwa rodzaje: Źródłowy NAT (SNAT) i Docelowy NAT (DNAT).
SNAT ma miejsce wtedy, gdy zmieniasz adres źródłowy pierwszego pakietu: tzn. kiedy zmieniasz adres maszyny z której inicjowane jest połączenie. SNAT wykonywany jest zawsze po routingu (ang. post-routing), tuż przed tym jak pakiet opuści maszynę po kablu. Masquerading jest specjalizowaną formą SNAT.
DNAT ma miejsce wtedy, gdy zmieniasz adres docelowy pierwszego pakietu: tzn. kiedy zmieniasz adres maszyny do której ma dotrzeć połączenia. DNAT wykonywany jest zawsze przed routingiem, w momencie gdy pakiet zostaje odebrany z łącza. Przekazywanie portów, rozkładanie obciążenia i transparentne proxy to wszystko różne rodzaje DNAT.
7. Protokoły specjalne
Niektóre protokoły nie lubią być poddawane NAT. Dla każdego z tych protokołów muszą zostać napisane dwa rozszerzenia: jedno dla śledzenia połączeń samego protokołu, drugie dla wykonania na nim NAT.
W dystrybucji netfilter znajdują się aktualnie moduły dla ftp: ip_conntrack_ftp.o i ip_nat_ftp.o. Możesz użyć insmod by dołączyć je do kernela (lub skompilować na stałe) i od tego momentu połączenia ftp przez NAT powinny działać poprawnie. Jeśli tego nie zrobisz, będziesz mógł używać tylko pasywnego ftp, a nawet wtedy mogą wystąpić problemy jeśli wykonujesz coś więcej niż tylko prosy SNAT.
8. Problemy z NAT
Jeśli wykonujesz NAT na konkretnym połączeniu, wszystkie pakiety podróżujące w obu kierunkach (do i z sieci) muszą przechodzić przez maszynę wykonującą NAT, w innym przypadku nie będzie to działało dobrze. W szczególności, kod śledzenia połączeń składaja fragmenty, co oznacza że nie tylko nie będzie on działał poprawnie, ale również i to, że twoje pakiety mogą w ogóle nigdzie nie dotrzeć, ponieważ jako fragmenty zostaną zatrzymane.
9. Źródłowy NAT (SNAT) i routing
Jeśli wykonujesz SNAT, musisz upewnić się że każda maszyna do której docierają pakiety poddane Źródłowemu NAT odpowie na nie kierując pakiety właśnie do maszyny wykonującej SNAT. Na przykład, jeśli mapujesz pakiety wychodzące na adres źródłowy 1.2.3.4, zewnętrzny router musi wiedzieć że pakiety z odpowiedziami (które przeznaczone są dla 1.2.3.4) muszą trafić z powrotem do tego komputera na którym odbywa się mapowanie. Można to wykonać na następujące sposoby:
Jeśli robisz SNAT na adres własny maszyny która go wykonuje (a routing dla niej już działa), nie musisz robić nic.
Jeśli robisz SNAT na nieużywany adres w lokalnej sieci LAN (na przykład, mapujesz na 1.2.3.99, wolny IP w twojejsieci 1.2.3.0/24), twój komputer wykonujący NAT będzie musiał odpowiadać na zapytania ARP do tego adresu, oprócz zapytań do jego własnego adresu: najprostszym sposobem by to osiągnąć jest stworzenie aliasu IP, np.:
# ip address add 1.2.3.99 dev eth0
Jeśli robisz SNAT na kompletnie inny adres, będziesz się musiał upewnić że maszyny do których będą docierały pakiety SNAT będą routować odpowiedzi z powrotem do maszyny wykonującej NAT. Tak się dzieje jeśli komputer wykonujący NAT jest domyślną bramką (gateway), w innym przypadku będzie trzeba rozgłosić taką trasę (jeśli wykorzystujesz jakiś protokół routowania) lub ręcznie dodać trasy do każdej maszyny której dotyczy ten przypadek.
10. Docelowy NAT (DNAT) do tej samej sieci
Jeśli wykonujesz przekazywanie portów (ang. portforwarding) do tej samej sieci, musisz upewnić się że zarówno przyszłe pakiety jak i odpowiedzi na nie przejdą przez maszynę prowadzącą NAT (by mogły być zmodyfikowane). Kod odpowiedzialny za NAT blokuje obecnie (od 2.4.0-test6) wychodzące pakiety przekierowujące ICMP (ang. ICMP redirect), które produkowane są w momencie gdy pakiety po przejściu przez NAT wychodzą tym samym interfejsem do którego dotarły, ale maszyna do której są skierowane nadal stara się odpowiedzieć bezpośrednio do klienta (który nie rozpozna odpowiedzi).
Klasycznym przykładem jest próba dostępu przez personel wewnętrzny do 'publicznego' serwera WWW, który tak naprawdę przesłonięty jest przez DNAT z publicznego adresu (1.2.3.4) na adres sieci wewnętrznej (192.168.1.1), tak jak poniżej:
# iptables -t nat -A PREROUTING -d 1.2.3.4 \
-p tcp --dport 80 -j DNAT --to 192.168.1.1
Jednym ze sposobów jest utrzymywanie wewnętrznego serwera DNS który zna prawdziwe (wewnętrzne) adresy IP publicznego serwera WWW i przekazuje wszystkie inne wywołania do zewnętrznego serwera DNS. Oznacza to że logowanie dostępu na twoim serwerze WWW wskaże adresy IP z sieci wewnętrznej poprawnie.
Innym sposobem jest zapewnienie, by maszyna prowadząca NAT mapowała również źródłowy adres IP na jej własny, dla połączeń tego typu, ogłupiając serwer i sprawiając by odpowiadał przez nią. W tym przykładzie, wykonujemy co następuje (zakładając że wewnętrzny adres IP komputera prowadzącego NAT to 192.168.1.250):
# iptables -t nat -A POSTROUTING -d 192.168.1.1 -s 192.168.1.0/24 \
-p tcp --dport 80 -j SNAT --to 192.168.1.250
Ponieważ reguła PREROUTING jest sprawdzana pierwsza, pakiety będą od razu skierowane do wewnętrznego serwera WWW: możemy stwierdzić które wywołania pochodzą z sieci wewnętrznej sprawdzając źródłowe adresy IP.Nie jestem facetem na jedną noc.
Aż tyle czasu to ja nie mam... - Dzieki za info, na pewno cos z tego wybiore , Chicken81 25/02/04 20:52
juz jakby troche "jasniej" sie zrobilo, jednakze jesli ktos mialby jeszcze cos do dorzucenia to czekam"Tylko dwie rzeczy są nieskończone -
wszechświat i ludzka głupota...." -
A.Einstein
|
|
|
|
|
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL |
|
|
|
|