Linux come gateway di una rete casalinga
Questo uno script minimale che dovrebbe far uscire su internet una lan attraverso un pc con linux. Si da’ per assunto che il pc che fa’ da gateway alla rete abbia queste caratteristiche:
1) il pc con linux riesce a navigare autonomamente, gode quindi di un collegamento ad internet funzionante.
2) il pc con linux e’ correttamente in rete con altre macchine (cioe’ gli altri pc della della rete lo devono pingare con successo).
3) il pc linux ha come indirizzo 192.168.0.1 e netmask 255.255.255.0, questo e’ arbitrario, possiamo mettere gli indirizzi di rete che vogliamo, pero’ dovremo adattare le impostazioni dello script e quelle del punto (4) di conseguenza.
4) tutte le altre macchine della rete hanno come indirizzo 192.168.0.X e netmask 255.255.255.0, come default gateway 192.168.0.1, e come dns un dns funzionante, io consiglio quello di fastweb: 213.140.3.43
Lo script e’ questo:
—————————- cut here ————————
#! /bin/bash
#
# Permetto il passaggio di pacchetti da una scheda di rete all’altra
#
echo 1 > /proc/sys/net/ipv4/ip_forward
#
# Resetto le eventuali regole precedentemente caricate in iptables
#
iptables -F
iptables -F -t nat
#
# Nego il traffico in ingresso al pc linux da tutte le schede di rete
#
iptables -P INPUT DROP
#
# nego il traffico tra tutte le schede di rete
#
iptables -P FORWARD DROP
#
# permetto l’uscita di tutto il traffico dal pc linux
#
iptables -P OUTPUT ACCEPT
#
# Masquerading, questo permette alla rete di uscire dalla connesione internet del gateway
#
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
#
# Permetto il passaggio del traffico dalla lan ad internet e ritorno, nota ritorno e non viceversa, la seconda riga
# quella con “ESTABLISHD, RELATED”, permette l’ingresso nella lan SOLO dei pacchetti che sono risposte
# al altri pacchetti usciti, null’altro potra’ entrare
#
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -d 192.168.0.0/24 -m state –state ESTABLISHED,RELATED -j ACCEPT
#
# essendo l’output dal pc linux gia’ consentito devo permettere il rientro delle richieste di linux fatte ad internet
#
iptables -A INPUT -d ppp0 -m state –state ESTABLISHED,RELATED -j ACCEPT
#
# permetto il traffico per localhost
#
iptables -A INPUT -s 127.0.0.1/8 -j ACCEPT
—————————- cut here ————————
Con questa configurazione sarete in condizione di usare programmi come come browser web, posta elettronica, messenger di vario tipo (msn, yahoo, skype etc), web radio, filmati di youtube ed altro.
Non funzioneranno programmi di P2P come torrent, emule e dc, se non in modalita’ passiva o servizi che girano sui pc della lan, e il collegamento verso siti ftp funzionera’ solo in modo passivo, ma di questi problemi parleremo la prossima volta
Intanto vediamo se qualcuno ha domande…
.
k76:
semplice ed efficace
26 Novembre 2007, 9:23 amcomplimenti
WOOD:
si una domanda ce l’ho!!!
Preferisci la meringata o la torta di frutta? A seconda della risposta ti giochi la mia amicizia via web..
buona tanta serata e lasci aperdere LInux!
26 Novembre 2007, 4:57 pmspippolazione:
Torta di frutta, la meringata e’ troppo dolce, mi si incrinano i denti…
26 Novembre 2007, 8:19 pmSalvo B:
E supponendo di volere implementare una configurazione per una rete fastweb, dove l’hag entra nella prima scheda di rete (eth0) assegnandole un ip tramite dhcp e la rete wired esce dalla seconda schede di rete (eth1) con ip fisso ?
Si dovrebbe impostare su tutte le macchine l’ip fisso della seconda scheda come gateway e si dovrebbero cambiare le regole di iptables per fare il forward dei pacchetti da eth0 a eth1, ma come ?
Ecco la mia domanda; se trova una risposta in questo post mi evitate un paio di googlate
10 Dicembre 2007, 1:25 pmspippolazione:
Cambi le occorrenze di ppp0 con eth0. Il fatto che io usi ppp0 presuppone un modem adsl, ma puoi condividere quel che ti pare, volendo anche una scheda di rete TUN di una vpn. ]:-)
10 Dicembre 2007, 1:27 pmSalvo B:
iptables -P INPUT DROP
iptables -P FORWARD DROP
Non capisco però il motivo di queste due regole, perchè droppare tutto il traffico in ingresso e forward?
Se ho capito bene la condizione di blocco si dovrebbe ripristinare con la penultima regola:
iptables -A INPUT -d ppp0 -m state –state ESTABLISHED,RELATED -j ACCEPT
che nel mio caso diventerebbe
iptables -A INPUT -d eth1 -m state –state ESTABLISHED,RELATED -j ACCEPT
10 Dicembre 2007, 2:55 pmspippolazione:
nel tuo caso forse le impostazioni di drop hanno poco senso, visto che sei gia’ dentro la lan di casa tua…
10 Dicembre 2007, 8:26 pm