Connettere una rete privata ad Internet con un server dedicato che maneggia i pacchetti indirizzandoli dalla rete locale verso internet e facendo funzioni di proxy/caching è un tema complesso che esula dagli scopi di questo documento. Esistono altri «Howto» che trattano la materia in maniera più dettagliata. Alla fine di questo documento è possibile trovare una lista di link e di riferimenti a tali documenti.
Qui, viene spiegato come configurare solo Diald supponendo che il
computer già utilizza IP-Masquerading, possiede un proxy funzionante come
Squid o simile, una connessione verso un ISP configurata
correttamente e che la sicurezza per l'accesso alle porte TCP/UDP è
stata impostata (il file /etc/inetd.conf, o altri come
securetty, host.allow, etc).
In linea generale l'unica cosa da fare è riconfigurare le regole per il masquerading/filtering/accessing ogni volta che l'insieme di interfacce cambia, cioè quando l'interfaccia ppp0 viene stabilita e quando viene cancellata. Un buon posto dove farlo sono gli script ip-up e ip-down di pppd.
Con Debian è sufficiente installare il pacchetto ipmasq
rispondendo che si vogliono cambiare le regole in modo sincrono con
pppd quando lo si attiva. Verranno creati due script detro le
directory /etc/ppp/ip-up.d e /etc/ppp/ip-down.d per
chiamare /sbin/ipmasq che analizzano l'interfaccia esistente
e creano una semplice configurazione che è valida in molti casi e che
è personalizzabile utilizzando il file di regole
/etc/ipmasq/rules.
Le uniche correzioni dopo l'installazione di questo pacchetto sono
quelle di cancellare, quando lo script per ipmasq viene lanciato,
il link simbolico da /etc/rcS.d e creandone uno
nuovo in /etc/rc2.d in modo che venga lanciato dopo
S20diald. Ora, quando ipmasq viene eseguito per analizzare
le interfacce, sl0 già esiste. S90ipmasq è un buon nome
per il nuovo link simbolico a /etc/init.d/ipmasq.
Se si utilizza Debian non c'è da preoccuparsi della versione del
kernel visto che lo script /sbin/ipmasq utilizza
ipfwadm o ipchains a seconda delle richieste.
Questo esempio è di Mr Cornish Rex,
troll@tnet.com.au.
I seguenti comandi per ip-masq e per il controllo dell'instradamento devono essere utilizzati con le versioni 2.2 del kernel perche', utilizzando ipchains, non sono validi per i kernel 2.0.
Stiamo supponendo che l'interfaccia di rete ha come indirizzo ip 192.168.1.1 con netmask di 16 bit e cioe' 255.255.0.0.
Questo è il file /etc/ppp/ip-up:
#!/bin/sh
# $1 = Interface
# $2 = Tty device
# $3 = speed
# $4 = local ip
# $5 = remote ip
# $6 = ipparam
/sbin/ipchains -F input
/sbin/ipchains -P input DENY
/sbin/ipchains -A input -j ACCEPT -i eth0 -s 192.168.0.0/16 -d 0.0.0.0/0
/sbin/ipchains -A input -j DENY -p udp -i $1 -s 0.0.0.0/0 -d $4/32 0:52 -l
/sbin/ipchains -A input -j DENY -p udp -i $1 -s 0.0.0.0/0 -d $4/32 54:1023 -l
/sbin/ipchains -A input -j DENY -p tcp -i $1 -s 0.0.0.0/0 -d $4/32 0:112 -l
/sbin/ipchains -A input -j DENY -p tcp -i $1 -s 0.0.0.0/0 -d $4/32 114:1023 -l
/sbin/ipchains -A input -j DENY -p tcp -i $1 -s 0.0.0.0/0 -d $4/32 6000:6010 -l
/sbin/ipchains -A input -j DENY -p icmp --icmp-type echo-request \
-i $1 -s 0.0.0.0/0 -l
/sbin/ipchains -A input -j DENY -p icmp -f -i $1 -s 0.0.0.0/0 -l
/sbin/ipchains -A input -j DENY -p udp -i $1 -s 0.0.0.0/0 -d $4/32 5555 -l
/sbin/ipchains -A input -j DENY -p udp -i $1 -s 0.0.0.0/0 -d $4/32 8000 -l
/sbin/ipchains -A input -j DENY -p tcp -i $1 -s 0.0.0.0/0 -d $4/32 8000 -l
/sbin/ipchains -A input -j DENY -p udp -i $1 -s 0.0.0.0/0 -d $4/32 6667 -l
/sbin/ipchains -A input -j DENY -p tcp -i $1 -s 0.0.0.0/0 -d $4/32 6667 -l
/sbin/ipchains -A input -j DENY -p tcp -i $1 -s 0.0.0.0/0 -d $4/32 4557 -l
/sbin/ipchains -A input -j DENY -p tcp -i $1 -s 0.0.0.0/0 -d $4/32 4559 -l
/sbin/ipchains -A input -j DENY -p tcp -i $1 -s 0.0.0.0/0 -d $4/32 4001 -l
/sbin/ipchains -A input -j DENY -p tcp -i $1 -s 0.0.0.0/0 -d $4/32 2005 -l
/sbin/ipchains -A input -j DENY -p tcp -i $1 -s 0.0.0.0/0 -d $4/32 6711 -l
/sbin/ipchains -A input -j DENY -i $1 -s 192.168.0.0/16 -d 0.0.0.0/0 -l
/sbin/ipchains -A input -j ACCEPT -i $1 -s 0.0.0.0/0 -d $4/32
/sbin/ipchains -A input -j ACCEPT -i lo -s 0.0.0.0/0 -d 0.0.0.0/0
/sbin/ipchains -A input -j DENY -s 0.0.0.0/0 -d 0.0.0.0/0 -l
/sbin/ipchains -F output
/sbin/ipchains -P output DENY
/sbin/ipchains -A output -j ACCEPT -i eth0 -s 0.0.0.0/0 -d 192.168.0.0/16
/sbin/ipchains -A output -j DENY -i $1 -s 192.168.0.0/16 -d 0.0.0.0/0 -l
/sbin/ipchains -A output -j ACCEPT -i $1 -s $4/32 -d 0.0.0.0/0
/sbin/ipchains -A output -j ACCEPT -i lo -s 0.0.0.0/0 -d 0.0.0.0/0
/sbin/ipchains -A output -j DENY -s 0.0.0.0/0 -d 0.0.0.0/0
/sbin/ipchains -F forward
/sbin/ipchains -P forward DENY
/sbin/ipchains -M -S 120 120 120
/sbin/ipchains -A forward -j MASQ -s 192.168.1.0/24
/sbin/ipchains -A forward -j DENY -s 0.0.0.0/0 -d 0.0.0.0/0
exit 0
questo è il file /etc/ppp/ip-down:
#!/bin/sh
# $1 = Interface
# $2 = Tty device
# $3 = Speed
# $4 = Local ip
# $5 = Remote ip
/sbin/ipchains -F input
/sbin/ipchains -F output
/sbin/ipchains -F forward
/sbin/ipchains-restore < /etc/ppp/orig.chains
L'ultimo file nell'ultimo script, orig.chains, è il file seguente (stato originale di ipchains):
# orig.chains
# created with: ipchains-save > orig.chains
:input ACCEPT
:forward ACCEPT
:output ACCEPT
-A input -s 0.0.0.0/0.0.0.0 -d 192.168.1.1/255.255.255.255
-A output -s 192.168.1.1/255.255.255.255 -d 0.0.0.0/0.0.0.0
Questo esempio è di Hoo Kok Mun,
hkmun@pacific.net.sg.
Questo è l'esempio più semplice che ho visto, ma è pienamente
funzionale. All'inizio, prim che esista sl0 questo esempio configura il masquerading
che non modifica quando viene creata l'interfaccia
ppp0. Se servono considerazioni avanzate sulla sicurezza
potrebbe risultare un po' limitato.
#/etc/rc.d/rc.local
/sbin/ipfwadm -F -p deny
/sbin/ipfwadm -F -a m -S 192.168.0.0/24 -D 0.0.0.0/0
Come si può vedere è valido per le versioni 2.0 del kernel.