plik


ÿþLinux 2.4 NAT HOWTO Rusty Russell, lista pocztowa netfilter@lists.samba.org Wersja oryginalna: $Revision: 1.15 $ $Date: 2001/07/29 03:59:37$ OryginaB tego dokumentu znajduje si pod adresem: http://netfilter.samba.org/unreliable- guides/NAT-HOWTO/index.html TBumaczenie: Aukasz Bromirski, l.bromirski@mr0vka.eu.org Wersja tBumaczenia: 2.0, 2001/11/02 22:22:00 OryginaB tBumaczenia znajduje si pod adresem: http://mr0vka.eu.org/tlumaczenia/linux24-nat.html Dokument ten opisuje jak wykona maskarad, transparentne proxy, przekazywanie portów i inne formy NAT w pracy z linuksowymi kernelami 2.4. 1. Wprowadzenie Witam, szanowny czytelniku. WBa[nie zanurzasz si w fascynujcy (cho czasami koszmarny) [wiat NAT: Translacji Adresów Sieciowych, a ten dokument HOWTO bdzie dla Ciebie w miar dokBadnym przewodnikiem, do tego i nie tylko, tematu dla kernela linuksa 2.4. W linuksie 2.4 dodano infrastruktur do manipulowania pakietami nazwan 'netfilter'. Warstwa zbudowana na jej fundamentach zapewnia NAT, kompletnie przepisany w porównaniu do poprzednich kerneli. (C) 2000 Paul `Rusty' Russell. Na licencji GNU GPL. 2. Gdzie znajduje si oficjalna strona WWW i lista? S trzy oficjalne strony: Dziki Filewatcher. Dziki ZespoBowi Samba i SGI. Dziki Harald'owi Welte. By odnalez oficjaln list pocztow netfilter, zajrzyj na Serwer list Samba. 2.1 Co to jest Translacja Adresów Sieciowych (NAT)? Zwykle, pakiety podró|uj od zródBa (takiego jak twój komputer) do swojego przeznaczenia (takiego jak www.gnumonks.org) przez wiele ró|nych poBczeD: okoBo 19 std gdzie jestem, w Australii. {aden z tych wzBów nie zmienia twojego pakietu: po prostu przesyBa go dalej. Je[li jeden z tych wzBów miaBby wykona NAT, zmieniBby adres zródBowy lub przeznaczenia w trakcie jak pakiet przechodziBby przez niego. Jak sobie pewnie wyobra|asz, nie jest to sposób w jaki system miaB dziaBa, i w zwizku z tym u|ywanie NAT jest zawsze troch ryzykowne. Zwykle wzeB który wykonuje NAT zapamita sposób w jaki zmieniB pakiet i kiedy nadejdzie odpowiedz na niego, wykona odwrotne czynno[ci tak, by wszystko dziaBaBo. 2.2 Po co miaBbym stosowa NAT? W idealnym [wiecie, nie byBoby powodu. Ale, gBównymi powodami s: Modemowe poBczenie do Internetu Wikszo[ ISP (dostawców internetowych) daje ci jeden IP gdy si do nich wdzwaniasz. Mo|esz wysyBa pakiety z dowolnym adresem zródBowym, ale tylko odpowiedzi przeznaczone do tego konkretnego IP który zostaB Ci przydzielony dotr z powrotem do Ciebie. Je[li chcesz u|ywa wielu komputerów (je[li posiadasz na przykBad sie w domu) i zapewni im dostp do Internetu, bdziesz potrzebowaB NAT. Aktualnie jest to najczstsze zastosowanie NAT, znane pod nazw 'masquerading' w [wiecie linuksa. Nazywam to SNAT, poniewa| zmieniasz adres zródBowy pierwszego pakietu (Source- NAT, czyli yródBowa Translacja Adresów - przypomnienie tBum.). 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 chciaBby[ by ludzie mogli si dosta do maszyn w [rodku sieci tak jakby miaBy 'prawdziwe' adresy IP. Je[li zmienisz adres przeznaczenia przychodzcych pakietów, mo|esz to osign. Ten typ NAT nazywany byB w dotychczasowych wersjach Linuksa przekazywaniem portów (ang. port-forwarding). Najczstszym rodzajem tego sposobu jest rozkBadanie obci|enia (ang. load-sharing), mapowanie wskazuje wtedy na list maszyn które dziel si nadchodzcymi wywoBaniami. Je[li zamierzasz robi co[ takiego na powa|nie, warto zajrze pod adres linuksowego wirtualnego serwera. Transparentne Proxy Czasami chcesz udawa |e ka|dy pakiet który przechodzi przez twój komputer z Linuksem, przeznaczony jest do jakiej[ aplikacji uruchomionej wBa[nie na nim. U|ywa si tego do tworzenia transparentnych proxy: proxy to program który po[redniczy w wymianie informacji midzy twoj sieci a [wiatem zewntrznym. Transparentnych dlatego, |e twoja sie nie wie nawet |e rozmawia z proxy, dopóki oczywi[cie proxy dziaBa. 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: yródBowy NAT (SNAT) i Docelowy NAT (DNAT). SNAT ma miejsce wtedy, gdy zmieniasz adres zródBowy pierwszego pakietu: tzn. kiedy zmieniasz adres maszyny z której inicjowane jest poBczenie. 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 poBczenia. DNAT wykonywany jest zawsze przed routingiem (ang. pre-routing), kiedy pakiet wBa[nie zostaB odebrany z kabla. Przekazywanie portów, rozkBadanie obci|enia i transparentne proxy to wszystko ró|ne rodzaje DNAT. 4. Szybkie przej[cie z kerneli 2.0 i 2.2 Przepraszam wszystkich nadal zszokowanych po przej[ciu z 2.0 (ipfwadm) do 2.2 (ipchains). S dobre i zBe wiadomo[ci Przede wszystkim, mo|esz u|ywa dalej ipchains i ipfwadm tak jak kiedy[. By to zrobi, musisz insmod wBczy do kernela ( ) moduBy 'ipchains.o' lub 'ipfwadm.o' które znajduj si w najnowszej dystrybucji pakietu netfilter. ModuBy mog by zaBadowane tylko rozBcznie (zostaBe[ ostrze|ony) i nie powinny by Bczone z innymi moduBami netfilter. Kiedy ju| zainstalujesz jeden z tych moduBów, mo|esz u|ywa ipchains i ipfwadm tak jak do tej pory, z nastpujcymi ró|nicami: ipchains -M -S Ustawienie czasu wyga[nicia dla poBczeD maskaradowanych opcjami lub ipfwadm -M -s nic nie robi. Poniewa| jednak czasy wygasania dla nowej infrastruktury NAT s du|o dBu|sze, nie powinno mie to znaczenia. init_seq delta Poprzednia_delta Pola , i w listingu szczegóBowym maskarady s zawsze ustawione na zero. Zerowanie i listowanie liczników w tym samym momencie '-Z -L ' nie dziaBa: liczniki nie zostan wyzerowane. Warstwa zapewniajca kompatybilno[ wstecz nie skaluje si zbyt dobrze dla du|ych ilo[ci poBczeD: nie u|ywaj jej na firmowej bramie! Hakerzey mog równie| zauwa|y, |e: Mo|esz si teraz bindowa do portów 61000-65095 nawet je[li dziaBa maskarada. Jej kod zakBadaB do tej pory |e w tym zakresie portów mógB si rzdzi, wic programy nie mogBy go u|ywa. getsockname (Nieudokumentowana) opcja ' ', której programy pracujce jako transparentne proxy mogBy u|y by uzyska prawdziwe adresy przeznaczenia poBczeD ju| nie dziaBa. bind-to-foreign-address (Nieudokumentowana) opcja ' ' równie| nie zostaBa zaimplementowana; byBa u|ywana to stworzenia kompletnej iluzji transparentnego proxy. 4.1 Ja chc tylko maskarady! Ratunku! Wikszo[ ludzi chce. Je[li masz dynamicznie przydzielany IP podczas wdzwaniania si po PPP (je[li nie wiesz o co chodzi to zapewne tak wBa[nie jest), mo|esz po prostu powiedzie swojej maszynie |e wszystkie pakiety wychodzce z twojej sieci wewntrznej powinny by zmieniane tak, by wygldaBy jak pakiety wychodzce z komputera wdzwaniajcego si. # ZaBaduj moduB NAT (usuwa inne). modprobe iptable_nat # W tabeli NAT (-t nat), dodaj reguB (-A) po routingu # (POSTROUTING) dla wszystkich pakietów wychodzcych przez ppp0 (-o ppp0) # która mówi by prowadzi maskaradowanie poBczenia (-j MASQUERADE). iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE # WBcz przekazywanie IP echo 1 > /proc/sys/net/ipv4/ip_forward Zauwa| |e nie prowadzimy tutaj |adnego filtrowania pakietów: je[li chcesz je zastosowa, przeczytaj Filtrowanie Pakietów HOWTO a w szczególno[ci sekcj: 'Aczenie NAT i filtrowania pakietów'. 4.2 A co z ipmasqadm? Istnieje du|o mniejsza liczba u|ytkowników, wic specjalnie nie przejmowaBem si wsteczn iptables -t nat kompatybilno[ci. Mo|esz po prostu u|y ' ' by wykonywa przekazywanie portów. Na przykBad, dla Linuksa 2.2 mógBby[ zrobi: # Linux 2.2 # Przeka| pakiety TCP kierowane do portu 8080 na 1.2.3.4 do 192.168.1.1 na p ipmasqadm portfw -a -P tcp -L 1.2.3.4 8080 -R 192.168.1.1 80 A teraz zrobisz: # Linux 2.4 # Dodaj reguB przed routingiem (-A PREROUTING) do tabeli NAT (-t nat) mówi # pakiety TCP (-p tcp) kierowane do 1.2.3.4 (-d 1.2.3.4) na port 8080 (--dpo # maj by zmapowane (-j DNAT) na 192.168.1.1, port 80 (--to 192.168.1.1:80) iptables -A PREROUTING -t nat -p tcp -d 1.2.3.4 --dport 8080 \ -j DNAT --to 192.168.1.1:80 5. Kontrolowanie tego, co poddawa NAT Musisz stworzy takie reguBy NAT, by kernel wiedziaB które poBczenia poddawa modyfikacjom i iptables jak to robi. By tego dokona, u|ywamy bardzo szczegóBowego narzdzia i wskazujemy kernelowi jak zmieni tabel NAT przez podanie opcji '-t nat '. Tabela NAT zawiera dwie listy zwane 'BaDcuchami' (ang. chains): ka|da reguBa w takiej li[cie jest sprawdzana dopóki która[ nie pasuje. Te dwa BaDcuchy nazywaj si: PREROUTING (dla DNAT, poniewa| pakiety najpierw do nas docieraj), POSTROUTING (dla SNAT, po którym pakiety opuszczaj nasz system) i OUTPUT (dla DNAT, dla pakietów generowanych lokalnie). Poni|szy rysunek ilustrowaBby to dosy dobrze gdybym miaB cho troch talentu artystycznego: _____ _____ / \ / \ PREROUTING -->[Decyzja ]----------------->POSTROUTING-----> \D-NAT/ [Rutingu ] \S-NAT/ | ^ | | | | | | | | | | | | --------> Local Process ------ W ka|dym z wzBów powy|ej, gdy dociera do niego pakiet, sprawdzane jest z jakim poBczeniem jest skojarzony. Je[li jest to nowe poBczenie, sprawdzamy odpowiedni BaDcuch w tabeli NAT by sprawdzi co mamy z nim zrobi. Odpowiedz której udziela tabela dotyczy bdzie wszystkich przyszBych pakietów dla tego poBczenia. 5.1 Proste przykBady z u|yciem iptables iptables pobiera pewn liczb standardowych opcji tak jak podano to ni|ej. Wszystkie opcje z podwójnym znakiem minus mog by skrócone, tak dBugo jak iptables mo|e je rozró|ni od innych mo|liwych znaczeD. Je[li twój kernel ma wkompilowan obsBug iptables jako moduB, insmod ip_tables musisz go najpierw zaBadowa: ' '. Najwa|niejsz opcj jest wybierajca tabel, '-t '. Dla wszystkich operacji które dotycz NAT, u|ywa bdziesz opcji '-t nat ', która sBu|y do dodawania nowej reguBy '. Drug wa|n opcj jest '-A na koniec BaDcucha (np. '-A POSTROUTING ', która sBu|y do dodawania jej na pocztku (np. '), oraz '-I '-I PREROUTING '). Mo|esz podawa adresy zródBowe ('-s ' lub '--source ') i docelowe ( '-d ' lub '--destination ' ) pakietów których ma dotyczy NAT. Opcjom tym mo|e towarzyszy pojedyDczy adres IP (np. 192.168.1.1), nazwa (np. www.gnumonks.org) lub adres sieci (np. 192.168.1.0/24 albo 192.168.1.0/255.255.255.0). Mo|esz równie| wskaza interfejs wej[ciowy ( '-i ' lub '--in-interface ' ) lub wyj[ciowy ( '-o ' lub '--out-interface '), ale który konkretnie zale|y równie| od tego który BaDcuch wska|esz: w BaDcuchu PREROUTING mo|esz wskaza tylko interfejs wej[ciowy, a w BaDcuchu POSTROUTING iptables mo|esz wskaza tylko interfejs wyj[ciowy. Je[li u|yjesz niewBa[ciwego, zwróc bBd. 5.2 DokBadniejsze informacje o wyborze pakietów do modyfikowania PowiedziaBem wy|ej, |e mo|esz wskaza adresy zródBowe i docelowe. Je[li ominiesz adres zródBowy, pasowa bdzie ka|dy adres zródBowy. Je[li pominiesz adres docelowy, pasowa bdzie ka|dy adres docelowy. Mo|esz równie| wskaza konkretny protokóB ( '-p ' ), taki jak TCP czy UDP; ' lub '--protocol pasowa bd pakiety tylko z tego protokoBu. GBównym powodem dla którego chciaBby[ wskaza konkretny protokóB jest to, |e z ka|dym z nich skojarzone s dodatkowe opcje: w szczególno[ci '-- source-port ' (które mo|na skróci do '--sport '). ' i '--destination-port ' i '--dport Opcje te pozwalaj ci okre[li o jakie pakiety chodzi z dokBadno[ci do portu zródBowego i docelowego. Jest to u|yteczne w przekazywaniu na przykBad wywoBaD do serwerów WWW (port TCP 80 lub 8080) i jednocze[nie pomijaniu innych pakietów. Opcjom tym musi towarzyszy opcja '-p ' (która ma ten skutek uboczny, |e doBadowywuje wspóBdzielone rozszerzenie biblioteczne dla konkretnego protokoBu). Do wskazania numeru portu /etc/services mo|esz u|ywa numerów, lub nazw z pliku . Wszystkie sposoby na które mo|esz wskaza okre[lony typ pakietów wyszczególnione zostaBy w man iptables podrczniku ( ). 6. Okre[lanie jak zmienia pakiety Wiesz ju| jak wybra pakiety do modyfikacji. By skompletowa nasz reguB, musimy poinformowa jeszcze kernel co zrobi z pasujcymi pakietami. 6.1 yródBowy NAT Chcesz prowadzi yródBowy NAT, czyli zmienia adresy zródBowe poBczeD na co[ innego. Dzieje si to w BaDcuchu POSTROUTING, tu| przed tym jak pakiety zostaj wysBane; jest to bardzo wa|ny szczegóB, poniewa| oznacza |e cokolwiek innego na tej maszynie ogldajc ten pakiet (routing, filtrowanie pakietów) bdzie widziaBo go w stanie jeszcze niezmienionym. Oznacza to, |e mo|na równie| u|ywa opcji '-o '. yródBowy NAT wykonuje si przez wpisanie '-j SNAT ', i dodanie opcji '--to-source ', która okre[la adres lub grup docelowych adresów IP; opcjonalnie mo|na równie| wskaza numer lub zakres numerów portów (ale tylko dla protokoBów TCP i UDP). ## ZmieD adres zródBowy na 1.2.3.4. # iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4 ## ZmieD adres zródBowy na 1.2.3.4, 1.2.3.5 lub 1.2.3.6 # iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4-1.2.3.6 ## ZmieD adresy zródBowy 1.2.3.4, porty z zakresu 1-1023 # iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to 1.2.3.4:1-1023 Maskarada Jest to specjalizowana odmiana yródBowego NATu: powinna by u|ywana tylko je[li masz dynamicznie przydzielany adres IP, tak jak podczas wdzwaniania si (je[li masz statycznie przydzielony IP, u|yj SNAT tak jak opisano to powy|ej). Nie musisz podawa adresów zródBowych by wykona maskarad: u|yje ona adresu zródBowego interfejsu przez który pakiety bd opuszczaBy maszyn. Ale co wa|niejsze, je[li poBczenie wdzwaniane zostanie zamknite, poBczenia (które i tak ju| zostaBy zerwane) zostan zapomniane, co oznacza mniej zgrzytów w momencie gdy ponownie si wdzwonisz z nowym IP. ## Maskaraduj wszystko wychodzce przez ppp0. # iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE 6.2 Docelowy NAT Wykonywany jest w BaDcuchu PREROUTING, zaraz po tym jak pakiet zostaje odebrany, co oznacza |e cokolwiek innego na tej maszynie bdzie pracowa z pakietem (routing, filtrowanie pakietów), zobaczy go ju| skierowanego do 'prawdziwego' adresu docelowego. Oznacza to równie|, |e mo|na równie| u|ywa opcji '-i ' (interfejs wej[ciowy). Docelowy NAT wskazuje si przez podanie opcji '-j DNAT ' i '--to-destination ' która okre[la pojedyDczy adres lub zakres adresów IP; opcjonalnie mo|na wskaza port lub zakres portów (ale tylko dla protokoBów TCP i UDP). ## ZmieD adresy docelowe na 5.6.7.8 # iptables -t nat -A PREROUTING -i eth0 -j DNAT --to 5.6.7.8 ## ZmieD adresy docelowe 5.6.7.8, 5.6.7.9 lub 5.6.7.10 # iptables -t nat -A PREROUTING -i eth0 -j DNAT --to 5.6.7.8-5.6.7.10 ## ZmieD adresy docelowe ruchu WWW na 5.6.7.8, port 8080 # iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 \ -j DNAT --to 5.6.7.8:8080 Przekierowywanie (ang. redirection) Jest to specjalizowany przypadek DNAT: dodano go dla wygodny, poniewa| jest to dokBadnie to samo co wykonanie DNAT na adres interfejsu wej[ciowego. ## Wy[lij przychodzcy ruch WWW na port 80 do naszego transparentnego proxy # iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 \ -j REDIRECT --to-port 3128 Zwró uwag na to, |e squid musi zosta skonfigurowany tak by wiedziaB |e jest transparentnym proxy! 6.3 Wicej o mapowaniach Jest troch ró|nych subtelno[ci w NAT z którymi wikszo[ u|ytkowników nigdy nie bdzie miaBa do czynienia. S one tu udokumentowane dla ciekawskich. Wybór wielu adresów z zakresu W momencie gdy poda si zakres adresów IP, s one wybierane na podstawie ostatnio u|ywanego IP dla poBczeD o których kod wie. Daje to co[ na ksztaBt prymitywnego rozkBadania obci|enia. Wykonywanie pustych mapowaD NAT Mo|esz u|y celu '-j ACCEPT ' by pozwoli na przej[cie poBczenia bez wykonania NAT. Standardowe zachowanie NAT Domy[lnym zachowaniem jest zmiana poBczenia tylko na tyle ile potrzeba, w granicach reguBy podanej przez u|ytkownika. Oznacza to |e nie bdziemy remapowa portów je[li wprost tego nie za|dano, chyba |e bdzie to konieczne. Mapowanie portów zródBowych wynikajce z innych poBczeD Nawet gdy dla danego poBczenia nie wykonuje si NAT, mo|e si okaza |e zostanie wykonana translacja adresu zródBowego, w zwizku z tym |e jest ju| jakie[ poBczenie u|ywajce tego portu. Rozwa|my nastpujcy przykBad maskarady, który jest dosy powszechny: 1. Nawizywane jest poBczenie przez maszyn 192.1.1.1 z portu 1024 do maszyny www.netscape.com na port 80. 2. PoBczenie jest maskaradowane przez maszyn prowadzc NAT i u|ywa jej adresu IP (1.2.3.4). 3. Maszyna ta stara si wykona poBczenie do www.netscape.com na port 80 z 1.2.3.4 (swojego adresu zewntrznego) z portu 1024. 4. Kod NAT zmieni port zródBowy drugiego poBczenia na 1025 tak by te dwa porty nie kolidowaBy ze sob. Kiedy odbywa si takie mapowanie, porty dzielone s na trzy klasy: porty poni|ej 512 porty pomidzy 512 a 1023 porty 1024 i wy|zsze Port nie zostanie nigdy zmapowany w tym przypadku do innej klasy. Co dzieje si gdy NAT zawiedzie Je[li nie istnieje sposób by unikalnie zmapowa poBczenie na |danie u|ytkownika, zostanie ono odrzucone. Dotyczy to równie| pakietów nie sklasyfikowanych jako cz[ istniejcego poBczenia, poniewa| s znieksztaBcone, maszyna wyczerpaBa pami itd. Wiele mapowaD, nakBadanie si i konflikty Mo|esz stworzy reguBy NAT które mapuj pakiety do tego samego zakresu; kod NAT jest na tyle mdry by unikn konfliktów. Oznacza to |e dwie reguBy mapujce adresy zródBowe 192.168.1.1 i 192.168.1.2 na 1.2.3.4 bdz dziaBa poprawnie. Co wicej, mo|esz mapowa nawet na realne, u|ywane adresy IP dopóki przechodz one przez maszyn mapujc. Je[li masz zatem przydzielon sie (1.2.3.0/24), ale masz jedn sie wewntrzn u|ywajc tych adresów i jedn u|ywajc zakresu adresów prywatnych 192.168.1.0/24, mo|esz po prostu wykona NAT na adresy zródBowe 192.168.1.0/24 do sieci 1.2.3.0, bez strachu |e co[ rozsypie: # iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 \ -j SNAT --to 1.2.3.0/24 Ta sama logika dotyczy adresów u|ywanych przez sam maszyn prowadzc NAT: tak wBa[nie dziaBa maskarada (wspóBdzielc adres interfejsu pomidzy pakiety maskaradowane a 'prawdziwe' pakiety wychodzce z tej maszyny). Co wicej, mo|esz mapowa te same pakiety na wiele maszyn docelowych, i bd one wspóBdzielone. Na przykBad, je[li nie chcesz mapowa niczego na 1.2.3.5 mo|esz napisa: # iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 \ -j SNAT --to 1.2.3.0-1.2.3.4 --to 1.2.3.6-1.2.3.254 Zmiana adresu docelowego dla lokalnie generowanych poBczeD Kod wykonujcy NAT pozwala na wstawianie reguB wykorzystujcych cel DNAT do BaDcucha OUTPUT, ale nie jest to w peBni obsBugiwane w wersji 2.4 (mo|e by, ale wymaga to nowych opcji konfigurujcych, testowania i troch kodu do dopiania, wic je[li kto[ nie zleci tego Rusty'emu nie spodziewaBbym si tego szybko). Aktualne ograniczenie polega na tym, |e mo|esz zmienia tylko adres docelowy na maszyn lokaln (tzn. '-j DNAT --to 127.0.0.1'), a nie na dowoln inn, poniewa| odpowiedzi nie bd prawidBowo tBumaczone. 7. ProtokoBy specjalne Niektóre protokoBy nie lubi by poddawane NAT. Dla ka|dego z tych protokoBów musz zosta napisane dwa rozszerzenia: jedno dla [ledzenia poBczeD samego protokoBu, drugie dla wykonania na nim NAT. ip_conntrack_ftp.o W dystrybucji netfilter znajduj si aktualnie moduBy dla ftp: i ip_nat_ftp.o insmod . Mo|esz u|y by doBczy je do kernela (lub skompilowa na staBe) i od tego momentu poBczenia ftp przez NAT powinny dziaBa poprawnie. Je[li tego nie zrobisz, bdziesz mógB u|ywa tylko pasywnego ftp, a nawet wtedy mog wystpi problemy je[li wykonujesz co[ wicej ni| tylko prosy SNAT. 8. Problemy z NAT Je[li wykonujesz NAT na konkretnym poBczeniu, wszystkie pakiety podró|ujce w obu kierunkach (do i z sieci) musz przechodzi przez maszyn wykonujc NAT, w innym przypadku nie bdzie to dziaBaBo dobrze. W szczególno[ci, kod [ledzenia poBczeD skBadaja fragmenty, co oznacza |e nie tylko nie bdzie on dziaBaB poprawnie, ale równie| i to, |e twoje pakiety mog w ogóle nigdzie nie dotrze, poniewa| jako fragmenty zostan zatrzymane. 9. yródBowy NAT (SNAT) i routing Je[li wykonujesz SNAT, musisz upewni si |e ka|da maszyna do której docieraj pakiety poddane yródBowemu NAT odpowie na nie kierujc pakiety wBa[nie do maszyny wykonujcej SNAT. Na przykBad, je[li mapujesz pakiety wychodzce na adres zródBowy 1.2.3.4, zewntrzny 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 nastpujce sposoby: 1. Je[li robisz SNAT na adres wBasny maszyny która go wykonuje (a routing dla niej ju| dziaBa), nie musisz robi nic. 2. Je[li robisz SNAT na nieu|ywany adres w lokalnej sieci LAN (na przykBad, mapujesz na 1.2.3.99, wolny IP w twojejsieci 1.2.3.0/24), twój komputer wykonujcy NAT bdzie musiaB odpowiada na zapytania ARP do tego adresu, oprócz zapytaD do jego wBasnego adresu: najprostszym sposobem by to osign jest stworzenie aliasu IP, np.: # ip address add 1.2.3.99 dev eth0 3. Je[li robisz SNAT na kompletnie inny adres, bdziesz si musiaB upewni |e maszyny do których bd docieraBy pakiety SNAT bd routowa odpowiedzi z powrotem do maszyny wykonujcej NAT. Tak si dzieje je[li komputer wykonujcy NAT jest domy[ln bramk (gateway), w innym przypadku bdzie trzeba rozgBosi tak tras (je[li wykorzystujesz jaki[ protokóB routowania) lub rcznie 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 przyszBe pakiety jak i odpowiedzi na nie przejd przez maszyn prowadzc NAT (by mogBy by zmodyfikowane). Kod odpowiedzialny za NAT blokuje obecnie (od 2.4.0-test6) wychodzce pakiety przekierowujce ICMP (ang. ICMP redirect), które produkowane s w momencie gdy pakiety po przej[ciu przez NAT wychodz tym samym interfejsem do którego dotarBy, ale maszyna do której s skierowane nadal stara si odpowiedzie bezpo[rednio do klienta (który nie rozpozna odpowiedzi). Klasycznym przykBadem jest próba dostpu przez personel wewntrzny do 'publicznego' serwera WWW, który tak naprawd przesBonity jest przez DNAT z publicznego adresu (1.2.3.4) na adres sieci wewntrznej (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 wewntrznego serwera DNS który zna prawdziwe (wewntrzne) adresy IP publicznego serwera WWW i przekazuje wszystkie inne wywoBania do zewntrznego serwera DNS. Oznacza to |e logowanie dostpu na twoim serwerze WWW wska|e adresy IP z sieci wewntrznej poprawnie. Innym sposobem jest zapewnienie, by maszyna prowadzca NAT mapowaBa równie| zródBowy adres IP na jej wBasny, dla poBczeD tego typu, ogBupiajc serwer i sprawiajc by odpowiadaB przez ni. W tym przykBadzie, wykonujemy co nastpuje (zakBadajc |e wewntrzny adres IP komputera prowadzcego 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| reguBa PREROUTING jest sprawdzana pierwsza, pakiety bd od razu skierowane do wewntrznego serwera WWW: mo|emy stwierdzi które wywoBania pochodz z sieci wewntrznej sprawdzajc zródBowe adresy IP. 11. Podzikowania Dzikuje przede wszystkim WatchGuard, oraz Davidowi Bonn, który wierzyB na tyle w ide netfilter by wsiera mnie kiedy nad ni pracowaBem. Oraz dla wszystkich, którzy podnie[li moje zorientowanie w temacie, gdy uczyBem si obrzydliwych stron NAT, szczególnie dla tych którzy czytali mój dziennik. Rusty.

Wyszukiwarka

Podobne podstrony:
linux24 pf pl
linux24 nat
TI 99 08 19 B M pl(1)
bootdisk howto pl 8
BORODO STRESZCZENIE antastic pl
notatek pl sily wewnetrzne i odksztalcenia w stanie granicznym
WSM 10 52 pl(1)
amd102 io pl09
PPP HOWTO pl 6 (2)
bridge firewall pl 3
NIS HOWTO pl 1 (2)
31994L0033 PL (2)
Jules Verne Buntownicy z Bounty PL
Blaupunkt CR5WH Alarm Clock Radio instrukcja EN i PL
Heidenhain frezarka iTNC 530 G kody pl

więcej podobnych podstron