[Tech] DNAT

Simone Piccardi piccardi@softwarelibero.org
Mer 21 Gen 2004 19:38:02 CET


On Wed, 2004-01-21 at 18:19, Iacopo Spalletti wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Alle 14:37, mercoledì 21 gennaio 2004, Aldo Podavini ha scritto:
> > > Non solo fa da gateway, ma anche da router, perché il "modem" ADSL
> > > (un alcatel manta) è attaccato direttamente; l'interfaccia esterna
> > > è quindi ppp0.
> > > Il masquerading va benone, esco con tutte le macchine e
> > > dall'esterno non ci sono problemi ad usare il DNAT su una qualunque
> > > delle macchine.
> >
> > Il server è disposto a servire richieste provenienti dal fw ?
> > Ossia: se inizio una connessione direttamente dal fw, usandolo come
> > client, rivolgendomi al server sull'indirizzo interno, il server mi
> > risponde ?
>> Ho riorganizzato un po' le cose e ho fatto un passo avanti.
> Ho dato un IP di un'altra sottorete a firewall e server, assegnando un 
> alias alle rispettive eth0, in questo modo ho potuto creare una dmz via 
> shorewall.
> Dopodiché ho messo un bel tcpdump in ascolto su firewall e server, e 
> questo è il risultato.
> 
> Se ritenete che siamo OT (o aldo si stufa!) si smette, sto veramente 
> perdendo le speranze :-(
Il problema che avevi prima e` che se tu fai DNAT delle connessioni dal
client ad un server e il client e` sulla stessa rete del server i
pacchetti in andata li "natti" passando dal fw, ma il server, vedendo
arrivare i pacchetti con IP sorgente nella sua stessa rete risponde su
quella interfaccia direttamente al client, il quale vedendosi arrivare
pacchetti da un IP che non ha contattato (lui cerca quello pubblico),
risponde a sua volta con un bel RST, e chiude la connessione che lui
stesso voleva stabilire.

Se vuoi fare un giochino del genere devi dire al server di reinviare i
pacchetti al fw/gw. Qualcosa del tipo:

iptables -t nat -A POSTROUTING -s CLIENT -d SERVER -j SNAT --to FW

che ti fa riarrivare indietro i pacchetti.

Ma per una cosa del genere sarebbe meglio usare il routing avanzato (sai
quella roba che usa anche vieri per alice...) marchi i pacchetti che
vedi arrivare dal client e vanno verso il server e poi li instradi
direttamente sul server, sul FW:

iptables -t mangle -A PREROUTING -s CLIENT -d SERVER -j MARK --set-mark
10
ip rule add fwmark 10 table 2
ip route add default via SERVER dev ethX table 2

(l'ho scritto di fretta, non sono sicuro che vada, e ti servono i vari
supporti nel kernel).

In quello che hai ora credo non cambi nulla se hai usato l'aliasing, il
server vede comunque il client sulla sua stessa rete con l'altra
interfaccia e ci parla direttamente (si piglia sempre la rotta
migliore), verifica con tcpdump sul client se ti vedi arrivare dei
pacchetti direttamente dal server, cui lui rispondera` con dei bei
reset, presumo.

Ciao
-- 
As.| Simone Piccardi - KeyID:2A972F9D - JabberID:simone@jabber.linux.it 
So.| http://firenze.linux.it/~piccardi  -  http://www.softwarelibero.it 
Li.| Prima ti ignorano, poi ti deridono, poi ti combattono.  Poi vinci. 
                                                           M. K. Ghandi
-------------- parte successiva --------------
Un allegato non testuale è stato rimosso....
Nome:        non disponibile
Tipo:        application/pgp-signature
Dimensione:  189 bytes
Descrizione: This is a digitally signed message part
URL:         <http://lists.linux.it/pipermail/flug-tech/attachments/20040121/80309e0c/attachment.pgp>


Maggiori informazioni sulla lista flug-tech