presmerovani stanic

Peter Surda shurdeek na routehat.org
Čtvrtek Únor 17 11:21:13 CET 2005


On Thu, Feb 17, 2005 at 09:17:12AM +0000, Matus UHLAR - fantomas wrote:
> Peter Surda <shurdeek na routehat.org> wrote:
> > V linku, ktory si poslal:
> > http://www.faqs.org/docs/Linux-mini/TransparentProxy.html#s6
> > sa pise presne to, co hovorim: pri pouziti DNAT potrebujes aj SNAT a len pri
> > pouziti ip route je to "ozajstna" transparencia.
> pri pouziti "ip route" neziskas ziadnu transparenciu. pouzitim "ip route"
> iba nastavis kernelovu routovaciu tabulku, presnejsie prikazes kernelu aby
> pakety smeroval cez nejaku tabulku na nejaky interface.
Nepresne som sa vyjadril. Netvrdim, ze "ip route" je dostatocna podmienka, ale
nutna (hmm, vlastne ani to nie je 100% pravda, viem si teoreticky predstavit
aj iny sposob, chcem len ukazat rozdiel medzi 2ma povodnymi rieseniami). Pri
presmerovani cez DNAT sa v pakete prepise cielova adresa, a akonahle je paket
poslany dalej, uz sa neda zistit. Pri "ip route" je paket routovany (bez
NAT-u) alebo redirectnuty (pomocou ICMP redirect) v zavislosti od roznych
nastaveni, ale zostava povodna cielova adresa.

Povodna cielova adresa je za istych okolnosti potrebna, aby transparentny
proxy korektne fungoval. Pri korektnom pouziti HTTP sice potrebna viacmenej
nie je, ale vsetci vieme, ako to v praxi s "korektnostou" chodieva ;-). Pri
SMTP tiez za jednoduchych okolnosti potrebna nie je (ozajstny transparentny
SMTP proxy aj tak nepoznam), ale napr. na ftp alebo irc ju urcite potrebujes.
Skus si na proxy servri spustit tircproxy alebo jftpgw v transparentnom mode a
presmeruj tam z routra prislusne porty cez DNAT. Uvidis, ze to nebude
fungovat.

Okrem toho, pri pouziti DNAT+SNAT sa z logov neda vycitat zdrojova adresa. Da
sa to obist vhodnym nastavenim routovacej tabulky na proxy, potom mozes SNAT
na routri vypnut.

> dolezite prikazy, ktorymi sa tam nastavuje samotna transparentnost, su na
> tej adrese pred "ip route".
mmm, nerozumiem presne, co myslis. Nediskutovali sme o tom nahodou uz raz?
Transparentnost nenastavujes. Mozes sa jedine rozhodnut, ci prepises cielovu
adresu alebo nie. Ked nie (alebo proxy a router su ta ista masina), ma proxy
moznost, ak to podporuje, transparentnost plne vyuzit, konkretne cez
getsockopt (SOL_IP, SO_ORIGINAL_DST) ziskat povodnu cielovu adresu (a port).
Ak tu adresu prepises a paket posles dalej, tuto moznost stracas. V zavislosti
od protokolu to vadit nemusi, konkretne ako som pisal pri HTTP je to ok, lebo
sa cielova adresa zisti z headeru Host, ktory by mal byt povinny.

> Matus UHLAR - fantomas, uhlar na fantomas.sk ; http://www.fantomas.sk/
S pozdravom,

Peter Surda (Shurdeek) <shurdeek na routehat.org>, ICQ 10236103, +436505122023

-- 
            It is easier to fix Unix than to live with NT.


Další informace o konferenci Linux