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.
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.
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
).