Next Previous Contents

5. Řízení provádění NAT

Potřebuješ vytvořit pravidla pro NAT, která řeknou jádru, jaká spojení a jakým způsobem se mají změnit. K tomu se používá velmi všestranný nástroj iptables s přepínačem `-t nat' pro modifikaci NAT tabulky.

Tabulka pravidel NAT obsahuje tři seznamy nazývané `řetězy' (`chains'); pravidla jsou postupně zkoumána, dokud se nenalezne nějaké vyhovujcící. Dva řetězy jsou nazývané PREROUTING (před směrováním, pro Cílovou NAT) a POSTROUTING (po směrování, pro Zdrojovou NAT).

Následující obrázek by to měl celkem dobře osvětlit, kdybych měl nějaké umělecké nadání:

      _____                                     _____
     /     \                                   /     \
   PREROUTING -->[Směrování ]----------------->POSTROUTING----->
     \D-NAT/         |                         \S-NAT/
                     |                            ^
                     |                            |  
                     |                            |
                     |                            |
                     |                            |
                     |                            |
                     |                            |
                     --------> lokální proces -----

Jak paket prochází, u každého bodu (viz výše) se nejdříve najde, s kterým spojením je asociován. Jestliže jde o nové spojení, nalezne se odpovídající řetěz v NAT tabulce a zkoumá se, co se dále provede. Pokud se bude něco provádět, bude to ovlivňovat všechny následující pakety.

5.1 Jednoduchý výběr s použitím iptables

iptables má velké množství přepínačů, které jsou uvedeny dále. Všechny přepínače s dvojitou pomlčkou mohou být zkráceny pokud je zachována jednoznačnost. Pokud je podpora iptables zabudována v jádře jako modul, musí se tento modul nejdříve zavést: `insmod ip_tables'.

Nejdůležitějším přepínačem je výběr tabulky, `-t'. Pro všechny operace s NAT tabulkou tedy používej `-t nat'. Druhým nejdůležitějším přepínačem je použití `-A' k připojení pravidla na konec řetězu (např. `-A POSTROUTING') nebo vložení pravidla na začátek (např. `-I PREROUTING').

Můžeš zadat zdroj (`-s' nebo `--source') a cíl (`-d' nebo `--destination') paketů, na které chceš aplikovat NAT. Za těmito volbami může být jediná IP adresa (např. 192.168.1.1), jméno (např. www.gnumonks.org) nebo adresa sítě (např. 192.168.1.0/24 nebo 192.168.1.0/255.255.255.0).

Můžeš zadat vstupní (`-i' nebo `--in-interface') nebo výstupní (`-o' nebo `--out-interface') rozhraní, které má odpovídat. Záleží ale na řetězu, do kterého dáváš pravidlo: u PREROUTING řetězu můžeš zadat pouze vstupní rozhraní, u POSTROUTING řetězu pak výstupní rozhraní. Jestliže zadáš špatné rozhraní, iptables zahlásí chybu.

5.2 Jemnější členění paketů pro modifikaci

Jak jsem již řekl, můžeš zadat zdrojovou a cílovou adresu. Jestliže vynecháš přepínač se zdrojovou adresou, pak budou odpovídat všechny zdrojové adresy. To samé platí i pro cílovou adresu.

Můžeš také označit specifický protokol (`-p' nebo `--protocol') jako TCP či UDP; jen pakety tohoto protokolu budou odpovídat pravidlu. Možnost zadání dalších speciálních přepínačů je hlavním důvodem, proč zadat protokol: speciálně můžeš zadat zdrojový port (`--source-port' nebo `--sport') a cílový port (`--destination-port' nebo `--dport').

Tyto přepínače ti umožní zadat pravidlo, kterému budou odpovídat jen pakety s určitými zdrojovými a cílovými porty. To je užitečné pro přesměrovávání WWW požadavků (TCP port 80 nebo 8080), zatímco s ostatními pakety se nic neděje.

Tyto přepínače musí následovat přepínač `-p' (což má vedlejší efekt zavedení sdílené rozšiřující knihovny pro tento protokol). Můžeš užít čísla portů nebo jméno portu ze souboru /etc/services.

Všechny rozličné cesty, kterými můžeš vybrat paket, jsou velmi detailně popsány v manuálových stránkách (man iptables).


Next Previous Contents