[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: NAT "trasparente"



Lucio Crusca wrote:

Riccardo Tortorici ha scritto:
Cosa ci vuoi fare con la linux box, un firewall? o MITM? :-)
Un firewall a livello IP ed ARP. Il cliente ha problemi di connettività fra
computers della sua LAN: è convinto che i problemi insorti possano
dipendere in qualche modo dal suo nuovo ISP, a causa di una coincidenza
temporale fra l'insorgere dei problemi ed il cambio di ISP. Questa ipotesi,
secondo me, implica che il suo ISP mandi dei pacchetti "non richiesti" alla
LAN e che il router (di proprietà dell'ISP) li lasci passare. Inoltre, per
generare problemi di connettività a livello di LAN, i pacchetti incriminati
credo che dovrebbero essere degli ARP, in quanto non credo che sia
possibile ottenere tale risultato a livello IP, se non congestionando la
LAN, giusto?
Da ciò ho pensato di mettere un NAT, in modo da lasciar fuori qualsiasi ARP
non richiesto, ma anche qualsiasi pacchetto IP non richiesto: voglio però
evitare di riconfigurare tutta la LAN, un po' perché è un lavoraccio e un
po' per non aggiungere entropia al sistema ed essere certo, se il problema
si risolve, di non aver toccato nulla sui client.

Quello che voglio mettere è un NAT che abbia lo stesso indirizzo IP del
router, ma sulla eth0 che si presenta alla LAN, in modo che i client in LAN
non notino la differenza.
ROUTER(.254)<-->(.222)NAT(.254)<-->LAN(192.168.1.0/24)
                eth1     eth0

Il problema è che non posso toccare neppure il router, quindi il NAT si
trova a "nattare" fra due reti identiche a livello IP. Dal p.d.vista
teorico direi che la cosa è tranquillamente possibile, mentre dal p.d.vista
pratico, se cerco di dire alla linux box che il default gateway è
raggiungibile via eth1, il comando

# route add default gw 192.168.1.254 dev eth1

mi risponde
SIOCADDRT: Network is unreachable

che mi lascia un po' di stucco perché non capisco per quale motivo dovrebbe
dirlo (premesso che il comando route lo conosco poco e la linea sopra l'ho
costruita a partire da "man route", ma senza la certezza di aver capito
tutto). Posso immaginare quale sia il problema, ovvero io gli sto dicendo
che il default gateway è lo stesso IP di eth0, ma è raggiungibile via eth1,
perché fisicamente non è su eth0, e la cosa non gli piace proprio. Non so
solo come fare a dirglielo in parole più chiare e non capisco perché il
comando route qui sopra non sia sufficientemente chiaro per il kernel.

Detto per inciso, sono convinto che i problemi della LAN del cliente nulla
abbiano a che vedere con l'ISP, è solo il cliente a non esserne convinto e
glielo devo dimostrare.

straluna ha scritto:
Oltre al gia' citato bridge prendi in considerazione la possibilita' di
usare il proxy-arp che ti consente di fare esattamente quello che chiedi
senza patchare nulla (visto che usi 2.4) e filtrare a layer3.
Posso anche loggare/droppare i pacchetti ARP fra le due schede (in
particolare quelli dal router verso la LAN)?


Forse quello che serve a te è un firewall trasparente.
Basta creare un bridge tra tra le due schede di rete della box linux (man brctl), assegnare al bridge un ip (per comodità di gestione) e utilizzare iptables per configurare le regole del firewall (oppure ebtables se vuoi lavorare a livelli più bassi, ma 99% delle volte non serve). Ovviamente tramite iptables puoi anche loggare tutto il traffico e se vuoi farti dele male puoi metter sulla stessa macchina anche snort)
Forse in questo caso non è neanche necessario nattare il traffico.
Così facendo il firewall è realmente trasparente e non devi riconfigurare nulla sui client. Inoltre dai traceroute il firewall così configurato non viene nemmeno rilevato. (Questa è una tecnica che usiamo in azienda, e ne sono molto contento, dato che funziona ala grande).

Alessio



Reply to: