[hack] condivisione di un accesso ad internet

LoSpippolo lospippolo@email.it
Gio 5 Maggio 2005 11:11:13 CEST


ieri sera al corso si parlava di condividere un accesso ad internet
usando un computer linux con un modem usando iptables.

Vi proporrei un minimo script che dovrebbe far uscire una lan attraverso
un pc con linux 

il "server" deve soddisfare queste caratteristiche

1) il pc con linux di per se naviga (quindi ha un collegamento ad
internet funzionante)

2) il pc con linux e' correttamente in rete con altre macchine (cioe' se
gli altri pc della della rete lo pingano con successo)

3) il pc linux ha come indirizzo 192.168.0.1 netmask 255.255.255.0

4) tutte le altre macchine della rete hanno come indirizzo 192.168.0.X
netmask 255.255.255.0, come default gateway 192.168.0.1, e come dns un
dns funzionante, io cosiglierei 195.31.190.31

Lo script molto banale e' questo 

----------------------------  cut here ------------------------

#! /bin/bash
#
# Permetto il passaggio di pacchetti tra le scehde del pc
#
echo 1 > /proc/sys/net/ipv4/ip_forward
#
# Resetto le eventuali regole precedentemente inserite iptables
#
iptables -F
iptables -F -t nat
#
# Nego il traffico in ingresso al pc linux da tutte le schede
#
iptables -P INPUT DROP
#
# nego il traffico tra le schede di rete
#
iptables -P FORWARD DROP
#
# permetto l'uscita di tutto il traffico dal pc
#
iptables -P OUTPUT ACCEPT
#
# setto la variabile ppp0ip a indirizzo ip della PPP0 e lo mostro 
#
export PPP0IP=$(ifconfig | grep -1 ppp0 | tail -1 | sed 's/.*r://' | sed 's/ .*$//')
echo $PPP0IP
#
# Masquerading, questo permette alla rete di uscire dalla mia PPP0 
#
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
#
# Permetto il traffico forward dalla lan ad internet
#
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
#
# e ritorno
#
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 PPP0IP -m state --state ESTABLISHED,RELATED -j ACCEPT


----------------------------  cut here ------------------------


NOTA: la variable PPP0IP contiene l'indirizzo che acquisisce il pc su
internet, se la connessione cade e viene ristabilita questo molto
probabilemente (ma nn e' detto) cambiera'. quindi lo script deve venir
ri-eseguito

NOTA2: Se usate un collegameno non adsl il nome dell'interfaccia puo'
cambaire, io per esempio su un collegamento isdn ho visto ippp1 e quindi
di coneguenza va' cambiato il nome della connessione nella stringona 

"$(ifconfig | grep -1 ppp0 | tail -1 | sed 's/.*r://' | sed 's/ .*$//')"

e NON mi chiedete cosa vuol dire: l'ho trovata su internet, funziona e
tant'e 

:-D

se avete domande sono qui.




LoSpippolo

O mangi la minestra, o minimizzi la finestra.



Maggiori informazioni sulla lista golem-hack