Condividere la connessione a internet: differenze tra le versioni

m
→‎Masquerading: aggiornamento
m (→‎Masquerading: aggiornamento)
Riga 1: Riga 1:
{{stub}}
{{stub}}
==Premessa==
==Premessa==
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.
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 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 ?
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 la nostra Debian, una scheda di rete per ciascun pc da collegare alla rete locale ed un hub o switch.
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 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.
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 20: Riga 20:


Ora salviamo la regola utilizzando il comando
Ora salviamo la regola utilizzando il comando
<pre># iptables save_active</pre>
<pre># iptables-save</pre>
in questo modo la regola verr� caricata ad ogni avvio del sistema, senza che sia necessario digitarla nuovamente.
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 � per� sufficiente. In base a specifiche universalmente accettate infatti, un pc comune non deve essere in grado di inoltrare pacchetti su una rete (non deve quindi comportarsi come un router). Questa appunto la fondamentale differenza tra computer '''host''' e '''router'''.<br>
Configurare iptables non è però sufficiente. In base a specifiche universalmente accettate infatti, un pc comune non deve essere in grado di inoltrare pacchetti su una rete (non deve quindi comportarsi come un router). Questa è appunto la fondamentale differenza tra computer '''host''' e '''router'''.<br>
Dato che per noi fondamentale abilitare questa possibilit�, dobbiamo agire su un paramentro del kernel che regola questa funzione: l' '''ip-forwarding'''.
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 abilitabile "al volo", semplicemente impostando a "1" la relativa variabile del kernel,  con il comando:
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.
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 � pi� comodo, consiste nell' associare questo comando alla creazione delle interfacce di rete, in fase di boot.
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 cio� '''/etc/network/iface-secure''', che provvediamo subito a creare con il comando:
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 pi� sicuro:
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, 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.  
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 pi� comoda e performante: creare un nostro server DNS ed utilizzarlo in sostituzione di quelli del provider. Questa soluzione porta ad alcuni vantaggi:
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 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);
* 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 pi� performanti a loro volta.
* 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 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''':
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";
806

contributi