806
contributi
m (→Masquerading: aggiornamento) |
m (→Ip Forwarding) |
||
Riga 1: | Riga 1: | ||
{{stub}} | {{stub}} | ||
==Premessa== | ==Premessa== | ||
Oggi che la maggior parte degli utenti domestici ha la | Oggi che la maggior parte degli utenti domestici ha la possibilit� di accede ad internet con connessioni a [http://it.wikipedia.org/wiki/Larghezza_di_banda banda] larga (ad esempio [http://it.wikipedia.org/wiki/ADSL ADSL]) e che � sempre pi� frequente avere a disposizione almeno un paio di computers si avverte la necessit� di poter condividere la connessione tra i vari computer della nostra rete domestica. | ||
GNU/Linux | GNU/Linux � probabilmente la scelta pi� indicata in questi frangenti, essendo un sistema operativo nato espressamente in ambiente di rete: moltissimi dei [http://it.wikipedia.org/wiki/Router router] sul mercato fanno uso di GNU/Linux come sistema operativo, perch� non farlo anche noi ? | ||
==Prerequisiti== | ==Prerequisiti== | ||
Tutto quello di cui abbiamo bisogno | Tutto quello di cui abbiamo bisogno � la nostra Debian, una scheda di rete per ciascun pc da collegare alla rete locale ed un hub o switch. | ||
Per fare in modo che Debian si comporti come un router avremo bisogno anche di iptables. Vi rimando alla guida [[Debian e iptables]] per la sua corretta installazione e configurazione. | Per fare in modo che Debian si comporti come un router avremo bisogno anche di iptables. Vi rimando alla guida [[Debian e iptables]] per la sua corretta installazione e configurazione. | ||
Riga 12: | Riga 12: | ||
==Configurazione== | ==Configurazione== | ||
Per fare in modo che Debian faccia da gateway tra i pc della LAN e internet dobbiamo utilizzare una tecnica chiamata '''masquerading''' (mascheramento) degli indirizzi locali.<br> | Per fare in modo che Debian faccia da gateway tra i pc della LAN e internet dobbiamo utilizzare una tecnica chiamata '''masquerading''' (mascheramento) degli indirizzi locali.<br> | ||
Il motivo | Il motivo � semplice: per accedere a internet � necessario avere un [http://it.wikipedia.org/wiki/Indirizzo_IP indirizzo IP] di tipo pubblico, che il nostro ISP ci fornisce. Per permettere anche ai computer sprovvisti di indirizzo pubblico di navigare, dobbiamo fare in modo che i loro indirizzi di tipo privato vengano "nascosti" dietro a quello pubblico. | ||
===Masquerading=== | ===Masquerading=== | ||
Riga 21: | Riga 21: | ||
Ora salviamo la regola utilizzando il comando | Ora salviamo la regola utilizzando il comando | ||
<pre># iptables-save</pre> | <pre># iptables-save</pre> | ||
in questo modo la regola | in questo modo la regola verr� caricata ad ogni avvio del sistema, senza che sia necessario digitarla nuovamente. | ||
===Ip Forwarding=== | ===Ip Forwarding=== | ||
Configurare iptables non | Configurare iptables non � per� sufficiente. I comuni pc, infatti, non devono essere in grado di comportarsi come i [http://it.wikipedia.org/wiki/Router routers] e cio� non devono poter [[routing instradare]] pacchetti da una rete all' altra.<br> | ||
Dato che per noi | Dato che per noi � fondamentale abilitare questa possibilit�, dobbiamo agire su un paramentro del kernel che regola questa funzione: l' '''ip-forwarding'''. | ||
L' ip-forwarding | L' ip-forwarding � abilitabile "al volo", semplicemente impostando a "1" la relativa variabile del kernel, con il comando: | ||
<pre># echo 1 > /proc/sys/net/ipv4/ip_forward</pre> | <pre># echo 1 > /proc/sys/net/ipv4/ip_forward</pre> | ||
cos� facendo per�, ad ogni riavvio dovremo reimpostare la variabile. | |||
E' possibile creare scripts appositi che impostano a "1" l' ip-forwarding, ma il sistema che presumibilmente | E' possibile creare scripts appositi che impostano a "1" l' ip-forwarding, ma il sistema che presumibilmente � pi� comodo, consiste nell' associare questo comando alla creazione delle interfacce di rete, in fase di boot. | ||
Per prima cosa, apriamo con il nostro editor preferito il file '''/etc/network/interfaces''' e cerchiamo la sezione relativa alla nostra scheda di rete.<br> | Per prima cosa, apriamo con il nostro editor preferito il file '''/etc/network/interfaces''' e cerchiamo la sezione relativa alla nostra scheda di rete.<br> | ||
Riga 50: | Riga 50: | ||
broadcast 10.0.0.255 | broadcast 10.0.0.255 | ||
pre-up /etc/network/iface-secure</pre> | pre-up /etc/network/iface-secure</pre> | ||
Questo comando dice allo script che si occupa di configurare la scheda di rete di lanciare un' altro script, e | Questo comando dice allo script che si occupa di configurare la scheda di rete di lanciare un' altro script, e cio� '''/etc/network/iface-secure''', che provvediamo subito a creare con il comando: | ||
<pre># touch /etc/network/iface-secure</pre> | <pre># touch /etc/network/iface-secure</pre> | ||
All' interno di questo file scriveremo il nostro comando per abilitare l' ip-forwarind: | All' interno di questo file scriveremo il nostro comando per abilitare l' ip-forwarind: | ||
<pre>echo 1 > /proc/sys/net/ipv4/ip_forward</pre> | <pre>echo 1 > /proc/sys/net/ipv4/ip_forward</pre> | ||
Possiamo anche aggiungere un paio di semplici regole per rendere il tutto | Possiamo anche aggiungere un paio di semplici regole per rendere il tutto pi� sicuro: | ||
<pre>echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses | <pre>echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses | ||
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts</pre> | echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts</pre> | ||
===Server DNS=== | ===Server DNS=== | ||
Per poter navigare su internet, | Per poter navigare su internet, � necessario che i PC della nostra rete locale abbiano accesso ad un server [http://it.wikipedia.org/wiki/DNS DNS] che traduca per noi gli indirizzi internet in indiritti IP. | ||
Un modo per fare questo consiste nell' impostare per ciascuno dei nostri PC i server DNS forniti dal nostro provider. | Un modo per fare questo consiste nell' impostare per ciascuno dei nostri PC i server DNS forniti dal nostro provider. | ||
Esiste tuttavia un' alternativa molto | Esiste tuttavia un' alternativa molto pi� comoda e performante: creare un nostro server DNS ed utilizzarlo in sostituzione di quelli del provider. Questa soluzione porta ad alcuni vantaggi: | ||
* sui pc della LAN dovremo configurare sempre un solo server DNS immutabile e che conosciamo bene (senza faticose ricerche); | * sui pc della LAN dovremo configurare sempre un solo server DNS immutabile e che conosciamo bene (senza faticose ricerche); | ||
* i tempi di risposta sono nettamente | * i tempi di risposta sono nettamente pi� performanti rispetto a server esterni alla LAN, sia perch� il server � raggiungibile direttamente (senza instradamento attraverso internet), sia perch� sfrutta un sistema di cache (se 10 pc chiedono l' indirizzo di debian.org, ad esempio, il nostro DNS effetter� la richiesta solo la prima volta e per le restanti 9 utilizzer� le informazioni memorizzate nella propria cache); | ||
* grazie a questo meccanismo di caching i dns del provider sono meno stressati e quindi | * grazie a questo meccanismo di caching i dns del provider sono meno stressati e quindi pi� performanti a loro volta. | ||
Per realizzare il nostro server useremo '''bind''', probabilmente il miglior software esistente per questo compito. | Per realizzare il nostro server useremo '''bind''', probabilmente il miglior software esistente per questo compito. | ||
Riga 72: | Riga 72: | ||
Per prima cosa installiamo bind9 ed alcuni strumenti utili: | Per prima cosa installiamo bind9 ed alcuni strumenti utili: | ||
<pre># apt-get install bind9 bind9-host dnsutils</pre> | <pre># apt-get install bind9 bind9-host dnsutils</pre> | ||
Ora configuriamo il server in modo che faccia le sue richieste ai server DNS che vogliamo noi | Ora configuriamo il server in modo che faccia le sue richieste ai server DNS che vogliamo noi anzich� ai ROOT SERVERS (sono pochi in tutto il mondo, molto stressati e aggiornati pi� lentamente di altri). Tutto quello che dobbiamo fare � editare la sezione '''options''' del file '''/etc/bind9/named.conf.options''': | ||
<pre>options { | <pre>options { | ||
directory "/var/cache/bind"; | directory "/var/cache/bind"; |
contributi