Condividere la connessione a internet: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
verificata
mNessun oggetto della modifica
(verificata)
Riga 17: 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 è <code>iptables</code>.
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 <code>/usr/share/doc/ipmasq</code>.
 
=== 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 43: 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 <code>/etc/init.d/bootmisc</code>, ma forse è più logico inserirlo in <code>/etc/init.d/networking</code> anche perché, in tal modo, riavviando la rete vengono anche reimpostate le regole di iptables. Per inserire il comando in <code>/etc/init.d/networking </code>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 <code>/etc/iptables-save</code> 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 146: Riga 131:
<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 198: Riga 185:
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 381: Riga 368:
|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