Avanti Indietro Indice

9.1 Dalla teoria alla pratica

Passando dalla teoria alla pratica, occorre prima di tutto parlare in maniera un pochettino più approfondita dei target di default messi a disposizione dalla tabella di NAT.

Esistono molti altri target che possono essere aggiunti tramite il patch-o-matic adatti a tutte le esigenze. Date un'occhiata al manuale di iptables ed alle informazioni mostrate sullo schermo durante l'aggiornamento di iptables per maggiori informazioni.

Tornando invece al nostro esempio (presentato nei paragrafi sul filtraggio), è per noi indispensabile utilizzare il NAT in quanto:

Avendo però spesso a che fare con reti di discrete dimensioni dove il dhcp è raramente utilizzato, mi piace aggiungere alcune regole per rendere le macchine ``indipendenti'' dalle modifiche del provider di turno o eventuali riconfigurazioni della rete (vi è mai capitato di dover cambiare l'ip del dns su n macchine diverse, dove n tende ad infinito?).

Per fare questo normalmente si possono utilizzare diversi approcci:

Trattandosi comunque di regole abbastanza semplici ed interessanti dal punto di vista didattico, verranno presentate tutte e tre le soluzioni (la prima è quasi perfettamente equivalente alla terza).

Vediamo quindi le nostre prime regole di NAT:

77: iptables -t nat -A PREROUTING -p tcp -i eth0 --dport www -j DNAT --to nostro.proxy.server:8080
78: iptables -t nat -A POSTROUTING -o eth2 -s 192.168.200.0/24 -j SNAT --to 123.45.68.1
Ok, la prima regola dice, a parole, di inserire una regola nella tabella di nat per intercettare tutti i pacchetti provenienti da eth0 e destinati ad un server www (porta 80 -- prima che venga deciso da che interfaccia farli uscire) e di deviarli sul nostro.proxy.server porta 8080.

Attenzione però che proxy server come squid devono essere configurati per poter accettare connessioni deviate in questo modo, in quanto non seguono perfettamente lo standard utilizzato dai proxy (leggete la documentazione di squid!).

Tornando a parlare delle regole, la seconda dice di modificare il mittente (l'indirizzo ip sorgente) dei pacchetti uscenti da eth2 e provenienti dalla nostra LAN (192.168.200.0/24) con l'indirizzo ip esterno del nostro firewall.

A proposito di queste due regole ci sono alcune cose importanti da dire:

Volendo fare il giochettino con il DNS, le due possibilità sono realizzabili utilizzando o queste regole:
80: iptables -t nat -A PREROUTING -p tcp --dport domain -j DNAT --to nostro.dns
81: iptables -t nat -A PREROUTING -p udp --dport domain -j DNAT --to nostro.dns
che deviano tutto il traffico verso un qualsiasi dns su nostro.dns, o queste altre, che similmente intercettano il traffico verso un dns da noi specificato e deviano il traffico verso il nostro dns reale:
83: iptables -t nat -A PREROUTING -p tcp -d un.dns --dport domain -j DNAT --to nostro.dns
84: iptables -t nat -A PREROUTING -p udp -d un.dns --dport domain -j DNAT --to nostro.dns
A questo punto, non vi rimane che divertirvi con i pacchetti che fluiscono dalle vostre reti...


Avanti Indietro Indice