[linux] Re: Ako zabranit zahlteniu DSL routra

Matus UHLAR - fantomas uhlar na fantomas.sk
Středa Leden 19 11:55:13 CET 2005


> > > Da sa to spravit 2mi sposobmi. Cez NAT alebo redirect. Ja som myslel ten
> > > redirect. Ked to spravis cez NAT, tak proxy nebude vediet, ze ma fungovat ako
> > > transparentny, co moze v istych pripadoch sposobit problemy.

> On Tue, Jan 18, 2005 at 10:44:35AM +0100, Matus UHLAR - fantomas wrote:
> > coby nie. len to proxy serveru musis povedat. Btw povedal by som ze ide o
> > prave ten typ problemov o ktorych tu cely cas hovorim :)

On 18.01 19:14, Peter Surda wrote:
> Ked spravis redirect (na gateway-i ip route a na proxyne iptables -t nat
> -J REDIRECT), tak proxy server (aplikacia) zavola po prijati spojenia na
> socket getsockopt s opsnami SOL_IP, SO_ORIGINAL_DST (linux 2.4+, na
> starsich linuxoch a na *bsd su na to ine funkcie ale vedia to tiez) a
> ten vrati povodnu ip adresu a port, takze proxy vie, ze je to
> transparentne spojenie.

Toto som myslel tym, ze musis proxy serveru povedat, ze je/bude
transparentny. Ked tak pozeram zdrojaky squidu, musis mu to povedat pri
./configure:

  --enable-ipf-transparent
                          Enable Transparent Proxy support for systems
                          using IP-Filter network address redirection.
  --enable-pf-transparent
                          Enable Transparent Proxy support for systems
                          using PF network address redirection.
  --enable-linux-netfilter
                          Enable Transparent Proxy support for Linux 2.4.

#if LINUX_NETFILTER
            /* If the call fails the address structure will be unchanged */
            getsockopt(conn->fd, SOL_IP, SO_ORIGINAL_DST, &conn->me, &sock_sz);
            debug(33, 5) ("parseHttpRequest: addr = %s", inet_ntoa(conn->me.sin_addr));
            if (vport_mode)
                vport = (int) ntohs(http->conn->me.sin_port);
#endif


> Ked spravis NAT (na gateway-i iptables -j DNAT), tak sa paketu cielova
> adresa prepise a horeuvedeny getsockopt vrati IP/port proxy servra,
> takze proxy nevie, ze je to transparentne spojenie. V tom pripade
> spracuje spojenie v netransparentnom mode a ciel sa urci podla headeru
> "Host", ktory sice v HTTP 1.1 povinny je ale v 1.0 nie, aj ked v drvivej
> vacsine pripadov ho clienti posielaju. Ale ked neposlu, vzniknu
> problemy.

aha DNAT, tym padom mi je jasne co si myslel :) Nejak som predtym celkom
nepochopil...

na druhu stranu, nastastie drviva vacsina HTTP klientov podporuje z
HTTP/1.1 aspon ten Host: header, aspon to predpokladam nakolko drviva
vacsina web hostingov poskytuje host-based virtualne weby.

Takze tento problem by sposobil ze tento klient by nevedel ist nikam,
miesto toho aby sa dostaval na defaultne weby jednotlivych IP...

> Teda pri redirekte na proxy dorazi paket, ktory ma IP adresu + port
> cielovej masiny (i.e. webservra). Pri NAT ma ten paket IP adresu + port
> proxy.

V pripade, ze redirectnes na druhy stroj. V pripade lokalneho redirectu
(transparentny proxy bwzi na gatewayi) s tymto problemy nenastavaju
nakolko ICMP redirekty nechodia.

Btw, pouzivas tento redirect, na gatewayi aj proxyne?

CONFIG_IP_NF_TARGET_REDIRECT:

REDIRECT is a special case of NAT: all incoming connections are
mapped onto the incoming interface's address, causing the packets to
come to the local machine instead of passing through.  This is
useful for transparent proxies.

(ktorym prikazom prese kazes routeru posielat ICMP redirecty?)

> > Ale takyto redirect ma iny hacik: pokial stroj s transparentnym proxacom
> > nedokaze routovat, znefunkcnis vsetku ostatnu komunikaciu s danym strojom.

> Prave som si to vyskusal (na "proxyne" echo 0 > /proc/net/ipv4/ip_forward) a
> na redirect to nemalo ziaden vplyv.

Na redirect nie, ale skus ist secure shellom na nejaky stroj a potom sa
pripojit na port 80 toho stroja browserom... divil by som sa ak by ti
nespadlo ssh spojenie. (daj vediet)

> > ICMP redirect totiz na proxy nasmeruje VSETKU komunikaciu pre dany stroj.

> To zavisi od toho, ako sa sprava client. Podla mojich skusenosti sa v praxi
> presmeruje len to, co explicitne presmerujes cez ip route, ostatne ide po
> starom, s vynimkou predtym spomenuteho MSIE.

"len to" znamena len http komunikaciu? Ako som si vcera pozeral RFC792,
ICMP redirect sposobi ze vsetka komunikacia pre IP v nom uvedenu pojde cez
druhy (uvedeny) stroj.

> > Akurat tu mame dalsi hacik: prave dnes som sa docital ze windows update
> > verzie 5 chodi na M$ priamo... :)

> Okrem toho existuju aplikacie, ktore nastavenie proxy nepodporuju. Podla
> mna to nie je chyba v aplikacii, lebo neviem o tom ze by to specifikacia
> protokolu HTTP vyzadovala.

V takychto pripadoch samozrejme niekedy byva nutnost pouzit transparent
proxy. Alebo pustit klientov priamo von, ak sa to da.

(alebo nakopat autora aplikacie niekam...)

-- 
Matus UHLAR - fantomas, uhlar na fantomas.sk ; http://www.fantomas.sk/
Warning: I wish NOT to receive e-mail advertising to this address.
Varovanie: na tuto adresu chcem NEDOSTAVAT akukolvek reklamnu postu.
Eagles may soar, but weasels don't get sucked into jet engines. 




Další informace o konferenci linux