Neduvera v princip iptables + transparentni proxy

d.petr d.petr na post.cz
Sobota Únor 28 15:00:50 CET 2009


Dalibor Straka wrote:
> On Sat, Feb 28, 2009 at 01:53:01AM +0100, d.petr wrote:
>> Dobrý večer/den,
>> narazil jsem na věc, pro kterou nemám vysvětlení. Tvrdí se, že pro 
>> transparentní proxy stačí napsat např.:
>> iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT 
>> --to-port 3128
>> Ono to podle všeho funguje (když na portu čeká proxy), ale! Jak to, že 
>> to funguje? Když pošlu požadavek na web z PC vnitřní sítě, je cílem 
>> paketu internetová_adresa:80. Po průchodu uvedeným pravidlem by (podle 
>> mne) měla být cílem internetová_adresa:3128. Kdybych chtěl změnit i 
>> cílovou adresu, musel bych to do pravidla připsat. Jak je tedy možné, že 
>> paket s cílovou adresou "internetová_adresa" skončí uvnitř routeru v 
>> jakémsi programu, třeba squid?? Znamená to snad, že při chybějící adrese 
>> ji dnat vždy mění na localhost? To je přeci blbost, tak to není. Vždyť 
>> nat mění pakety co nejméně (jsem se kdysi někde dočetl).
>>
>> Dokážete mi to, prosím, někdo vysvětlit tak, abych uvěřil a neměl 
>> pochybnosti? :-)
>>
> 
> man iptables
>     REDIRECT
>         ...... It  redirects  the  packet  to the machine
>         itself by changing the destination IP to the primary address of
>         the incoming interface .....
> -- Dalibor Straka

	Jej!? Velice Vám děkuji, ani nevíte, jakou jste mi udělal radost. Ano, 
REDIRECT není DNAT, za co jsem ho bůhvíproč pořád považoval (a neomlouvá 
mne, že jsem to zkoumal na Mikrotiku, který ve firewallu používá různá 
svoje slovíčka a označení).
	Iptables tedy nemusím řadit mezi nevyzpytatelné nástroje, což mne 
opravdu těší. :-)
	Ještě jednou děkuji. (a příště bych měl jít radši dřív spát, možná bych 
pak nepokládal takovéto dotazy)

Petr



Další informace o konferenci Linux