Linux 2.4 NAT HOWTO
Rusty Russell, mailing list netfilter@lists.samba.org
$Revision: 487 $ $Date: 2002-01-14 10:35:13 +0100 (lun, 14
ene 2002) $
Do etiny peloil Ivo Raisr (iq_soft@home.zcu.cz)
______________________________________________________________________
Table of Contents
1. vod
2. Kde me najt oficiln WWW strnky a konferenci?
2.1 Co to je Network Address Translation?
2.2 Pro mm chtt NAT?
3. Dva druhy NAT
4. Rychl pestup z 2.0 a 2.2 jdra
4.1 Chci jen masquerading! Pomoc!
4.2 A co ipmasqadm?
5. zen provdn NAT
5.1 Jednoduch vbr s pouitm iptables
5.2 Jemnj lenn paket pro modifikaci
6. Jak modifikovat pakety
6.1 Zdrojov NAT
6.1.1 Masquerading
6.2 Clov NAT
6.2.1 Pesmrovvn
6.4 Mapovn detailn
6.4.1 Vbr rozsahu adres
6.4.2 Vytven przdnch NAT mapovn
6.4.3 Normln chovn NAT
6.4.4 Implicitn mapovn zdrojovch port
6.4.5 Co se stane kdy NAT sele
6.4.6 Vcensobn mapovn, pekrvn a kolize
6.4.7 Mnn cl lokln vytvench spojen
7. Speciln protokoly
8. Upozornn k NAT
9. SNAT a smrovn
10. DNAT na tu samou s
11. Podkovn
______________________________________________________________________
1. vod
Vtej, ven teni.
Chyst se ponoit do fascinujcho (a nkdy stralivho) svta NAT: Network
Address Translation a tento HOWTO je nco jako tvj nvod k jdru Linuxu
2.4 a mon i dle.
V Linuxu 2.4 byla pedstavena nov infrastruktura pro zen paket, nazvan
`netfilter'. NAT zprostedkovv vrstvu nad touto infrastrukturou,
kompletn pepracovanou od minulch verz jdra.
(C) 2000 Paul `Rusty' Russell. Licenced under the GNU GPL.
(C) 2001 Ivo Raisr. esk verze. Licenced under the GNU GPL.
2. Kde me najt oficiln WWW strnky a konferenci?
Existuj ti oficiln msta:
o Dky Filewatcher .
o Dky The Samba Team and SGI .
o Dky Harald Welte .
Oficiln potovn konference: Netfilter List
.
2.1. Co to je Network Address Translation?
Normln putuj pakety st ze zdroje (napklad z tvho potae) ke svmu cli
(napklad www.gnumonks.org) mnoha rznmi uzly: piblin devatencti z mho
msta v Austrlii. dn z tchto mezilehlch uzl nic nemn, jen pakety posl
dle.
Jestlie jeden z tchto uzl provd NAT (peklad sovch adres), pak me bt
zmnn zdroj nebo cl paketu, kter tmto uzlem prochz. Urit si domysl, e
toto nen zpsob, jakm by ml systm pracovat; NAT je tud nco mezi.
Obvykle si uzel provdjc NAT pamatuje, jakm zpsobem zmnil paket, a zptn
modifikuje ty pakety, kter prochz nazptek, take ve funguje tak, jak m.
2.2. Pro mm chtt NAT?
V dokonalm svt nemus. V mezidob jsou hlavnmi dvody:
Modemov pipojen k Internetu
Vtina Internetovch poskytovatel ti poskytne pro pipojen jednu IP
adresu. Me odeslat pakety s libovolnou zdrojovou adresou, ale
budou se ti vracet jen odpovdi na pakety s touto pidlenou IP
adresou. Jestlie chce pipojit vce rznch pota (domc s) k
Internetu pomoc tohoto jednoho uzlu, potebuje NAT.
Toto je dnes nejbnj pouit NAT, v Linuxovm svt bn nazvan
`masquerading'. Nazvm jej SNAT, protoe mn zdrojovou (`source')
adresu prvnho paketu.
Vce server
Nkdy chce zmnit, kam budou smovat pakety pichzejc do tv st. asto
je to protoe (viz ve) m jedinou IP adresu, ale chce, aby se lidi
zven dostali k tvm potam schovanm za tm jedinm se `skutenou' IP
adresou. To lze provst, pokud bude pepisovat cl pchozch paket.
Tento druh NAT byl nazvn port-forwarding v pedchozch verzch
Linuxu.
Bnou variantou je rozloen zaten (load-sharing), pi kterm je
mapovn rozloeno na mnoinu pota. Mon pro tebe bude stt za to se
podvat na
Linux Virtual Server , pokud
zaml provdt load-sharing ve vtm mtku.
Transparentn proxy
Nkdy me chtt, aby kad paket, kter prochz tvm Linuxovm potaem,
byl uren pro njak program na tomto potai. Takto se dl
transparentn proxy: proxy je program uprosted, kter zprostedkovv
komunikaci mezi tvou st a okolnm svtem. Transparentn proto, e tv
s vbec nev, e komunikuje s proxy (ovem za pedpokladu, e proxy
funguje).
Squid me bt takto nakonfigurovn, v pedchozch verzch Linuxu to
bylo nazvno pesmrovn (redirection) nebo transparentn proxy.
3. Dva druhy NAT
Rozdluji NAT na dva rzn druhy: Zdrojov NAT (SNAT) a Clov NAT (DNAT).
Kdy modifikuje zdrojovou adresu prvnho paketu, pak je to Zdrojov NAT -
napklad mn zdroj vysln. Zdrojov NAT je vdy provdna a po dokonen
smrovn, tsn pedtm ne je paket vysln po drtech. Masquerading je speciln
forma SNAT.
Kdy modifikuje clovou adresu prvnho paketu, pak je to Clov NAT -
napklad mn cl. Clov NAT je vdy provdna ped zapoetm smrovn, tsn po
pijet paketu z drt. Port-forwarding, load-sharing a transparentn
proxy jsou speciln formou DNAT.
4. Rychl pestup z 2.0 a 2.2 jdra
Sorry vem, kte jsou stle jet okovni pechodem z 2.0 (ipfwadm) na 2.2
(ipchains). Jsou zde dobr a patn zprvy.
Za prv, me pouvat ipchains a ipfwadm stejn jako pedtm. Abys je mohl
pouvat, mus nejprve zavst moduly jdra `ipchains.o' nebo `ipfwadm.o',
kter najde v posledn distribuci netfilter. Tyto moduly se vzjemn
vyluuj (byl jsi varovn) a nemly by bt kombinovny s dnmi jinmi moduly
netfilteru.
Jakmile je jeden z tchto modul zaveden, me pouvat ipchains a ipfwadm
zcela bnm zpsobem, pouze s tmito odlinostmi:
o Nastaven masquerading timeout pomoc ipchains -M -S nebo ipfwadm -M
-s nic nedl. Nevad to, jeliko timeouty pro novou NAT infrastrukturu
jsou del.
o Poloky init_seq, delta a previous_delta v ukecanm masquerading
vpisu jsou vdy nulov.
o Nulovn a vpis ta najednou pomoc `-Z -L' u dle nefunguje: tae
nebudou vynulovny.
o Zptn kompatibiln vrstva nen dobe klovateln pro velk poet spojen -
nepouvej ji na exponovanm mst!
Pro hackery:
o Me se nyn navzat na porty 61000-65095 i kdy provd masquerading. Kd
pro masquerading byl zvykl povaovat vechny porty v tomto rozmez za
voln, take je programy nemohly pouvat.
o Ji nefunguje (nedokumentovan) `getsockname' hack, pomoc kterho
programy pouvajc transparentn proxy mohly zjistit skuten cl spojen.
o Tak (nedokumentovan) hack `bind-to-foreign-address' ji nen
implementovn. Ten byl pouvn k dovren iluze transparentn proxy.
4.1. Chci jen masquerading! Pomoc!
To chce vtina. Jestlie m dynamicky pidlenou IP adresu PPP pipojen
(pokud nev, tak jsi to ty), chce prost sdlit svmu potai, e vechny
pakety pochzejc z tv vnitn st maj vypadat jako by pochzely z potae s
PPP pipojenm.
# Zavst NAT modul (to zavede vechny ostatn).
modprobe iptable_nat
# V tabulce NAT (-t nat) pipoj pravidlo (-A), e po dokonen smrovn
# (POSTROUTING) m bt u vech paket odchzejc z ppp0 (-o ppp0) provdno
# MASQUERADE spojen (-j MASQUERADE).
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# Zapnut IP forwardovn
echo 1 > /proc/sys/net/ipv4/ip_forward
Povimni si, e neprovd dn filtrovn paket: k tomu si peti Packet
Filtering HOWTO: `Mixing NAT and Packet Filtering'.
4.2. A co ipmasqadm?
Neobtoval jsem se tolik se zachovnm zptn kompatibility, protoe je to
velmi choulostiv vc. Pro port forwarding me jednodue pout `iptables -t
nat'. Tedy napklad v Linuxu 2.2 me mt:
# Linux 2.2
# Smruj TCP pakety z 1.2.3.4, port 8080 na 192.168.1.1, port 80
ipmasqadm portfw -a -P tcp -L 1.2.3.4 8080 -R 192.168.1.1 80
Nyn bys ml mt:
# Linux 2.4
# Pipoj pravidlo ped smrovnm (-A PREROUTING) do NAT tabulky (-t nat), e
# TCP pakety (-p tcp) z 1.2.3.4 (-d 1.2.3.4) port 8080 (--dport 8080)
# maj cl mapovn (-j DNAT) na 192.168.1.1, port 80
# (--to 192.168.1.1:80).
iptables -A PREROUTING -t nat -p tcp -d 1.2.3.4 --dport 8080 \
-j DNAT --to 192.168.1.1:80
5. zen provdn NAT
Potebuje vytvoit pravidla pro NAT, kter eknou jdru, jak spojen a jakm
zpsobem se maj zmnit. K tomu se pouv velmi vestrann nstroj iptables s
pepnaem `-t nat' pro modifikaci NAT tabulky.
Tabulka pravidel NAT obsahuje ti seznamy nazvan `etzy' (`chains');
pravidla jsou postupn zkoumna, dokud se nenalezne njak vyhovujcc. Dva
etzy jsou nazvan PREROUTING (ped smrovnm, pro Clovou NAT) a
POSTROUTING (po smrovn, pro Zdrojovou NAT).
Nsledujc obrzek by to ml celkem dobe osvtlit, kdybych ml njak umleck
nadn:
_____ _____
/ \ / \
PREROUTING -->[Smrovn ]----------------->POSTROUTING----->
\D-NAT/ | \S-NAT/
| ^
| |
| |
| |
| |
| |
| |
--------> lokln proces -----
Jak paket prochz, u kadho bodu (viz ve) se nejdve najde, s kterm
spojenm je asociovn. Jestlie jde o nov spojen, nalezne se odpovdajc
etz v NAT tabulce a zkoum se, co se dle provede. Pokud se bude nco
provdt, bude to ovlivovat vechny nsledujc pakety.
5.1. Jednoduch vbr s pouitm iptables
iptables m velk mnostv pepna, kter jsou uvedeny dle. Vechny pepnae s
dvojitou pomlkou mohou bt zkrceny pokud je zachovna jednoznanost.
Pokud je podpora iptables zabudovna v jde jako modul, mus se tento
modul nejdve zavst: `insmod ip_tables'.
Nejdleitjm pepnaem je vbr tabulky, `-t'. Pro vechny operace s NAT
tabulkou tedy pouvej `-t nat'. Druhm nejdleitjm pepnaem je pouit `-A'
k pipojen pravidla na konec etzu (nap. `-A POSTROUTING') nebo vloen
pravidla na zatek (nap. `-I PREROUTING').
Me zadat zdroj (`-s' nebo `--source') a cl (`-d' nebo `--destination')
paket, na kter chce aplikovat NAT. Za tmito volbami me bt jedin IP
adresa (nap. 192.168.1.1), jmno (nap. www.gnumonks.org) nebo adresa st
(nap. 192.168.1.0/24 nebo 192.168.1.0/255.255.255.0).
Me zadat vstupn (`-i' nebo `--in-interface') nebo vstupn (`-o' nebo
`--out-interface') rozhran, kter m odpovdat. Zle ale na etzu, do
kterho dv pravidlo: u PREROUTING etzu me zadat pouze vstupn rozhran, u
POSTROUTING etzu pak vstupn rozhran. Jestlie zad patn rozhran,
iptables zahls chybu.
5.2. Jemnj lenn paket pro modifikaci
Jak jsem ji ekl, me zadat zdrojovou a clovou adresu. Jestlie vynech
pepna se zdrojovou adresou, pak budou odpovdat vechny zdrojov adresy.
To sam plat i pro clovou adresu.
Me tak oznait specifick protokol (`-p' nebo `--protocol') jako TCP i
UDP; jen pakety tohoto protokolu budou odpovdat pravidlu. Monost zadn
dalch specilnch pepna je hlavnm dvodem, pro zadat protokol: speciln me
zadat zdrojov port (`--source-port' nebo `--sport') a clov port
(`--destination-port' nebo `--dport').
Tyto pepnae ti umon zadat pravidlo, ktermu budou odpovdat jen pakety s
uritmi zdrojovmi a clovmi porty. To je uiten pro pesmrovvn WWW poadavk
(TCP port 80 nebo 8080), zatmco s ostatnmi pakety se nic nedje.
Tyto pepnae mus nsledovat pepna `-p' (co m vedlej efekt zaveden sdlen
roziujc knihovny pro tento protokol). Me ut sla port nebo jmno portu
ze souboru /etc/services.
Vechny rozlin cesty, ktermi me vybrat paket, jsou velmi detailn popsny
v manulovch strnkch (man iptables).
6. Jak modifikovat pakety
Te u tedy vme, jak vybrat pakety, kter se budou modifikovat. K dokonen
naeho pravidla zbv ci jdru co pesn chceme s tmito pakety provdt.
6.1. Zdrojov NAT
Chce provdt SNAT, tzn. mnit zdrojovou adresu spojen na njakou jinou.
To se dl v POSTROUTING etzu, tsn pedtm ne je paket konen vysln. To je
velice dleit detail; znamen to, e cokoliv dalho (smrovn, filtrovn
paket) na samotnm Linuxovm potai bude pracovat s nezmnnm paketem.
Znamen to tak, e me bt pouit pepna `-o' (vstupn rozhran).
Zdrojov NAT je zadna pouitm `-j SNAT' a pepna `--to-source' uruje IP
adresu, rozsah IP adres a ppadn port nebo rozsah port (jen pro
protokoly TCP a UDP).
## Zm zdrojov adresy na 1.2.3.4
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4
## Zm zdrojov adresy na 1.2.3.4, 1.2.3.5 nebo 1.2.3.6
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4-1.2.3.6
## Zm zdrojov adresy na 1.2.3.4, porty 1-1023
# iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to 1.2.3.4:1-1023
6.1.1. Masquerading
Masquerading je speciln ppad SNAT a mlo by bt pouito jen pro dynamicky
pidlovan IP adresy, jako napklad standardn telefonn vyten (pro statick
IP adresy pouij SNAT viz ve).
Pro masquerading nemus explicitn urovat zdrojovou adresu: pouije se
zdrojov adresa rozhran, ze kterho odchz paket. Dleitj je ovem fakt, e
kdy spadne linka, tak jsou spojen (kter jsou tak jako tak stejn
ztracena) zapomenuta, co znamen mn ruivch zmn jakmile je spojen opt
nahozeno s novou IP adresou.
## Provdj masquerading na vem, co odchz z ppp0
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
6.2. Clov NAT
Provd se v PREROUTING etzu, ihned jakmile je paket pijat. Znamen to,
e cokoliv dalho (smrovn, filtrovn paket) na samotnm Linuxovm potai
bude pracovat se `skutenm' clem. Znamen to tak, e me bt pouit pepna
`-i' (vstupn rozhran).
Clov NAT je zadna pouitm `-j DNAT' a pepna `--to-destination' uruje IP
adresu, rozsah IP adres a ppadn port nebo rozsah port (jen pro
protokoly TCP a UDP).
## Zm clov adresy na 5.6.7.8
# iptables -t nat -A PREROUTING -i eth0 -j DNAT --to 5.6.7.8
## Zm clov adresy na 5.6.7.8, 5.6.7.9 nebo 5.6.7.10.
# iptables -t nat -A PREROUTING -i eth0 -j DNAT --to 5.6.7.8-5.6.7.10
## Zm clov adresy WWW na 5.6.7.8, port 8080.
# iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 \
-j DNAT --to 5.6.7.8:8080
6.2.1. Pesmrovvn
Pesmrovvn je specilnm ppadem DNAT a je to ist jen konvence, protoe je
navlas stejn s provdnm DNAT na adresu vstupnho rozhran.
## Poslej pchoz pakety s portem 80 (WWW) na nai transparentn proxy
## (squid)
# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 \
-j REDIRECT --to-port 3128
Nezapome, e squid mus bt nakonfigurovn jako transparentn proxy!
6.3.
6.4. Mapovn detailn
S nkter jemnstkami NAT vtina lid vbec nepijde do styku. Jsou zde
zdokumentovny pro zvdav.
6.4.1. Vbr rozsahu adres
Jestlie je zadn rozsah IP adres, pak IP adresa, kter se pouije, je
vybrna na zklad nejmn pouvan IP adresy pro potai znm spojen. Dosahuje
se tm primitivnho rozloen zaten.
6.4.2. Vytven przdnch NAT mapovn
Me pout `-j ACCEPT', co propust spojen bez dalho provdn NAT.
6.4.3. Normln chovn NAT
Pedem nastaven chovn je mnit spojen co mon nejmn, s dodrovnm omezen,
kter pravidly zadal uivatel. To znamen, e se nepemapovvaj porty (dokud
se nemus).
6.4.4. Implicitn mapovn zdrojovch port
I kdy pro spojen nen poadovno provdn NAT, me nastat peklad zdrojovch
port, jestlie jin spojen bylo mapovno pes nov. Uva ppad s
masquerading, kter je celkem bn:
1. WWW spojen je navzno z njakho potae 192.1.1.1, port 1024 na
www.netscape.com, port 80.
2. Na toto spojen je aplikovno masquerading pomoc Linuxovho potae tak,
aby pouvalo jeho zdrojovou IP adresu (1.2.3.4).
3. Linuxov pota nave spojen s www.netscape.com, port 80 z 1.2.3.4
(adresa vstupnho rozhran), port 1024.
4. NAT zmn zdrojov port druhho spojen na 1025, aby spolu nekolidovala.
Pokud nastane implicitn mapovn zdrojovch port, tak jsou porty rozdleny
do t td:
o Porty pod 512,
o porty mezi 512 a 1023
o porty nad 1024 vetn.
Port nebude nikdy implicitn mapovn do jin tdy.
6.4.5. Co se stane kdy NAT sele
Jestlie nen dn monost, jak jednoznan namapovat spojen na uivatelovu
dost, je spojen zahozeno. To tak plat pro pakety, kter nemohou bt
piazeny k dnmu spojen, a u kvli jejich pokozen nebo pro nedostatek
pamti potae apod.
6.4.6. Vcensobn mapovn, pekrvn a kolize
Mohou existovat pravidla NAT, kter mapuj pakety do toho samho rozsahu;
kd NAT je natolik chytr, aby zabrnil kolizm. Tud dv pravidla, kter
mapuj zdrojovou adresu 192.168.1.1 a 192.168.1.2 na 1.2.3.4 jsou v
podku.
Co vce, me mapovat pes opravdov, pouvan IP adresy tak dlouho, dokud
tyto adresy projdou pes mapovac pota. Tedy, pokud m piazenou s
(1.2.3.0/24), ale jedna vnitn s pouv tyto adresy a druh privtn
Internetov adresy 192.168.1.0/24, me aplikovat NAT ze zdrojovch adres
192.168.1.0/24 na s 1.2.3.0 bez obav z koliz:
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 \
-j SNAT --to 1.2.3.0/24
Podobn postup plat i pro adresy pouvn samotnm NAT potaem: to je zpsob,
jakm pracuje masquerading (sdlenm adresy rozhran mezi `opravdovmi
'pakety z NAT potae a pakety, na kter bylo provedeno masquerading).
Dle me mapovat ty sam pakety na mnoho rznch cl s tm, e budou sdlen.
Pokud nechce napklad mapovat nic na 1.2.3.5, me zadat:
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 \
-j SNAT --to 1.2.3.0-1.2.3.4 --to 1.2.3.6-1.2.3.254
6.4.7. Mnn cl lokln vytvench spojen
NAT ti dovoluje vloit pravidla DNAT do vstupnho etzu, co ale nen pln
podporovno v 2.4 (me bt, vyaduje to ale nov pepnae, trochu testovn a
trochu vt kus programovn, take dokud se nkdo nedohodne s Rustym,
neoekval bych to brzy).
Souasnm omezenm je nemonost zmnit cl na jin potae ne localhost (tedy
`-j DNAT --to 127.0.0.1'), protoe jinak jsou odpovdi patn pekldny.
7. Speciln protokoly
Nkter protokoly nemaj rdy, pokud se na n aplikuje NAT. Pro kad z tchto
protokol mus bt napsna dv rozen: jedno pro sledovn spojen protokolu a
druh pro samotn NAT.
V distribuci netfilteru jsou zatm moduly pro ftp: ip_conntrack_ftp.o a
ip_nat_ftp.o. Pokud tyto moduly zavede do jdra (nebo je do jdra
zakompiluje), pak by mlo pracovat jakkoli NAT na ftp spojen. Pokud
tyto moduly nepouije, me pout pouze pasivn ftp a i to nemus fungovat
spolehliv jestlie provd sloitj SNAT.
8. Upozornn k NAT
Pokud aplikuje na spojen NAT, vechny pakety, kter prochzej obma smry
(do a ze st), mus prochzet NAT potaem, jinak to nebude spolehliv
fungovat. Pedevm, kd pro sledovn spojen sestavuje fragmenty paket, co
znamen, e nejen sledovn spojen nebude spolehliv, ale i e pakety samotn
nemusej vbec projt kvli odmtnutm fragmentm.
9. SNAT a smrovn
U SNAT mus dodret to, e kad pota mus na SNAT pakety odpovdat zpt
potai, kter tyto pakety vyslal. Napklad mapuje njak odchoz pakety na
zdrojovou adresu 1.2.3.4. Pak venkovn smrova mus vdt, e odpovdi (kter
maj cl 1.2.3.4) mus poslat zpt tomuto potai. Toto se d provst
nsledujcmi zpsoby:
1. Pokud provd SNAT na vlastn adresu potae (pro kterho smrovn a vechno
ostatn u pracuje), nemus dlat nic.
2. Pokud provd SNAT na nepouvanou adresu na lokln sti (napklad mapuje
na 1.2.3.99, volnou adresu na sti 1.2.3.0/24), mus tvj NAT pota
odpovdat na ARP dosti pro tyto adresy stejn tak jako pro svoj.
Nejjednodu je vytvoit IP alias, nap.:
# ip address add 1.2.3.99 dev eth0
3. Pokud provd SNAT na pln odlinou adresu, mus zajistit, aby potae,
kter obdr SNAT paket, smrovaly tuto adresu zpt k NAT potai. To je
splnno, pokud je NAT pota pednastaven brna (gateway). Jinak mus
propagovat cestu (pokud pouv smrovac protokol) nebo run pidat cesty
na kad takto `postien' pota.
10. DNAT na tu samou s
Pokud provd portforwarding zpt na tu samou s, mus zajistit, aby vechny
nsledujc pakety i odpovdi na n prochzely NAT potaem (aby mohly bt
zmnny). Kd NAT nyn (od verze 2.4.0-test6) dovoluje blokovat odchoz
ICMP pesmrovn, kter je vyslno pokud NAT paket odchz tm samm rozhranm,
kterm piel, a server stle zkou odpovdat pmo klientovi (kter nerozpozn
odpov).
Klasickm ppadem je kdy vnitn potae zkou pistoupit k `veejnmu' WWW
serveru, na kterm je ale provdno DNAT z veejn adresy (1.2.3.4) na
vnitn pota (192.168.1.1):
# iptables -t nat -A PREROUTING -d 1.2.3.4 \
-p tcp --dport 80 -j DNAT --to 192.168.1.1
Jeden zpsob je rozbhnout DNS server, kter zn opravdovou (vnitn) IP
adresu veejnho WWW serveru a smrovat vechny ostatn dosti na vnj DNS
server. To znamen, e na WWW serveru se budou vnitn IP adresy
zobrazovat sprvn.
Pi druhm zpsobu NAT pota mapuje tak zdrojovou IP adresu na svoji
vlastn pro tato WWW spojen a klame tak server tm, e skrz nj odpovd. V
tomto pklad pedpokldme, e IP adresa NAT potae je 192.168.1.250:
# iptables -t nat -A POSTROUTING -d 192.168.1.1 -s 192.168.1.0/24 \
-p tcp --dport 80 -j SNAT --to 192.168.1.250
Protoe PREROUTING pravidlo se zkoum jako prvn, pakety budou ji ureny
pro vnitn WWW server a meme tak urit, kter z nich maj vnitn zdrojovu
adresu.
11. Podkovn
Rd bych podkoval pedevm firm WatchGuard a Davidu Bonnovi, kter vil v
ideu netfilteru natolik, e m podporoval v m prci.
Tak vem ostatnm, kte klidn sneli moje nadvky, kdy jsem objevoval
karedosti NAT, a obzvlt tm, kte peetli mj denk.
Rusty.