Condividere la connessione a internet: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
m
versioni compatibili
(Aggiunto template autori)
m (versioni compatibili)
(4 versioni intermedie di 3 utenti non mostrate)
Riga 1: Riga 1:
{{Versioni compatibili}}
{{Versioni compatibili|Wheezy|Jessie|Testing_2015|Unstable_2015}}
 
== Premessa ==
== Premessa ==
Oggi che la maggior parte degli utenti domestici ha la possibilità di accedere 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 computer, 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 accedere 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 computer, si avverte la necessità di poter condividere la connessione tra i vari computer della nostra rete domestica.
Riga 18: Riga 17:
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: configurazione automatica ===
=== Masquerading ===
Per fare masquerading è necessario utilizzare il firewall di Linux, ''Netfilter'', tramite il comando apposito, che per i kernel recenti è <tt>iptables</tt>.
Con [[privilegi di amministrazione]] digitiamo il seguente comando:
 
Ci sono molti pacchetti in grado di impostare il firewall, in modo più o meno approfondito e più o meno user-friendly, ma la funzionalità richiesta in questa sede è molto semplice, e se non siamo interessati ad aspetti legati alla sicurezza e al filtraggio di pacchetti forse non vale la pena di installare nulla.
 
Nonostante questo, però, segnalo il pacchetto '''ipmasq''', che è una collezione di script già impostati per gestire il firewall, e che già di default fornisce il masquerading e l'ip_forwarding (vedi più avanti), oltre ad un minimo di protezione di base, essenzialmente contro alcuni errori di configurazione. Per avere il masquerading funzionante basta quindi installarlo:
<pre>
# aptitude install ipmasq
</pre>
se poi volete usare anche le funzionalità avanzate potete sbizzarrirvi: la flessibilità di ''ipmasq'' è totale, ma sarà necessario studiare un po'. La documentazione per ''ipmasq'', come al solito, è in <tt>/usr/share/doc/ipmasq</tt>.
 
=== Masquerading: configurazione manuale ===
Se invece vogliamo procedere a mano, logghiamoci come utente '''root''' e digitiamo il seguente comando:
<pre># iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE</pre>
<pre># iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE</pre>
questo abilita il mascheramento degli indirizzi privati.
questo abilita il mascheramento degli indirizzi privati.
Riga 44: Riga 32:
Poi ad ogni avvio dovremo richiamare il seguente comando:
Poi ad ogni avvio dovremo richiamare il seguente comando:
<pre>
<pre>
# cat /etc/iptables-save | iptables-restore
# iptables-restore < /etc/iptables-save
</pre>
</pre>


Questo comando si può inserire in uno script di avvio come <tt>/etc/init.d/bootmisc</tt>, ma forse è più logico inserirlo in <tt>/etc/init.d/networking</tt> anche perché, in tal modo, riavviando la rete vengono anche reimpostate le regole di iptables. Per inserire il comando in <tt>/etc/init.d/networking </tt>scorrete il file fin quasi alla fine, dove troverete le seguenti righe:
Basta creare uno script in <code>/etc/network/if-up.d/</code> che esegua tale comando. Per esempio:
 
<pre>
<pre>
case "$1" in
# touch /etc/network/if-up.d/restore-iptables
    start)
</pre>
</pre>


ora appena prima di:
E poi modificare <code>/etc/network/if-up.d/network-iptables</code> con il proprio editor di testo preferito:
<pre>
#! /bin/sh


<pre>;;
readonly CONFIG_FILE="/etc/iptables-save"
stop)
</pre>


si potrà inserire questo codice (al posto del singolo comando) per maggiore eleganza:
# execute the script only if $CONFIG_FILE exists
test -f "$CONFIG_FILE" || exit 0


<pre>
# restore IP tables
        # Carica le regole di iptables salvate
printf %s " * Loading iptables saved state... "
if [ -r /etc/iptables-save ]; then
iptables-restore < "$CONFIG_FILE" &&
    echo -en " * Loading iptables saved state ... "
printf %s\\n "[ OK ]"
    cat /etc/iptables-save | iptables-restore &&\
</pre>  
    echo "[ OK ]"
fi
</pre>
   
   
in questo modo la regola verrà caricata ad ogni avvio del sistema, senza che sia necessario digitarla nuovamente, e solo se il file <tt>/etc/iptables-save</tt> esiste ed è leggibile.
La regola verrà caricata ad ogni avvio del sistema, senza che sia necessario digitarla nuovamente, e solo se il file <code>/etc/iptables-save</code> esiste.


