PLD-doc/book/pl_book__konfiguracja/pl_konfiguracja__nat.sec

pawelb cvs w pld-linux.org
Sob, 17 Lip 2004, 00:29:09 CEST


Author: pawelb
Date: Fri Jul 16 22:29:07 2004
New Revision: 4352

Added:
   PLD-doc/book/pl_book__konfiguracja/pl_konfiguracja__nat.sec
Log:
- porzadki part2

Added: PLD-doc/book/pl_book__konfiguracja/pl_konfiguracja__nat.sec
==============================================================================
--- (empty file)
+++ PLD-doc/book/pl_book__konfiguracja/pl_konfiguracja__nat.sec	Fri Jul 16 22:29:07 2004
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="iso-8859-2"?>
+<section id="konfiguracja_nat">
+<title>Rozdzielanie sieci</title>
+<section id="konfiguracja_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="konfiguracja_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="konfiguracja_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 -L POSTROUTING -i $if_lok -s 192.168.0.0/16 \
+    -d 1.2.3.4 -j -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>
+</section>




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