Il 06 maggio 2010 22.58, Gelpi Andrea <[email protected]> ha scritto:
> I pacchetti in arrivo dall'esterno vengono ruotati correttamente verso la
> DMZ e correttamente tornano indietro (i source nat e destination nat
> funzionano come desiderato).
>
> Purtroppo però questi pacchetti utilizzano sempre e comunque un solo default
> gateway, non seguono cioè ciò che sta scritto nella varie routing table.

Hai provato con il packet marking? Non puoi usare il routing per
determinare l'interfaccia, perché il source nat viene fatto *dopo* il
routing, e quindi non puoi usarlo per determinare l'interfaccia di
uscita.
La soluzione che ho trovato io ai tempi è appunto usare il marking per
decidere secondo i criteri che preferisci cosa deve uscire dove.

In due parole: imposti diverse tabelle di routing ed a ciascuna associ
un mark tramite 'ip rule'. Poi imposti iptables per marcare i
pacchetti che vuoi far uscire da una o dall'altra interfaccia (facendo
attenzione a far uscire dall'interfaccia giusta... se no il SNAT fa
casino e dall'altra parte alcuni pacchetti vengono scartati). Il
marking lo puoi fare in PREROUTING, a differenza del SNAT che avviene
in POSTROUTING, e come dice il nome stesso, dopo che la strada di
uscita è già stata determinata.

Ai tempi ho scritto un howto abbastanza rapido[1] che tratta anche di
questo, l'ultima parte potrebbe interessarti.

> Ho anche provato ad usare il parametro NAT di IProute 2 ma dice che è
> deprecato e comunque non lo usa o non riesco a farlo funzionare.

Sì, non funziona più. Da qualche parte esiste una patch che implementa
una cosa simile, ma appunto "rompe" il flusso di gestione dei
pacchetti del kernel[2] e quindi non mi fiderei più di tanto.

HTH,
Corrado


[1] http://blog.bardland.org/2008/11/16/policy-based-routing-with-debian-lenny/
[2] http://www.comio.it/IptablesSchema.png
________________________________________________________
http://www.sikurezza.org - Italian Security Mailing List

Rispondere a