SVN: PLD-doc/book/pl_book__siec/pl_siec__nat.sec

qwiat qwiat w pld-linux.org
Nie, 23 Gru 2007, 04:35:31 CET


Author: qwiat
Date: Sun Dec 23 04:35:30 2007
New Revision: 9159

Modified:
   PLD-doc/book/pl_book__siec/pl_siec__nat.sec
Log:
- updates and cleanups
- indent


Modified: PLD-doc/book/pl_book__siec/pl_siec__nat.sec
==============================================================================
--- PLD-doc/book/pl_book__siec/pl_siec__nat.sec	(original)
+++ PLD-doc/book/pl_book__siec/pl_siec__nat.sec	Sun Dec 23 04:35:30 2007
@@ -1,74 +1,91 @@
 <?xml version="1.0" encoding="iso-8859-2"?>
 <section id="siec_nat">
-<title>Rozdzielanie sieci (NAT)</title>
-<section id="siec_nat_wprowadzenie">
-<title>Wprowadzenie</title>
-
-<para>NAT (Network Address Translation) w Linuksie można zrobić na dwa sposoby.</para>
-<itemizedlist>
-<listitem><para>Wykorzystując infrastrukturę <productname>netfilter</productname> jądra 2.4 i 2.6.</para></listitem>
-<listitem><para>Korzystając z narzędzi do kontrolowania sieci z pakietu <productname>iproute2</productname>.</para></listitem>
-<listitem><para><productname>ipchains</productname> w kernelach 2.2 (tylko MASQUERADE).</para></listitem>
-</itemizedlist>
-<para>Celem tego dokumentu jest przybliżenie czytelnikowi możliwości wykonania NAT 
-w Linuksie. Po szczegółowe opisy należy sięgnąć do różnych HOW-TO dostępnych 
-w sieci.</para>
-<para><ulink url="http://www.netfilter.org/documentation/HOWTO/pl/packet-filtering-HOWTO.html">Oryginalna dokumentacja Netfilter w języku angielskim</ulink></para>
-
-<para>Najlepszym sposobem jest wykorzystanie możliwości <productname>netfilter</productname>, gdyż wykonuje 
-on nat przed (PREROUTING) lub po (POSTROUTING) routingu, co daje nam możliwość
-tak skonfigurowania firewalla, jak by nie było wykonywane NAT.</para>
-
-</section>
-<section id="siec_nat_iptables">
-<title>Netfilter (iptables)</title>
-
-<para>NAT w <productname>iptables</productname> tworzymy dodając regułki do tabeli "nat". Żeby sprawdzić jakie 
-są dostępne "Chains" w tabeli nat, należy wykonać takie polecenie:</para>
-
-<screen># iptables -t nat -L</screen>
-
-<para>Zauważymy, że mamy do dyspozycji: PREROUTING, POSTROUTING, OUTPUT.</para>
-
-<para>W PREROUTING są regułki do wykonania DNAT (Destination NAT). Zamienia to adres 
-hosta docelowego na nasz prywatny. W ten sposób udostępniamy IP publiczne z podsieci,
-w której jest router.</para>
-
-<screen># iptables -t nat -A PREROUTING -d 1.2.3.4 -j DNAT --to 192.168.1.2</screen>
-
-<para>Można określić na jakim interfejsie będzie wykonany NAT poprzez opcję -i $inteface.
-Opcja -o w PREROUTING nie jest dostępna.</para>
-
-<para>W POSTROUTING są regułki do wykonania SNAT (Source NAT) na pakiecie. Zmienia
-to adres nadawcy np. z puli adresów prywatnych na adres z puli publicznej.</para>
-
-<screen># iptables -t nat -A POSTROUTING -s 192.168.1.2 -j SNAT --to 1.2.3.4</screen>
-
-<para>Jeśli podamy maskę podsieci, zostanie wykorzystana większa ilość adresów.</para>
-
-<para>W POSTROUTING jest jeszcze dostępny cel MASQUERADE. Wykonuje on to samo co SNAT
-z tym, że na adres interfejsu jakim wychodzi pakiet. Używać go należy tylko
-kiedy nasz adres publiczny zmienia się. (np. w połączeniach dial-up)</para>
-
-<para>Ważne jest, aby adres 1.2.3.4 odpowiadał na zapytania ARP. Osiągniemy to tworząc
-alias IP.</para>
-
-<screen># ip address add 1.2.3.4 dev eth0</screen>
-
-<para>Adres 1.2.3.4 musi należeć do podsieci, w której znajduje się eth0.</para>
- 
-</section>
-<section id="siec_nat_zakonczenie">
-<title>Zakończenie.</title>
-
-<para>Po ustawieniu DNAT na adres wewnętrzny zauważymy, że jest problem z dostępem 
-do ip 1.2.3.4 z wewnątrz sieci. Dzieje się tak dlatego, że adres source zostaje 
-bez zmian, dlatego też pakiet nie wraca do bramy. Musimy więc zmusić, aby host wysyłał
-odpowiedź do bramy. Możemy wykonać to w następujący sposób:</para>
-
-<screen># iptables -t nat -A POSTROUTING -o $if_lok -s 192.168.0.0/16 \
-    -d 1.2.3.4 -j SNAT --to 192.168.0.1</screen>
-
-<para>Gdzie $if_lok to interfejs lokalnej sieci, a 192.168.0.1 to adres na tym interfejsie.</para>
-</section>
+<title>NAT</title>
+	<para>
+		NAT (Network Address Translation) w Linuksie można zrobić
+		na dwa sposoby:
+	</para>
+	<itemizedlist>
+		<listitem><para>wykorzystując infrastrukturę
+		<productname>netfilter</productname> jądra 2.4 i 2.6.
+		</para>
+		</listitem>
+		<listitem>
+		<para>korzystając z narzędzi do kontrolowania
+		sieci z pakietu <productname>iproute2</productname>.</para>
+		</listitem>
+	</itemizedlist>
+	<para><ulink url="http://www.netfilter.org/documentation/HOWTO/pl/packet-filtering-HOWTO.html">Oryginalna dokumentacja Netfilter w języku angielskim</ulink></para>
+	<para>
+		Najlepszym sposobem jest wykorzystanie możliwości
+		<productname>netfilter</productname>, gdyż wykonuje 
+		on nat przed (<literal>PREROUTING</literal>) lub po
+		(<literal>POSTROUTING</literal>) routingu, co daje nam możliwość
+		tak skonfigurowania firewalla, jak by nie było wykonywane NAT.
+		NAT w <productname>iptables</productname> tworzymy dodając regułki
+		do tabeli "nat". Żeby sprawdzić jakie są dostępne "Chains"
+		w tabeli nat, należy wykonać takie polecenie:
+	</para>
+	<screen># iptables -t nat -L</screen>
+	<para>
+		W poniższych przykładach założyliśmy, że 1.2.3.4 jest adresem IP
+		podniesionym na interfejsie zewnętrznym ($if_wan) zaś 192.168.1.0/16
+		to adresy na interfejsie sieci lokalnej ($if_lan).
+	</para>
+	<section id="siec_nat_dnat">
+		<title>DNAT</title>
+		<para>
+			W PREROUTING są regułki do wykonania DNAT (Destination NAT).
+			Zamienia to adres hosta docelowego na nasz prywatny, w ten
+			sposób możemy przekierować ruch na dowolny host w sieci
+			prywatnej:
+		</para>
+		<screen># iptables -t nat -A PREROUTING -d 1.2.3.4 -j DNAT --to 192.168.1.2</screen>
+
+		<para>
+			Można określić na jakim interfejsie będzie wykonany NAT
+			poprzez opcję -i $inteface. Opcja -o w PREROUTING nie jest
+			dostępna.
+		</para>
+		<para>
+			Możemy też dokonać przekierowania ruchu kierowanego na konkretny
+			port, zwanego potocznie przekierowaniem portu:
+		<screen># iptables -t nat -A PREROUTING -i $if_wan -p TCP -d 1.2.3.4 --dport 8000  -j DNAT --to 192.168.1.11:80</screen>
+		</para>
+	</section>
+	<section id="siec_nat_snat">
+		<title>SNAT i MASQUERADE</title>
+		<para>
+			SNAT (Source NAT) zmienia to adres nadawcy np. z puli adresów
+			prywatnych na adres z puli publicznej, co jest wykorzytywane zwykle
+			do "dzielenia łącza".
+		</para>
+		<screen># iptables -t nat -A POSTROUTING -s 192.168.1.2 -j SNAT --to 1.2.3.4</screen>
+		<para>
+			Jeśli podamy maskę podsieci, zostanie wykorzystana większa ilość
+			adresów.
+		</para>
+		<para>
+			MASQUERADE wykonuje to samo co SNAT z tym, że na adres interfejsu
+			jakim wychodzi pakiet. Używać go należy tylko kiedy nasz adres
+			publiczny zmienia się. (np. w połączeniach ze zmiennym IP
+			publicznym)
+		</para>
+	 </section>
+	<section id="siec_nat_zakonczenie">
+		<title>Zakończenie.</title>
+		<para>
+			Po ustawieniu DNAT na adres wewnętrzny zauważymy, że jest problem z
+			dostępem do ip 1.2.3.4 z wewnątrz sieci. Dzieje się tak dlatego,
+			że adres source zostaje bez zmian, dlatego też pakiet nie wraca
+			do bramy. Musimy więc zmusić, aby host wysyłał
+			odpowiedź do bramy. Możemy wykonać to w następujący sposób:
+		</para>
+		<screen># iptables -t nat -A POSTROUTING -o $if_lan -s 192.168.0.0/16 \
+		    -d 1.2.3.4 -j SNAT --to 192.168.0.1</screen>
+		<para>
+			Gdzie $if_lan to interfejs lokalnej sieci, a 192.168.0.1 to adres na
+			tym interfejsie.
+		</para>
+	</section>
 </section>


Więcej informacji o liście dyskusyjnej pld-doc