DNAT problem

Petr Šimeček petr na diakoniecce.cz
Neděle Květen 26 02:32:08 CEST 2002


Dobrý den,

rozumí tomu tak, že máte server A, který dělá NAT pro vnitřní síť. V této
síti leží počítač, na němž běží WEB server. Nicméně je bindovaný na port
8888. Vy chcete, aby požadavek na port 80 byl přesměrován do vnitřní sítě.


Musíte splnit tyto body:

V table filter provedete toto:
#pro forward z eth0 do eth1 povolim prichozi porty
/sbin/iptables -A ETH0-ETH1 -p tcp -m multiport --dport 22,80 -j ACCEPT
#server v LAN muze kompletne ven (input chain na eth1)
/sbin/iptables -A IN_ETH1 -s 172.20.1.10 -j ACCEPT
#ze serveru "A" je lokalne generovany traffic povolen
/sbin/iptables -A OUT_ETH1 -d 172.20.1.10 -j ACCEPT
#na input chain z venkovni site (eth0) pustim jen navazana spojeni) *
/sbin/iptables -A IN_ETH0 -m state --state ESTABLISHED,RELATED -j ACCEPT

V table nat provedu toto:
#SNAT na odchozi traffic
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 172.20.1.0/24 -j SNAT --to
195.144.ooo.ooo
#samotny portforwarding je toto
/sbin/iptables -t nat -A PREROUTING -p tcp -d 195.144.ooo.ooo --dport 22 -j
DNAT --to 172.20.1.10:22
/sbin/iptables -t nat -A PREROUTING -p tcp -d 195.144.ooo.ooo --dport 80 -j
DNAT --to 172.20.1.10:8888

*Jelikoz je prerouting bran v potaz pred pohledem do routovacich tabulek, je
potreba prvni paket (nez dojde k samotnemu prekladani) pustit ve forwardu.
Odpoved na tento prvni paket je prelozena s NAT table pomoci SNAT pravidla.
Lze se tedy na provoz divat jako dovnitr plynule, ven rozbite :)

Musite jeste splnit podminku, ze pustite forward zevnitr ven. Stejnetak neni
nutne provadet preklad pri vstupu dat do site. Dulezite je "nahradit"
odchozi traffic, ktery by mel mit v LAN lokalni IP range. Pokud pouzijete
jine nez domluvene rozsahy adres (192.168.0.0/24-192.168.255.255/24,
172.16.0.0/16-172.32.0.0/16,10.0.0.0/8-10.255.255.255/8), muze se stat, ze
budete chtit nacist www.blabla.com a toto bude mit IP z vasi site. Potom
dojde k situaci, ze se na zdroje teto site nedostanete. Zhruba pred rokem
bylo www.rem.com prekladano na 127.0.0.1 - a koukal byste, co to delalo
(pokud klient v LAN nemel mit pristup na WEB v LAN a pouzil proxy bezici na
tomto serveru,... sup, a uz to videl - proxy si nechala domenu prelozit a
stahla data z loopbacku (nebezely tam virtualni weby)).

Takto by to melo fungovat. Jiste to lze optimalizovat, ale... :)

Petr Simecek

P.S. Mate spatne celou stavbu prikazu.

Milan Šorm <sorm na pef.mendelu.cz> píše v diskusním
příspěvku:20020525223057.GX14702 na akela.mendelu.cz...
> Thu, Jul 19, 2001 ve 10:44:42AM +0200 Michal Rysavy napsal(a):
> # Potreboval bych presmerovat prichozi pozadavky z firewallu portu 80 na
> # vnitrni pocitac port 8888 pomoci iptables (kernel 2.4.3).
> # Mnou vytvorena konfigurace mi nefunguje - na http server se vubec
nedostane.
> # Co delam spatne ?
> #
> # S pozdravem Michal Rysavy
> # -A PREROUTING -d xxx.xxx.xxx.xxx -i eth0 -p tcp -m tcp --dport 80 -j
> # DNAT --to-destination 125.1.1.1:8888
> # -A POSTROUTING -s 125.1.1.0/255.255.255.0 -j MASQUERADE
>
> ja to delam tam pomoci DNAT a zpetne pomoci SNAT. Protoze (alespon co jsem
> pochopil) MASQ je kombinace DNAT + SNAT + tabulky pres jake porty a adresy
> se ty NATy delaly - a vy tu v postroutingu resite masq, coz mi tu neprijde
> uplne idealni. ale je mozne ze v tomto konkretnim pripade to bude funkcni
> (alespon kdyz jsem si predstavil par paketu, tak jsem nenasel problem).
>
> --m.s.





Další informace o konferenci Linux