Questa guida è stata preparata utilizzando la versione 1.3.3-3mdk di IPTables con il kernel 2.6.12-12mdk su Mandriva 2006 Cooker.
Al giorno d'oggi la maggior parte degli utenti ha la possibilità di accedere ad Internet utilizzando connessioni a banda larga e possiede più di un computer quindi si potrebbe avere la necessità di condividere risorse tra i due host, risorse come la connessione ad Internet; infatti lo scopo di questa guida è proprio quello di spiegarvi come condividerla allestendo un router.
Tutto ciò di cui abbiamo bisogno per mettere in atto questa guida sono una connessione ad Internet e un paio o più computer dotati di scheda di rete.
ethernet crossato.
2. Nel caso abbiate un modem ethernet vi serviranno due schede di rete sul router.
Per quanto riguarda gli altri host della LAN il device della scheda di rete sarà eth0 e gli indirizzi utilizzati apparterrano, ovviamente, alla classe 192.168.0.0/24.
Iniziamo con la configurazione del network in modo che i vari host della LAN possano comunicare tra di loro.
Solitamente per i network domestici o di piccole dimensioni si utilizzano IP di tipo 192.168.0.x dove x è un numero da 1 a 254, ciò significa che possiamo avere un massimo di 254 indirizzi IP univoci in una stessa rete, il che mi sembra più che sufficiente.
Solitamente in una rete al router vengono riservati o il primo o l'ultimo indirizzo ovvero 192.168.0.1 e 192.168.0.254.
In questa guida verrà utilizzato, come già spiegato sopra, il primo.
Per prima cosa creiamo due file /etc/sysconfig/network-scripts/ifcfg-eth0 e /etc/sysconfig/networking/devices/ifcfg-eth0:
Creati questi due file dobbiamo scrivervi dentro quanto segue:
BROADCAST=192.168.16.255
DEVICE=eth0
GATEWAY=192.168.0.1
IPADDR=192.168.0.x # Sostituire x con un numero da 2 a 254, 1 è usato dal router.
MTU="1500"
NETMASK=255.255.255.0
NETWORK=192.168.0.0
ONBOOT=yes
Il file mi sembra molto intuibile quindi non mi dilungherò in spiegazioni, sappiate solo che così impostata l'interfaccia si attiverà al boot, avrà un IP statico pari a 192.168.0.x ed il suo gateway sarà 192.168.0.1, ricordate che sul router il device collegato alla LAN è eth1 quindi modificate i due file di conseguenza.
Nel caso di LAN con un alto numero di host potrebbe essere necessaria l'implementazione di un DHCP server in modo da configurarli automaticamente.
La configurazione di un DHCP server esula dagli scopo di questa guida quindi non verrà trattata, sappiate però che sui client, nei file di cui sopra, basterà inserire:
DEVICE=eth0
ONBOOT=yes
In questo modo il client interrogherà il DHCP server della LAN ed otterrà tutte le informazioni necessarie come DNS, gateway, ecc.
Se voleste allestire un DHCP server seguite quest'ottima guida adattabile anche a Mandriva:
Per fare in modo che la nostra Mandriva faccia da router per la nostra LAN dovremo usare due tecniche chiamate IP forwarding e IP masquerading.
IP Forwarding
L'IP forwarding è una tecnica che ci permette di inoltrare pacchetti tra due interfacce di rete per attivarla non dobbiamo fare altro che impostare ad 1 la variabile a run time di IPTables ip_forward:
Per fare in modo che ad ogni avvio l'IP forwarding sia attivo apriamo il file /etc/rc.d/init.d/iptables e modifichiamolo da così:
# don't do squat if we don't have the config file
if [ -f $IPTABLES_CONFIG ]; then
# We do _not_ need to flush/clear anything when using iptables-restore
gprintf "Applying iptables firewall rules: \n"
grep -v "^[[:space:]]*#" $IPTABLES_CONFIG | grep -v '^[[:space:]]*$' | /sbin/iptables-restore -c && \
success "Applying iptables firewall rules" || \
failure "Applying iptables firewall rules"
echo
touch /var/lock/subsys/iptables
fi
A così:
# don't do squat if we don't have the config file
if [ -f $IPTABLES_CONFIG ]; then
# We do _not_ need to flush/clear anything when using iptables-restore
gprintf "Applying iptables firewall rules: \n"
grep -v "^[[:space:]]*#" $IPTABLES_CONFIG | grep -v '^[[:space:]]*$' | /sbin/iptables-restore -c && \
success "Applying iptables firewall rules" || \
failure "Applying iptables firewall rules"
echo
touch /var/lock/subsys/iptables
echo 1 > /proc/sys/net/ipv4/ip_forward
fi
IP Masquerading
L'IP masquerading è una particolare tecnica di SNAT (Source Network Address Translation) che cambia l'indirizzo IP sorgente del pacchetto in modo da poter far uscire su Internet più computer con un unico indirizzo IP pubblico nascondendo la rete privata.
Per abilitare questa tecnica non dovremo fare altro che caricare i giusti moduli e definire una regola per IPTables.
Per prima cosa carichiamo i moduli necessari:
# modprobe ip_conntarck
# modprobe iptable_nat
# modprobe ipt_MASQUERADE
Solitamente i moduli sopracitati vengono caricati automaticamente all'avvio, se così non fosse inseriteli in /etc/modprobe.preload.
E adesso definiamo una semplice regola di IPTables:
Questa regola indica che tutti i pacchetti in uscita su eth0 provenienti dal network 192.168.0.0/24 devono essere mascherati, per far sì che non dobbiate specificare questa regola ad ogni nuovo avvio basterà impartire:
Che salverà le attuali regole di IPTables nel file /etc/sysconfig/iptables che lo script /etc/rc.d/init.d/iptables va a leggere al momento del boot.
FTP
Con la configurazione attuale dovreste essere in grado di utilizzare il protocollo FTP in passive mode, se avete la necessità di utilizzare l'active mode il router dovrà esserre in grado di tracciare le vostre connessioni FTP, per fare ciò è sufficiente caricare due moduli:
# modprobe ip_nat_ftp
I due moduli dovrebbero caricarsi al boot, se così non fosse inseriteli in /etc/modprobe.preload.
IRC
Nel caso abbiate problemi con IRC vi basterà caricare altri due moduli:
# modprobe ip_nat_irc
I due moduli dovrebbero caricarsi al boot, se così non fosse inseriteli in /etc/modprobe.preload.
Gateway
Per prima cosa bisogna dire ad ogni macchina che deve instradare i pacchetti diretti verso l'esterno alla macchina che fa da router, per fare ciò è sufficiente impostare il default gateway nella tabella di routing:
Potrebbe non essere necessario questo passaggio in quanto abbiamo già indicato il gateway con il tag GATEWAY negli script di networking ma non si sa mai.
Per verificare la tabella di routing usate route -n:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
DNS
Per poter navigare utilizzando i nomi di dominio anzichè gli IP (cosa alquanto scomoda) bisogna settare i DNS del nostro provider editando /etc/resolv.conf, eccovi il mio d'esempio:
Probabilmente voi non utilizzerete il mio stesso provider quindi avrete bisogno di altri DNS, al collegamento seguente troverete una lista di DNS server dei principali ADSL provider italiani.
DNS - Gli indirizzi IP dei principali DNS server utilizzati in Italia
Se pensavate di aver finito vi siete sbagliati poichè adesso che abbiamo finito di configurare il tutto dobbiamo verificare che tutto funzioni e, nel caso il test non dia esito positivo, capire dove abbiamo sbagliato.
Per eseguire questo test utilizzeremo i comandi ping e dig, il primo è incluso nel pacchetto iputils e sicuramente è installato sulla vostra macchina, il secondo, invece, è incluso nel pacchetto bind-utils che dubito abbiate installato; fortunatamente come al solito c'è urpmi che ci viene in aiuto:
Installazione dei programmi con urpmi
Urpmi for newbie
Adesso che abbiamo tutti gli strumenti possiamo procedere con il test.
1. Comunicazione router->client
Per verificare la connettività tra il router ed i suoi client è sufficiente aprire una shell sul router e pingarli:
PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
64 bytes from 192.168.0.2: icmp_seq=1 ttl=255 time=0.992 ms
64 bytes from 192.168.0.2: icmp_seq=2 ttl=255 time=0.801 ms
64 bytes from 192.168.0.2: icmp_seq=3 ttl=255 time=0.787 ms
64 bytes from 192.168.0.2: icmp_seq=4 ttl=255 time=0.792 ms
64 bytes from 192.168.0.2: icmp_seq=5 ttl=255 time=0.792 ms
--- 192.168.0.2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4002ms
rtt min/avg/max/mdev = 0.787/0.832/0.992/0.087 ms
Se vedete una cosa del genere vuol dire che è tutto a posto e che il router vede i suoi client, in caso contrario vedreste una cosa di questo tipo:
PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
From 192.168.0.2 icmp_seq=1 Destination Host Unreachable
From 192.168.0.2 icmp_seq=2 Destination Host Unreachable
From 192.168.0.2 icmp_seq=3 Destination Host Unreachable
From 192.168.0.2 icmp_seq=4 Destination Host Unreachable
From 192.168.0.2 icmp_seq=5 Destination Host Unreachable
--- 192.168.0.2 ping statistics ---
5 packets transmitted, 0 received, +5 errors, 100% packet loss, time 4000ms
, pipe 3
In questo caso l'host risulta irraggiungibile quindi dobbiamo controllare che l'indirizzo IP del client sia quello giusto, che i cavi siano stati collegati correttamente e che le schede di rete siano attive (controllate i led sul retro).
2. Comunicazione client->router
Siccome la comunicazione deve essere bidirezionale dobbiamo assicurarci che anche i client possano raggiungere il router.
Per fare ciò è sufficiente ripetere le operazioni del punto 1 operando, però, dal client al router.
3. Risoluzione dei nomi di dominio
Verifichiamo che il client sia in grado di identificare un computer su Internet non solo in base al suo IP ma anche in base ad un FQDN (Full Qualified Domain Name) che possiamo memorizzare facilmente.
Proviamo con www.mandrakeitalia.org:
; <<>> DiG 9.3.1 <<>> www.mandrakeitalia.org
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1806
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;www.mandrakeitalia.org. IN A
;; ANSWER SECTION:
www.mandrakeitalia.org. 81975 IN A 195.225.171.217
;; AUTHORITY SECTION:
mandrakeitalia.org. 81975 IN NS ns2.debianitalia.org.
mandrakeitalia.org. 81975 IN NS ns.debianitalia.org.
;; ADDITIONAL SECTION:
ns2.debianitalia.org. 83062 IN A 195.225.171.218
ns.debianitalia.org. 83062 IN A 195.225.171.217
;; Query time: 22 msec
;; SERVER: 213.234.128.211#53(213.234.128.211)
;; WHEN: Thu Sep 22 18:06:55 2005
;; MSG SIZE rcvd: 154
Se vediamo un output simile a questo significa che siamo in grado di risolvere gli FQDN in indrizzi IP, come ulteriore prova pinghiamo sempre www.mandrakeitalia.org:
PING www.mandrakeitalia.org (195.225.171.217) 56(84) bytes of data.
64 bytes from 195.225.171.217: icmp_seq=1 ttl=56 time=35.4 ms
64 bytes from 195.225.171.217: icmp_seq=2 ttl=56 time=17.7 ms
64 bytes from 195.225.171.217: icmp_seq=3 ttl=56 time=16.7 ms
64 bytes from 195.225.171.217: icmp_seq=4 ttl=56 time=16.2 ms
64 bytes from 195.225.171.217: icmp_seq=5 ttl=56 time=17.4 ms
--- www.mandrakeitalia.org ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4003ms
rtt min/avg/max/mdev = 16.287/20.746/35.466/7.378 ms
Ciò vuol dire che tutto funziona, in caso contrario avremmo un output simile a questo:
In questo caso dovremmo controllare il nostro /etc/resolv.conf, pingare il DNS server e, se risultasse off-line, sostituirlo con un altro.
Adesso godetevi il vostro router che con "tanta fatica" avete configurato!
Ci vediamo alla prossima guida!
Commenti
Inviato da yaghm il Ven, 04/11/2005 - 15:46.
problema
Il procedimento è lo stesso se ho un modem usb?
Inviato da Madman il Ven, 04/11/2005 - 16:12.
Re: problema
Sì, ma devi riuscire a far funzionare il modem USB e ti risparmi la configurazione di una scheda di rete (quella a cui dovrebbe essere connessa il modem).
Inviato da Maff1024 il Dom, 04/12/2005 - 20:11.
Re: problema
Bella guida! Volevo però chiederti, nel caso di 3 schede di rete? Più precisamente 1 di rete (eth0) connessa tramite modem all'Adsl, una (eth1) su una LAN con un altro pc e una Wi-Fi (wlan0). Con le impostazioni del centro di controllo riesco a condividere la connessione solo come eth0 con eth1 oppure eth0 con wlan0, non con entrambe. C'è un modo per condividere la connessione d eth0 con le altre 2?
Inviato da pepz84 il Sab, 30/06/2007 - 13:34.
Re: condivisione connessione tra vista e mandriva
questa guida potrebbe fare al caso mio
mio?
ciao
peppe
User #405280 @ http://counter.li.org
Inviato da kio341 il Sab, 30/06/2007 - 15:17.
Re: condivisione connessione tra vista e mandriva
scusa ma
1) il tuo modem è ethernet od usb?
2)secondo il modem a chi è collegato a windows o mandriva ?
3)lascia stare il cavo crossed e compra un hub da 4 porte -i modelli pù scrausi costano meno di 20 euro
fammi sapere
Inviato da pepz84 il Dom, 01/07/2007 - 13:58.
Re: condivisione connessione tra vista e mandriva
il modem è ethernet ed è collegato a mandriva.
io ho comprato cavo crossed e una nuova scheda di rete proprio per evitare l'acquisto di un hub.
ciao
peppe
User #405280 @ http://counter.li.org
Inviato da ValenzuelaBethany il Ven, 09/04/2010 - 19:03.
respond
When you are in the corner and have got no money to go out from that, you will need to receive the loan. Because that would help you definitely. I get bank loan every year and feel good because of this.