Condivisione della connessione con LinuxLa configurazione con il
metodo 2 citato nella guida
Fastweb e più di 3 PC: come condividere la connessione prevede l'utilizzo di un PC dotato di due schede di rete.
Quasi la totalità delle distribuzioni permette di gestire la condivisione della connessione.
Qui verranno suggeriti due strade: la prima prevede l'utilizzo di Debian GNU/Linux, una distro molto polivalente, la seconda invece l'utilizzo di una distro firewalla creata ad hoc.
Debian GNU/LinuxSupponiamo che esse siano
eth0, collegata all'HAG e
eth1, collegata allo switch/hub di rete.
Elenchiamo i passi necessari per abilitare la condivisione della connessione
Impostazione delle interfacce di rete del gatewayPer configurare le interfacce di rete del gateway è necessario modificare il file
/etc/network/interfacesPer l'interfaccia di rete collegata all'
HAG (
eth0) è possibile scegliere una configurazione automatica dinamica assegnata dall'HAG tramite DHCP, oppure una configurazione manuale statica.
Nel primo caso:
auto eth0
iface eth0 inet dhcp
Nel secondo caso:
auto eth0
iface eth0 inet static
address aaa.aaa.aaa.aaa
netmask 255.255.248.0
gateway bbb.bbb.bbb.bbb
network ccc.ccc.ccc.ccc
dns-nameservers ddd.ddd.ddd.ddd
Dove:
aaa.aaa.aaa.aaa indica uno dei 3/5 indirizzi IP privati assegnati da Fastweb
bbb.bbb.bbb.bbb indica l'indirizzo del gateway di Fastweb
ccc.ccc.ccc.ccc indica la classe della rete
ddd.ddd.ddd.ddd indica il server DNS utilizzato per la risoluzione degli IP
E' possibile ricavare tali indirizzi connettendosi utilizzando l'impostazione automatica tramite DHCP e digitando il comando
ifconfig eth0
Per l'interfaccia di rete collegata allo switch/hub di rete (
eth1) è consigliabile utilizzare i classici parametri per le reti private.
auto eth1
iface eth1 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
Variabili del kernelPer abilitare l'IP forward si utilizza il comando
# echo 1 > /proc/sys/net/ipv4/ip_forward
Per evitare di doverlo reinserire ad ogni avvio è possibile scrivere uno script oppure editare il file
/etc/sysctl.conf decommentando la riga
#net.ipv4.ip_forward = 1
ottenendo quindi
net.ipv4.ip_forward = 1
Per ragioni legate alla sicurezza è consigliabile anche decommentare le seguenti opzioni
net.ipv4.conf.all.rp_filter = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.log_martians = 1
MasqueradingPer abilitare la condivisione della connessione ci affidiamo alla
NATwiki (
Network
Address
Translation), e in particolare alla funzione di
IP masquerading (letteralmente, "
mascheramento degli IP") che è un tipo di
Source NAT.
Ovvero il nostro gateway funge da router per la rete LAN interna, i cui indirizzi IP privati vengono "
nascosti" dall'indirizzo IP dell'interfaccia Internet del gateway.
Tutto ciò si traduce nel comando
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Anche in questo caso, per evitare di dover reinserire tale comando ad ogni riavvio del gateway, sarà opportuno creare uno script; ci tornerà utile anche in futuro.
Creazione file
nat:
# touch /etc/init.d/nat
# chmod +x /etc/init.d/nat
Editiamo così il file con il nostro editor di testo preferito:
#!/bin/sh
echo 'Set Iptables path'
IP="/sbin/iptables"
case $1 in
start)
#=============================================================================
echo 'Reset filter table'
$IP -F
$IP -X
$IP -Z
echo 'Reset nat table'
$IP -t nat -F
#=============================================================================
echo 'Set default policy'
$IP -P INPUT ACCEPT
$IP -P OUTPUT ACCEPT
$IP -P FORWARD ACCEPT
$IP -t nat -P PREROUTING ACCEPT
$IP -t nat -P POSTROUTING ACCEPT
#=============================================================================
echo 'MASQUERADING!'
$IP -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#=============================================================================
stop)
echo 'Reset filter table'
$IP -F
$IP -X
$IP -Z
echo 'Reset nat table'
$IP -t nat -F
;;
#=============================================================================
restart)
echo 'Restarting...'
/etc/init.d/nat stop
echo ''
/etc/init.d/nat start
;;
#=============================================================================
esac
exit 0
In questo caso, oltre alla regola di MASQUERADE ho aggiunto anche le regole relative alle policy di default del firewall, ovviamente configurabili a piacere.
Comandi utili per la gestione dello script:
Per avviare lo script:
# invoke-rc.d nat start
Per fermare lo script:
# invoke-rc.d nat start
Per avviare automaticamente al boot lo script:
# update-rc.d nat defaults
Per rimuovere lo script dal boot:
# update-rc.d nat remove
Server DNSPer velocizzare la risoluzione degli indirizzi IP è possibile installare e configurare un server
DNSwiki che, sfruttando la cache, permette di ridurre il numero di richieste DNS ai server ufficiali.
Allo scopo si utilizziamo BIND
Installazione:
# apt-get install bind9 bind9-host dnsutils
Configurazione del file
/etc/bind/named.conf.options:
options {
directory "/var/cache/bind";
forwarders {
DNS_PRIMARIO;
DNS_SECONDARIO;
};
auth-nxdomain no; # conform to RFC1035
};
Dove:
DNS_PRIMARIO è l'IP del DNS primario
DNS_SECONDARIO è l'IP del DNS secondario
Per riavviare:
# /etc/init.d/bind9 restart
Per quanto riguarda i server DNS utilizzati dal gateway si faccia riferimento al file
/etc/resolv.conf
Impostazione delle interfacce di rete dei client della rete LANPer le interfacce di rete collegate allo switch/hub di rete è possibile scegliere una configurazione automatica dinamica assegnata dal gateway tramite
DHCPwiki, oppure una configurazione manuale statica.
Nel primo caso è necessario installare e configurare sul gateway un server DHCP per la gestione dell'assegnazione dei parametri di rete.
Server DHCPInstallazione:
# apt-get install dhcp3-server
Configurazione del file
/etc/dhcp3/dhcpd.conf:
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
option domain-name-servers 192.168.0.1;
default-lease-time 600;
max-lease-time 7200;
get-lease-hostnames true;
next-server 192.168.0.1;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.2 192.168.0.254;
}
Nel caso si volessero usare IP statici, ovvero fare in modo che a ciascun client sia assegnato sempre lo stesso IP, è necessario impostare una corrispondenza fra MAC Address e IP.
Ad esempio:
host client {
hardware ethernet xx:xx:xx:xx:xx:xx;
fixed-address yyy.yyy.yyy.yyy;
}
Dove:
xx:xx:xx:xx:xx:xx indica il MAC Address della scheda di rete del client al quale si vuole assegnare staticamente l'IP
yyy.yyy.yyy.yyy indica l'IP statico da assegnare
In modo da ottenere questo risultato:
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
option domain-name-servers 192.168.0.1;
default-lease-time 600;
max-lease-time 7200;
get-lease-hostnames true;
next-server 192.168.0.1;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.2 192.168.0.254;
host client {
hardware ethernet xx:xx:xx:xx:xx:xx;
fixed-address yyy.yyy.yyy.yyy;
}
}
Nel secondo caso, a seconda del sistema operativo utilizzato sul client, la procedura cambierà.
In ogni caso i parametri da configurare saranno:
address 192.168.0.X (con X compreso fra 2 e 254)
netmask 255.255.255.0
gateway 192.168.0.1
dns 192.168.0.1
HostsA questo punto la configurazione dei servizi essenziali è terminata.
Poterebbe però risultare utile associare ai vari indirizzi IP della LAN dei nomi.
Per fare ciò basterà editare il file
/etc/hosts con delle direttive che in generale hanno questa struttura:
[Indirizzo Internet ] [nome host ufficiale] [alias1] [alias2]
ad esempio:
127.0.0.1 localhost
192.168.0.1 server
192.168.0.2 client1
192.168.0.3 client2
Ciò vale non solo per il gateway, ma anche per i client; la collocazione del file e la sintassi utilizzata può variare a seconda del sistema operativo.
Linux/BSD:
/etc/hostsWindows XP:
C:\WINDOWS\system32\drivers\etc\hostsMac OS X 10.2 or later:
/private/etc/hosts
Port ForwardingNel caso fosse necessario predisporre la redirezione delle porte per alcuni client della LAN si possono scrivere delle regole di
DNAT con Iptables
L'esempio più comune è quello delle porte di eMule/aMule
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 4662 -j DNAT --to-destination $CLIENT:4662
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 4672 -j DNAT --to-destination $CLIENT:4672
Dove
$CLIENT indica l'indirizzo IP del client verso il quale eseguire il forward delle porte TCP 4662 e UDP 4672.
Distro FirewallCon questo termine vengono indicate tutte quelle distribuzioni basate su Linux o BSD, progettate per essere utilizzate proprio come firewall o gateway di rete.
I principali vantaggi di questo tipo di soluzione sono il fatto di avere praticamente tutto già pronto e la comodità di amministrare tramite interfaccia web in modo semplice ed intuitivo.
L'installazione e la configurazione basilare richiedono veramente poco tempo.
Di contro questa soluzione è svantaggiata per quanto riguarda la flessibilità, anche se è logico aspettarsi ciò da una distribuzione pensata e progettata per fare da firewall.
Ecco le principali distro firewall:
http://www.pfsense.comhttp://www.m0n0.chhttp://www.endian.comhttp://www.smoothwall.orghttp://www.ipcop.orghttp://www.devil-linux.orghttp://www.redwall-firewall.comhttp://www.zelow.no/floppyfwhttp://www.zeroshell.nethttp://www.wifi.com.ar/english/cdrouterhttp://www.clarkconnect.orghttp://www.ipfrog.dehttp://firewall.dubbele.comhttp://www.astaro.comhttp://www.gibraltar.at/http://www.smeserver.org/http://www.securepoint.cc/http://www.untangle.com/