venerdì 27 luglio 2012

Gateway con linux

Sto preparando un ambiente di test per poter provare l'upgrade di una foresta active directory da w2003 a W2008R2.
Al di là delle implicazioni sistemistiche relative all'ambiente microsoft quanto va considerato con maggior attenzione sono le applicaizoni che si appoggiano al dominio e che vi accedono.

Saltando questo argomento magari trattato in altro post, qui descriverò in un passo come configurare una piccola macchina linux che faccia da gateway verso l'ambiente di produzione.-
L'obbiettivo è di tenere isolato il laboratorio active directory per evidare danni e invece di far accedere alcune applicazioni client server al loro database, per poterne testare il funzionamento senza dover portare qualche centinaio di gigabite di database nell'ambiente lab.
Non è infatti necessario che oracle acceda allo stesso dominio dell'applicazione che sarà in lab su un dominio clonato. L'applicazione usa la porta 1521 e tcp/ip per accedere al db pertanto non ha necessità di accedere allo stesso dominio del db.

Ho preparato pertanto un ambiente virtuale con uno switch senza interfaccie per tutte le macchine provenienti dal domino e ho creato una macchina con Debian 6.0.4 a 32bit con un installazione light senza nessun componente aggiuntivo. La macchina ha 512 mb di ram 12 GB di disco (anche troppo) e due schede di rete una nella lan laboratorio e una nella lan di produzione.

Fatto ciò ho creato questo scriptino:

#!/bin/sh

#cancello tutte le iptables
iptables -F


# attivo il nat
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

# accetto tutti i pacchetti da interfaccia interna
iptables -A INPUT -i eth0 -j ACCEPT

#accetto i pacchetti da interfaccia esterna se provenienti da ip specifico
iptables -A INPUT -i eth1 -j ACCEPT -s 192.168.1.200

#forwardo i pacchetti da interfaccia interna verso l'esterna solo se ip e quello interessato
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT -d 192.168.1.200

#blocco il forward per tutti i pacchetti
iptables -A FORWARD -i eth0 -o eht1 -j REJECT


#attivo routing
echo 1 >  /proc/sys/net/ipv4/ip_forward


Alcune precisazioni:
eth0 corrisponde all'interfaccia verso il laboratorio
eth1 verso la rete di produzione
l'ip 192.168.1.200 è quello del server a cui mi interessa la connessione sia attiva.
Consiglio di consultare i parametri di ip tables per espandere la visibilità di una rete rete/byte, oppure aggiungere un'altra riga identica con altro indirizzp per accedere ad altro ip.

Nella macchina client il default gateway deve essere l'ip dell'interfaccia eth0 oppure utilizzare le rotte.