[ Home | Liste | F.A.Q. | Risorse | Cerca... ]


[ Data: precedente | successivo | indice ] [ Argomento: precedente | successivo | indice ]


Archivio: Giugno 2006 ml@sikurezza.org
Soggetto: Re: [ml] Strano problema di iptables - Soluzione
Mittente: Gelpi Andrea
Data: Tue, 13 Jun 2006 22:51:29 +0200 (CEST)
Gelpi Andrea wrote:

Su una Debian testing fully patched a questa mattina ho 4 reti.

2 linee ADSL e 2 LAN.

Ho la necessità di far in modo che solo alcuni IP delle due LAN escano su 1 ADSL, tutti gli altri devono uscire dall'altra ADSL.

Usando il comando ip route e ip rule ho creato due tabelle x le due adsl in modo che ciò che entra da una adsl torni indietro dalla stessa interfaccia.

Il Default gateway punta ad una sola delle adsl.

Nella tabella nat POSTROUTING ci sono le regole x fare SNAT (usate dagli IP delle due LAN).

. . .

Ora con tcpdump vedo i pacchetti uscire dalla Adsl giusta e vedo tornare le risposte, che però muoiono subito dopo.

Facendo del debug ho scoperto che i pacchetti di ritorno passano dalla mangle PREROUTING table, ma non trovo traccia di questi pacchetti nella nat PREROUTING table.

La soluzione l'ho trovata quando mi sono accorto che aggiungendo un secondo default gateway in load balancing le cose cominciavano a funzionare. Purtoppo però dopo una 30 minuti tornavo ad avere problemi.
Infatti nel mio caso se un certo IP della LAN esce dalla ADSL sbagliata incappa in problemi generati sui sistemi remoti.
Banalmente non posso usare l'SMTP di Fastweb se esco tramite Telecom Italia.


Il fatto però che se esiste un default gateway per una certa interfaccia nella tabella di routing globale (la main) i pacchetti di ritorno entrano mi ha permesso di capire dove sta il problema.

Infatti /proc/sys/net/ipv4/conf/ethx/rp_filter è settato ad 1 di default. Questo sulla debian con kernel 2.6.x.

E' stato sufficiente settarlo a 0 sulle due interfacce collegate ad Internet per avere tutto funzionante senza ulteriori problemi.

A questo parametro non avevo pensato (e a dir la verità non ne parlano nemmeno i vari HOWTO presenti sul sito di netfilter) in quanto due anni fa avevo fatto una prova simile con una Red Hat 9.0 con kernel 2.4.x e tutto funzionava bene. Ho infatti controllato (il sistema è ancora vivo) e rp_filter non è settato.

La cosa carina è che usando la mangle table e la nat table e i comandi ip route e ip rule è possibile avere un sistema perfettamente funzionante senza un default gateway nella main table (routing table ovviamente).
In questo caso vanno messe opportune regole anche nelle chain di output (sia nat che mangle) o il sistema non sa come uscire su Internet. Per i pacchetti in transito invece sono sufficienti le chain PREROUTING (mangle) e POSTROUTING (nat).



--
ing. Andrea Gelpi
***************************************************
La Terra non la abbiamo ereditata dai nostri avi,
ma la abbiamo presa in prestito dai nostri bambini.
***************************************************







[ Home | Liste | F.A.Q. | Risorse | Cerca... ]

www.sikurezza.org - Italian Security Mailing List
(c) 1999-2005