Portál AbcLinuxu, 5. května 2025 21:48

Dotaz: NAT redirect "gotcha"

Gilhad avatar 4.2.2008 23:36 Gilhad | skóre: 20 | blog: gilhadoviny
NAT redirect "gotcha"
Přečteno: 698×
Odpovědět | Admin
Potreboval bych docasne zprovoznit webserver na vnitrni siti tak, aby chodil pro vnejsi sit. To samo o sobe neni problem zaridit podle

http://www.abclinuxu.cz/faq/site/jak-zprovoznit-verejnou-ip-adresu-ve-vnitrni-siti-nebo-dmz

Z vnejsku je viditelny a funguje jak ma. Problem nastane, kdyz ho potrebuju testovat i zevnitr a pritom zatim nemam DMZ, tak narazim na NAT redirect "gotcha" (viz posledni odstavec) a nedari se mi udelat tahle cast:

Druhým řešením je nechat sice pakety putovat přes gateway, ale kromě cílové adresy jim přeložit i zdrojovou (na její vnitřní adresu, podobně jako u maškarády).

nejak se porad zamotavam do tech pravidel a nevim kudy ven ...

iptables -t nat -I  PREROUTING 1 -i eth0 -d 84.x.y.z  -j DNAT --to-destination 192.168.1.7 
by melo zajistit poslani packetu z vnitrni site (eth0) jdoucich na mou vnejsi adresu (84.x.y.z) na dotycny webserver uvnitr (92.168.1.7)

Ale uz nevim, jak udelat, aby tyto packety zaroven mely prelozenou zdrojovou adresu na tu vnejsi ...

Mohl by mi nekdo poradit ten chybejici krok? Dekuji predem.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

5.2.2008 00:30 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: NAT redirect "gotcha"
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ale uz nevim, jak udelat, aby tyto packety zaroven mely prelozenou zdrojovou adresu na tu vnejsi

S vnější by to nejspíš fungovalo také, ale praktičtější je použít vnitřní. Mělo by to vypadat asi takto:

  iptables -t nat -A POSTROUTING -i eth0 -s $INTNR -d 192.168.1.7 -j SNAT --to $INTIP

kde INTNR je rozsah vnitřní sítě (např. 192.168.1.0/24) a INTIP vnitřní adresa toho stroje, na kterém to překládáte (např. 192.168.1.1). Je to celkem jednoduché, jen je potřeba si uvědomit, že POSTROUTING se aplikuje až po PREROUTING, takže v něm už je cílová adresa přeložená.

Řešení 1× (Gilhad (tazatel))
Gilhad avatar 5.2.2008 12:01 Gilhad | skóre: 20 | blog: gilhadoviny
Rozbalit Rozbalit vše Re: NAT redirect "gotcha"
Diky moc, uz to chodi ... jeste jsem mel nejake zadrhele s forwardovanim (co neni povoleno je zakazano a forwardovani z vnitrni do vnitrni povoleno explicitne nebylo, ale ted uz vse funguje spravne)

s vnitrni adresou se mi to nejdriv nedarilo, tak jsem to zkusil s tou vnejsi a pak jsem povolil to forwardovani a zaclo to chodit, tak uz jsem to tak nechal

takze to vypada asi takto (ta dulezita pravidla)

-t nat -A PREROUTING -d 84.x.y.z -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.7 
-t nat -A POSTROUTING -s 192.168.1.0/255.255.255.128 -d 192.168.1.7 -j SNAT --to-source 84.x.y.z

-A FORWARD -i eth0 -o eth0 -p tcp -m tcp --sport 80 -j ACCEPT 
-A FORWARD -i eth0 -o eth0 -p tcp -m tcp --dport 80 -j ACCEPT 

-A FORWARD -i eth1 -o eth0 -p tcp -m tcp --dport 80 -j ACCEPT # pristup zvenku

Řešení 1× (Gilhad (tazatel))
Gilhad avatar 11.10.2012 16:15 Gilhad | skóre: 20 | blog: gilhadoviny
Rozbalit Rozbalit vše Re: NAT redirect "gotcha"
Ještě jedno doplnění, až to zase budu hledat:

Nastavení: mám gitserver (naslouchá na 22 - ssh) kam se hlásí lidi jak z venkovní sítě, tak z vnitřní.

Mám Wrták, což je gateway/firewall/NAT s veřejnou adresou ($Wrtak) který přesměrovává port 1212 na gitserver

mám NB, který je střídavě zapojen uvnitř a venku. Na něm mám mraky repozitářů, ve kterých je nastaveno, jak se dostat k serveru. Je potřeba, aby to fungovalo stejně zvenku i zevnitř.

Nastavení:

gitserver: /etc/ssh/sshd UseDNS=no, .ssh/authorized_keys obsahuje verejny klic s NB

NB: /etc/hosts obsahuje "$Wrtak gitserver" (s ip numerickou), tedy gitserver se vzdy resolvuje jako vnejsi IP gateway

~/.ssh/config obsahuje

HOST gitserver
	User git
	IdentityFile ~/.ssh/git.key
kde git.key je soukroma cast klice

Wrtak ma nastaveny firewall takto:


# Gitserver
iptables -t nat -A PREROUTING -i $wan -p tcp -m tcp --dport 1212 -j DNAT --to-destination $gitserver:22 -m comment --comment "1212 -> gitserver" 
iptables -A FORWARD -i $wan -d $gitserver -p tcp -m tcp --dport 22 -j ACCEPT -m comment --comment "1212 -> gitserver"
# zevnitr
iptables -t nat -A PREROUTING -d $Wrtak -p tcp -m tcp --dport 1212 -j DNAT --to-destination  $gitserver:22 -m comment --comment "(zevnitr)1212 -> gitserver"
iptables -t nat -A POSTROUTING -s $lan/16 -d $gitserver -p tcp -m tcp -j SNAT --to-source $Wrtak   -m comment --comment "(zevnitr)1212 -> gitserver"
iptables -A FORWARD -i br-lan1 -o br-lan1 -p tcp -m tcp --dport 22 -j ACCEPT 
iptables -A FORWARD -i br-lan1 -o br-lan1 -p tcp -m tcp --sport 22 -j ACCEPT
iptables -A FORWARD -i br-lan1 -o br-lan1 -p tcp -m tcp --dport 1212 -j ACCEPT 
iptables -A FORWARD -i br-lan1 -o br-lan1 -p tcp -m tcp --sport 1212 -j ACCEPT


Gilhad avatar 11.10.2012 16:19 Gilhad | skóre: 20 | blog: gilhadoviny
Rozbalit Rozbalit vše Re: NAT redirect "gotcha"
jeste doplnek, NB - .git/config obsahuje mimo jine:
url = ssh://git@gitserver:1212/~/projectname
pavlix avatar 11.10.2012 18:05 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: NAT redirect "gotcha"
Ty, to je dlouhodobé řešení, co? :)

Mimochodem, u toho NATu s překládáním obou adres jsem ještě míval problémy s redirecty, tedy že další pakety v komunikaci nešly přes gateway, ale po switchi.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
Gilhad avatar 11.10.2012 22:47 Gilhad | skóre: 20 | blog: gilhadoviny
Rozbalit Rozbalit vše Re: NAT redirect "gotcha"
No, je to nova inkarnace stareho problemu (ted jde o git, predtim to byly webovky) a ja si byl jist, ze jsem to uz nekdy resil. Ale tenkrat se nemenily porty a prvni nastrel mi ted nevysel, tak jsem to sem dal, abych to nemusel za par let zase vymyslet znova, az zase prekopam sit.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.