=== Ip Forwarding ===
=== Ip Forwarding ===
Configurare ''iptables'' non è però sufficiente. I comuni Pc, infatti, non devono essere in grado di comportarsi come i [http://it.wikipedia.org/wiki/Router router] e cioè non devono poter [[routing|instradare]] pacchetti da una rete all'altra.<br>
Configurare ''iptables'' non è però sufficiente. I comuni PC, infatti, non devono essere in grado di comportarsi come i [http://it.wikipedia.org/wiki/Router router] e cioè non devono poter [[routing|instradare]] pacchetti da una rete all'altra.<br>
Dato che per noi è fondamentale abilitare questa possibilità, dobbiamo agire su un parametro del kernel che regola questa funzione: l' '''ip-forwarding'''.
Dato che per noi è fondamentale abilitare questa possibilità, dobbiamo agire su un parametro del kernel che regola questa funzione: l' '''ip-forwarding'''.


Riga 81: Riga 65:
così facendo, però, ad ogni riavvio dovremo reimpostare la variabile.
così facendo, però, ad ogni riavvio dovremo reimpostare la variabile.


==== Impostare l'<tt>ip-forwarding</tt> al boot: <tt>/etc/sysctl.conf</tt> ====
==== Impostare l'<code>ip-forwarding</code> al boot: <code>/etc/sysctl.conf</code> ====


Se avete installato ''ipmasq'', l'ip-forwarding è già abilitato: passate alle misure di sicurezza.
Se avete installato ''ipmasq'', l'ip-forwarding è già abilitato: passate alle misure di sicurezza.


Il metodo più semplice, consigliato nella maggior parte dei casi, per impostare l'ip-forwarding ad ogni boot è di inserire in <tt>/etc/sysctl.conf</tt>:
Il metodo più semplice, consigliato nella maggior parte dei casi, per impostare l'ip-forwarding ad ogni boot è di inserire in <code>/etc/sysctl.conf</code>:


<pre>
<pre>
Riga 112: Riga 96:
</pre>
</pre>


Per un approfondimento riguardante i parametri del kernel networking modificabili a run-time, vi rimandiamo alla guida [[Parametri a run-time per Netfilter]].
==== Impostare l'<code>ip-forwarding</code> al boot: script ====
 
==== Impostare l'<tt>ip-forwarding</tt> al boot: script ====


È possibile anche abilitare l'ip-forwarding associando uno script alla creazione delle interfacce di rete in fase di boot. Questo metodo è consigliato solo in caso di setup più complessi, in cui si vogliono impostare regole diverse a seconda dell'interfaccia di rete che si attiva.
È possibile anche abilitare l'ip-forwarding associando uno script alla creazione delle interfacce di rete in fase di boot. Questo metodo è consigliato solo in caso di setup più complessi, in cui si vogliono impostare regole diverse a seconda dell'interfaccia di rete che si attiva.
Riga 147: Riga 129:
<pre># touch /etc/network/iface-secure</pre>
<pre># touch /etc/network/iface-secure</pre>


Dopodiché rendiamolo eseguibile con:
Dopodiché rendiamolo eseguibile e scrivibile per [[root]] con:


<pre># chmod +x /etc/network/iface-secure</pre>
<pre># chmod 754 /etc/network/iface-secure</pre>


All'interno di questo file scriveremo il nostro comando per abilitare l' ip-forwarding:
All'interno di questo file scriveremo il nostro comando per abilitare l' ip-forwarding:


<pre>
<pre>
#! /bin/sh
### Abilita il forwarding di pacchetti non locali - FONDAMENTALE
### Abilita il forwarding di pacchetti non locali - FONDAMENTALE
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_forward
Riga 199: Riga 183:
Ora non ci resta che riavviare ''bind'' con il comando:
Ora non ci resta che riavviare ''bind'' con il comando:


<pre># /etc/init.d/bind9 restart</pre>
<pre># service bind9 restart</pre>


e configurarlo come [[DNS]] sui PC della nostra rete.
e configurarlo come [[DNS]] sui PC della nostra rete.
Riga 382: Riga 366:
|Verificata_da=
|Verificata_da=
:[[Utente:Clockwork orange|Clockwork Orange]]
:[[Utente:Clockwork orange|Clockwork Orange]]
:[[Utente:HAL 9000|HAL 9000]] 17:58, 21 mag 2015 (CEST)
|Estesa_da =  
|Estesa_da =  
:[[Utente:Keltik|keltik]]
:[[Utente:Keltik|keltik]]
:[[Utente:TheNoise|The Noise]]
:[[Utente:TheNoise|The Noise]]
|Numero_revisori = 1
|Numero_revisori = 2
}}
}}


[[Categoria:Configurazione ethernet]]
[[Categoria:Configurazione ethernet]]
[[Categoria:Reti con Windows]]
[[Categoria:Reti con Windows]]
3 581

contributi

Menu di navigazione