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