Configurare un Router domestico
1.
Introduzione
Costruire il proprio router partendo da vecchi pezzi di PC ha molti vantaggi
rispetto al comprare un router di marca, ad esempio un Linksys. Il primo di
questi vantaggi è l'avere un controllo completo sulla connessione. Gli altri si
possono immaginare; si può realizzare praticamente qualsiasi cosa in questo
modo, basta ve ne sia la necessità.
Questa guida mostrerà come attivare un servizio di NAT ("Network Address
Translation" - ndT: "Traduzione Indirizzo di Rete") configurando il kernel ed
iptables, come fornire ed impostare alcuni tra i servizi più comuni: DNS (Domain
Name System) attraverso dnsmasq, DHCP (Dynamic Host Configuration Protocol)
attraverso dhcpd, ADSL (Asymmetric Digital Subscriber Line) attraverso ppp. Alla
fine, si concluderà con qualcosa di più sofisticato e divertente (port
forwarding, regolazione del traffico di dati, impostazione di proxy/caching,
ecc...).
Prima di cominciare, è bene assicurarsi che il proprio PC soddisfi una serie di
requisiti. Innanzitutto devono essere presenti almeno due schede di rete nel
computer. Inoltre bisogna conoscere le impostazioni della propria connessione ad
Internet (ad esempio gli indirizzi IP/DNS/GateWay e username/password). Infine,
c'è bisogno di un po' di tempo libero e di simpatia verso Gentoo.
Questa guida si basa sulla seguente configurazione tipo:
- eth0 - Scheda di rete connessa alla propria LAN (Local Area Network)
- eth1 - Scheda di rete connessa alla WAN (Wide Area Network)
- La LAN utilizza il set 192.168.0.xxx di IP privati
- L'IP del router è quello standard (192.168.0.1)
- Sul router viene eseguito Linux 2.4 o 2.6 - Con Linux 2.0 o 2.2 bisogna
fare da sé
Importante:
Per motivi di sicurezza, si consiglia vivamente di disattivare sul router tutti
i servizi che non sono necessari finché non si disporrà di un firewall
configurato e attivo. Per vedere i servizi attivi, usare il comando
rc-status.
|
2.
Configurazione del kernel
Come prima cosa, il kernel ha bisogno dei driver per entrambe le schede di rete.
Per vedere se le schede sono già state correttamente riconosciute dal kernel, si
può usare il comando ifconfig. Il proprio output può essere diverso da
quello che segue, ma questo non ha importanza: quello che conta è che siano
mostrate entrambe le interfacce di rete.
Codice 2.1: Controllare le schede di rete |
# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:60:F5:07:07:B8
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:11 Base address:0x9800
eth1 Link encap:Ethernet HWaddr 00:60:F5:07:07:B9
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:10 Base address:0x9400
|
Se non si vede una o entrambe le schede di rete e non si sa che tipo di schede
sono, si può provare a lanciare il comando lspci | grep Ethernet. Nel
caso in cui lspci non sia installato nel proprio sistema, eseguire il
comando emerge pciutils. Appena ottenute le informazioni necessarie,
ricompilare il kernel attivando il supporto per le proprie schede di rete.
Il secondo requisito è il supporto ad iptables, per il NAT e per il controllo
del traffico (se lo si vuole attivare). Nella lista che segue le opzioni sempre
richieste sono segnate con (*), quelle richieste solo per l'ADSL via PPPoE sono
segnate con (a), quelle consigliate a tutti con (x) e quelle per il controllo
del traffico con (s). Non importa se si sceglie di compilare questi supporti
direttamente nel kernel o come moduli, purché questi ultimi siano comunque
caricati non appena ce ne sia bisogno.
Codice 2.2: Opzioni di rete |
Networking options --->
[*] TCP/IP networking
[*] IP: advanced router
[*] Network packet filtering (replaces ipchains)
[*] Socket Filtering
IP: Netfilter Configuration --->
[*] Connection tracking (required for masq/NAT)
[x] FTP protocol support
[x] IRC protocol support
[*] IP tables support (required for filtering/masq/NAT)
[*] IP range match support
[x] MAC address match support
[*] Multiple port match support
[*] Packet filtering
[*] REJECT target support
[x] REDIRECT target support
[*] Full NAT
[*] MASQUERADE target support
[s] Packet mangling
[s] MARK target support
[x] LOG target support
QoS and/or fair queueing --->
[s] QoS and/or fair queueing
[s] HTB packet scheduler
[s] Ingress Qdisc
[a] PPP (point-to-point protocol) support
[a] PPP filtering
[a] PPP support for async serial ports
[a] PPP support for sync tty ports
[a] PPP Deflate compression
[a] PPP BSD-Compress compression
[a] PPP over Ethernet
|
Nota:
È possibile che vi siano differenze tra i kernel 2.4 e 2.6, ma si dovrebbe
essere in grado di venirne a capo da soli senza difficoltà. Inoltre, per il
kernel 2.6, queste opzioni hanno la tendenza ad essere spostate
frequentemente. Buona fortuna!
|
3.
Collegarsi alla WAN (ovvero ad Internet)
Introduzione
Ci sono moltissimi modi di connettersi ad Internet, quindi questa guida tratterà
soltanto quelli usati dall'autore ovvero un collegamento ADSL (PPPoE) e uno con
modem telefonico (con IP statico o dinamico). Se si conoscono altri metodi,
mettere al corrente l'autore inviandogli una mail. Saltare senza problemi
qualsiasi delle seguenti sezioni di questo capitolo, se non sono di
interesse. Lo scopo di questo capitolo è di connettere il router ad Internet
attraverso eth1.
ADSL e PPPoE
Tutto il software prodotto riguardante PPPoE che era fornito dal pacchetto
rp-pppoe (Roaring Penguin) è
stato integrato nel pacchetto standard di
PPP. Quindi basta eseguire il comando emerge ppp per avere tutto il
necessario. Adesso è necessario recuperare le informazioni relative a username e
password, come annunciato in precedenza. Aprire il file
/etc/conf.d/net nel proprio editor preferito e modificare i
parametri in maniera appropriata.
Nota:
È necessario sia installato baselayout-1.12.9 o superiore per far sì che la
seguente configurazione funzioni correttamente.
|
Codice 3.1: Configurare eth1 |
# nano /etc/conf.d/net
config_ppp0=( "ppp" )
link_ppp0="eth1"
plugins_ppp0=( "pppoe" )
pppd_ppp0=(
"defaultroute"
"usepeerdns"
)
username_ppp0="pluto"
password_ppp0="pippo"
# ln -s net.lo /etc/init.d/net.ppp0
# rc-update add net.ppp0 default
# /etc/init.d/net.ppp0 start
|
Avvertenza:
Quando l'interfaccia DSL si attiva, sarà creato il device ppp0. Anche se la
scheda di rete è eth1, l'IP appartiene a ppp0. Da ora in avanti, negli esempi
che usano 'eth1', sostituire quest'ultima voce con 'ppp0'.
|
Avvertenza:
Assicurarsi di aver cambiato i permessi del file /etc/conf.d/net in modo che
solo root possa leggere/scrivere su di esso: in quel file infatti ci sono i
propri username e password.
|
Avvertenza:
Chi sta effettuando il passaggio dal pacchetto rp-pppoe e chi è vittima
di misteriose cadute della connessione, dovrebbe dare un'occhiata alla sezione
su MTU del capitolo sulla Risoluzione dei problemi.
|
Connessione attraverso linea telefonica e/o IP statico/dinamico
Se si possiede un IP statico, ci sarà bisogno di conoscere qualche dettaglio in
più: il proprio indirizzo IP, il proprio gateway ed i server DNS.
Codice 3.2: Configurare eth1 |
# emerge dhcpcd
# nano /etc/conf.d/net
config_eth1=( "dhcp" )
# nano /etc/conf.d/net
config_eth1=( "66.92.78.102 broadcast 66.92.78.255 netmask 255.255.255.0" )
routes_eth1=( "default gw 66.92.78.1" )
# nano /etc/resolv.conf
nameserver 123.123.123.123
# ln -s net.lo /etc/init.d/net.eth1
# rc-update add net.eth1 default
# /etc/init.d/net.eth1 start
|
Ora dovrebbe essere tutto configurato.
4.
Collegarsi alla LAN
Questo passaggio è molto più facile rispetto al precedente.
Codice 4.1: Configurare eth0 |
# nano /etc/conf.d/net
config_eth0=( "192.168.0.1 broadcast 192.168.0.255 netmask 255.255.255.0" )
# rc-update add net.eth0 default
# /etc/init.d/net.eth0 start
|
5.
Servizi LAN
Server DHCP
Un servizio molto utile, che evita di ricordare dettagli noiosi e difficili da
memorizzare o di doverli inserire in interfacce di configurazione confusionarie
è DHCP ("Dynamic Host Configuration Protocol" - ndT: "Protocollo per la
Configurazione Dinamica degli Host"), che permette un funzionamento immediato
dei computer non appena li si collega alla rete.
DHCP, come si può desumere dal nome, è un protocollo che consente di configurare
in modo dinamico gli altri host in maniera del tutto automatica. Basta far
girare il server DHCP sul router, passargli tutte le informazioni sulla propria
rete (indirizzi IP validi, server DNS, gateway, ecc...) e, quando gli altri host
si connetteranno alla rete, useranno il client DHCP per autoconfigurarsi. Niente
confusione né pasticci. Per maggiori informazioni sul DHCP, visitare
Wikipedia.
Verrà usato un pacchetto chiamato dnsmasq, che fornisce sia il servizio DHCP che
DNS. Per il momento ci si concentrerà sull'aspetto DHCP. Tenere presente che se
si vuole eseguire un diverso server DHCP, è possibile guardare un altro esempio
nel capitolo "Qualcosa di divertente". Inoltre, se si desiderano sperimentare le
opzioni del server DHCP, leggere i commenti del file
/etc/dnsmasq.conf. Ad ogni modo, le opzioni predefinite dovrebbero
andare bene.
Codice 5.1: Installare un server DHCP |
# emerge dnsmasq
# nano /etc/dnsmasq.conf
dhcp-range=192.168.0.100,192.168.0.250,72h
interface=eth0
# rc-update add dnsmasq default
# /etc/init.d/dnsmasq start
|
Ora il proprio router è un piccolo e affidabile server DHCP! Collegare alla rete
qualche computer ed osservare attentamente come tutto funziona in modo semplice!
Con un sistema MS Windows bisognerà andare nel pannello "Proprietà TCP/IP" e
selezionare le opzioni "Ottieni un indirizzo IP automaticamente" e "Ottieni
l'indirizzo del server DNS automaticamente". A volte queste modifiche non hanno
effetto immediato e si dovrà aprire una finestra di comando ed eseguire
ipconfig /release e ipconfig /renew. Ma ora basta con Windows, si
torna al nostro pinguino preferito.
Server DNS
Quando qualcuno vuole visitare un sito web o raggiungere un altro host su
Internet, solitamente si ricorda del nome di quel sito, piuttosto che di una
stringa di numeri. Dopotutto è più facile ricordare "ebay.com" o 66.135.192.87?
Ecco dove entra in gioco il DNS. I server DNS girano più o meno ovunque su
internet e non appena qualcuno vuole visitare ebay.com, questi server
trasformano "ebay.com" (di facile comprensione per l'utente) in "66.135.192.87"
(di facile comprensione per il computer). Per maggiori informazioni sul DNS,
visitare nuovamente
Wikipedia.
Visto che si sta utilizzando dnsmasq come server DHCP ed esso include un server
DNS, non resta più niente da fare qui! Il proprio router sta già fornendo il
servizio DNS ai suoi client DHCP.
Si può benissimo scegliere altri server DNS se ci si trova meglio con quelli, ma
il motivo per cui dnsmasq è grandioso è che fa esattamente quello che si vuole e
niente di più. È un piccolo server per reti locali con funzionalità di caching e
forwarding. Non si vuole offrire un DNS per un proprio dominio, ma soltanto un
servizio DNS di base a chiunque si trovi nella vostra LAN.
NAT (ovvero IP-masquerading)
In questo momento, le persone nella vostra rete possono comunicare fra di loro e
possono collegarsi a degli hostname tramite DNS, ma non possono ancora
connettersi realmente ad internet.
Ecco dove entra in scena il Network Address Translation (NAT). NAT permette di
connettere più computer in una LAN ad Internet, quando si hanno a disposizione
un numero minore di indirizzi IP. Tipicamente la compagnia telefonica offre ad
ogni utente un solo IP, ma in questa situazione si vuole che tutta la casa sia
connessa ad internet. NAT è la magia che rende possibile tutto ciò. Anche in
questo caso, maggiori informazioni circa NAT possono essere trovate su
Wikipedia
Nota:
Prima di cominciare, assicurarsi che iptables sia installato nel proprio
sistema. Potrebbe non essere presente nonostante sia installato automaticamente
nella maggior parte dei sistemi; per risolvere basterà eseguire il comando
emerge iptables.
|
Codice 5.2: Configurare iptables |
# iptables -F
# iptables -t nat -F
# iptables -P INPUT ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD DROP
# export LAN=eth0
# export WAN=eth1
# iptables -I INPUT 1 -i ${LAN} -j ACCEPT
# iptables -I INPUT 1 -i lo -j ACCEPT
# iptables -A INPUT -p UDP --dport bootps ! -i ${LAN} -j REJECT
# iptables -A INPUT -p UDP --dport domain ! -i ${LAN} -j REJECT
# iptables -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT
# iptables -A INPUT -p TCP ! -i ${LAN} -d 0/0 --dport 0:1023 -j DROP
# iptables -A INPUT -p UDP ! -i ${LAN} -d 0/0 --dport 0:1023 -j DROP
# iptables -I FORWARD -i ${LAN} -d 192.168.0.0/255.255.0.0 -j DROP
# iptables -A FORWARD -i ${LAN} -s 192.168.0.0/255.255.0.0 -j ACCEPT
# iptables -A FORWARD -i ${WAN} -d 192.168.0.0/255.255.0.0 -j ACCEPT
# iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE
# echo 1 > /proc/sys/net/ipv4/ip_forward
# for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done
# /etc/init.d/iptables save
# rc-update add iptables default
# nano /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.ip_dynaddr = 1
|
Una volta finito, tutti i computer della propria rete dovrebbero essere in grado
di connettersi ad internet e di usarla come se fossero collegati direttamente
alla WAN.
L'opzione ip_dynaddr è utile per sistemi con collegamento su richiesta
(on-demand) o quando il proprio ISP fornisce indirizzi dinamici. Questo risolve
il problema che si incontra quando si tenta di stabilire una connessione prima
che l'interfaccia internet sia pienamente attivata. In questo modo verrà
garantito pienamente il funzionamento della connessione per i computer connessi
al proprio router.
6.
Qualcosa di divertente (da fare nelle giornate di pioggia)
Introduzione
Da qui in avanti verrà descritto qualcosa che potrebbe interessare il lettore e
che è facile incontrare tra le funzionalità di un router. Tutto, in questo
capitolo, è completamente opzionale.
Port Forwarding (Reindirizzamento delle/alle Porte)
A volte si potrebbe voler erogare alcuni servizi dai computer che sono dietro il
router (ovvero all'interno della LAN) oppure semplicemente semplificarsi la vita
quando ci si connette da remoto. Si potrebbe voler eseguire un server FTP, HTTP,
SSH, o VNC in una o più macchine dietro il router ed essere in grado di
connettersi a tutte. L'unico problema è che solo un servizio e solo un computer
possono essere collegati ad una specifica porta. Per esempio, non c'è modo di
installare tre server FTP dietro il router e poi connettersi a tutti e tre
tramite la porta 21; solo uno potrà ascoltare sulla porta 21, mentre gli altri
dovranno ascoltare, per esempio, sulle porte 123 e 567.
Tutte le regole di port forwarding hanno questa forma: iptables -t nat -A
PREROUTING [-p protocollo] --dport [porta del router] -i ${WAN} -j DNAT --to
[ip/porta del PC nella LAN]. Sfortunatamente, iptables non accetta hostname
nelle regole di port forwarding. Se si sta effettuando il forwarding da una
porta esterna (quella del router) uguale a quella interna (quella del PC nella
LAN), si può omettere la porta di destinazione. Per ulteriori informazioni
consultare la pagina di manuale di iptables: iptables(8).
Codice 6.1: Eseguire iptables |
# export LAN=eth0
# export WAN=eth1
# iptables -t nat -A PREROUTING -p tcp --dport 2 -i ${WAN} -j DNAT --to 192.168.0.2:22
# iptables -t nat -A PREROUTING -p tcp --dport 21 -i ${WAN} -j DNAT --to 192.168.0.56
# iptables -t nat -A PREROUTING -p tcp --dport 80 -i ${WAN} -j DNAT --to 192.168.0.56
# iptables -t nat -I PREROUTING -p tcp --dport 5900 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -I PREROUTING -p tcp --dport 5901 -i ${WAN} -j DNAT --to 192.168.0.3:5900
# iptables -t nat -I PREROUTING -p tcp --dport 135 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -I PREROUTING -p tcp --dport 139 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -I PREROUTING -p tcp --dport 445 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -I PREROUTING -p udp --dport 137:138 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -I PREROUTING -p udp --dport 445 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -A PREROUTING -p tcp --dport 6881:6889 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -A PREROUTING -p tcp --dport 4662 -i ${WAN} -j DNAT --to 192.168.0.55
# iptables -t nat -A PREROUTING -p udp --dport 4000 -i ${WAN} -j DNAT --to 192.168.0.56
# iptables -t nat -A PREROUTING -p tcp --dport 10070:10080 -i ${WAN} -j DNAT --to 192.168.0.11
# iptables -t nat -A PREROUTING -p udp --dport 10070:10080 -i ${WAN} -j DNAT--to 192.168.0.11
# iptables -t nat -A PREROUTING -p tcp --dport 3074 -i ${WAN} -j DNAT --to 192.168.0.69
# iptables -t nat -A PREROUTING -p udp --dport 3074 -i ${WAN} -j DNAT --to 192.168.0.69
# iptables -t nat -A PREROUTING -p udp --dport 88 -i ${WAN} -j DNAT --to 192.168.0.69
|
Nota:
Se si dispone di altri esempi simpatici o frequentemente usati, inviare una mail all'autore della guida.
|
Il demone identd (per IRC)
Il protocollo IRC (Internet Relay Chat) utilizza pesantemente il servizio ident.
Ora che i client IRC sono dietro il router, c'è bisogno di un modo per
raccogliere gli "ident" sia del router che dei client. Per fare ciò è stato
creato un server chiamato midentd
Codice 6.2: Configurare ident |
# emerge midentd
# rc-update add midentd default
# /etc/init.d/midentd start
|
Ci sono alcuni altri server ident nel portage di Gentoo. Tenendo conto dei
propri bisogni, si consiglia di dare un'occhiata ad oidentd e
fakeidentd.
Time Server
Avere sempre un orologio di sistema sincronizzato è essenziale per mantenere un
sistema in salute. Uno dei modi più comuni per farlo è usare il Network Time
Protocol (NTP) e il pacchetto ntp (che fornisce sia l'implementazione lato
client che quella lato server).
Molte persone usano dei client ntp nei loro computer. Ovviamente più client ci
sono nel mondo più grandi sono i carichi di lavoro che i server ntp devono
gestire. In situazioni come quella di una rete casalinga però, è possibile
diminuire questo carico di lavoro dei server pubblici pur fornendo un risultato
accurato e veloce ai propri host. Tutto quello che bisogna fare è eseguire nel
router un server ntp che si sincronizzi con un server pubblico per poi fornire
l'ora esatta al resto degli host nella LAN. Per cominciare, eseguire il comando
emerge ntp.
Codice 6.3: Configurare il server NTP |
# nano /etc/conf.d/ntp-client
# rc-update add ntp-client default
# nano /etc/ntp.conf
restrict default ignore
restrict 192.168.0.0 mask 255.255.255.0 notrust nomodify notrap
# nano /etc/conf.d/ntpd
# rc-update add ntpd default
# /etc/init.d/ntp-client start
# /etc/init.d/ntpd start
|
Nota:
Assicurarsi di aver abilitato il traffico in entrata ed in uscita alla porta ntp
(123/udp) del server. Per i client sarà sufficiente l'abilitazione per il
traffico in uscita, sempre sulla stessa porta.
|
Ora dare il comando emerge ntp anche sui PC client. In questo caso la
configurazione dovrebbe essere più semplice perché verrà abilitato soltanto il
client.
Codice 6.4: Configurare un client NTP |
# nano /etc/conf.d/ntp-client
# rc-update add ntp-client default
# /etc/init.d/ntp-client start
|
Server Rsync
Per reti in cui c'è più di una macchina con Gentoo, potrà capitare spesso di
usare il comando emerge sync con un server remoto. È possibile
risparmiare la propria banda e quella dei server di Gentoo usando un singolo
server rsync locale. È una cosa veramente semplice da fare.
Nota:
Per una guida più approfondita su rsync, consultare la
guida su rsync ufficiale.
|
Dal momento che ogni computer con Gentoo richiede rsync nativamente, non c'è
bisogno di installarlo. Basterà modificare il file di configurazione
/etc/rsyncd.conf decommentando la sezione [gentoo-portage]
ed assicurandosi di aggiungere un'opzione address. Tutte le altre
impostazioni predefinite dovrebbero andare bene.
Codice 6.5: File di configurazione del server rsync |
pid file = /var/run/rsyncd.pid
use chroot = yes
read only = yes
address = 192.168.0.1
[gentoo-portage]
path = /mnt/space/portage
comment = Gentoo Linux Portage tree
exclude = /distfiles /packages
|
Avviare infine il servizio.
Codice 6.6: Avviare il server rsync |
# /etc/init.d/rsyncd start
# rc-update add rsyncd default
|
L'unica cosa che rimane da fare è configurare i client affinché si colleghino
all'IP del router per effettuare la sincronizzazione.
Codice 6.7: Configurazione della variabile SYNC nei client nel file make.conf |
SYNC="rsync://192.168.0.1/gentoo-portage"
|
Server Mail
A volte può essere utile avere un proprio semplice server SMTP (Simple Mail
Transfer Protocol) che gira sul router. Si potrebbe avere qualsiasi ragione per
farlo; l'autore di questa guida ha attivato questo servizio di modo che gli
utenti vedano la propria mail come inviata istantaneamente, mentre tutto il
lavoro è lasciato al server mail. Oltretutto alcuni ISP, come Verizon, non
accettano mail relaying (ovvero non permettono di usare i loro server SMTP) se
non si possiede un account della loro rete. Ancora, si potrà limitare la banda
per l'invio delle mail di modo che gli allegati grandi non creino rallentamenti
della propria connessione per ore ed ore.
Codice 6.8: Configurare SMTP |
# emerge netqmail
# emerge --config netqmail
# iptables -I INPUT -p tcp --dport smtp ! -i ${LAN} -j REJECT
# ln -s /var/qmail/supervise/qmail-send /service/qmail-send
# ln -s /var/qmail/supervise/qmail-smtpd /service/qmail-smtpd
# cd /etc/tcprules.d
# nano tcp.qmail-smtp
192.168.0.:allow,RELAYCLIENT=""
# make
# rc-update add svscan default
# /etc/init.d/svscan start
|
Chi scrive è un grande fan di qmail, ma il lettore è libero di scegliere un
altro MTA. Quando si configurano gli account e-mail negli host della propria
rete, impostare il server SMTP su di essi in modo che sia 192.168.0.1 e tutto
dovrebbe funzionare. Per ulteriore documentazione, visitare
l'homepage di netqmail.
Server DHCP completo
Prima si è usato dnsmasq per fornire il servizio DHCP a tutti i client. Per la
maggior parte delle persone con una semplice, piccola LAN, questa soluzione è
perfetta. Tuttavia, potrebbe esserci la necessità di qualcosa con più funzioni.
Per questo ci si affida ad un server DHCP completo in tutto, fornito dal team
ISC.
Codice 6.9: Installare dhcpd |
# emerge dhcp
# nano /etc/dhcp/dhcpd.conf
authoritative;
ddns-update-style interim;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.250;
default-lease-time 259200;
max-lease-time 518400;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
option domain-name-servers 192.168.0.1;
}
# nano /etc/conf.d/dhcpd
# rc-update add dhcpd default
# /etc/init.d/dhcpd start
|
Questa è la configurazione minima richiesta per rimpiazzare le funzioni DHCP di
dnsmasq usato in precedenza. A tal proposito, bisogna ricordarsi di disattivare
le funzioni DHCP in dnsmasq (basta commentare l'impostazone dhcp-range in
/etc/dnsmasq.conf e riavviare il servizio).
Connettere un'altra LAN (o due o tre o...)
A volte potrebbe esserci la necessità di connettere il proprio router ad
un'altra LAN. Magari per collegarsi temporaneamente ad un gruppo di amici oppure
il lettore potrebbe essere uno smanettone e voler sezionare gruppi diversi di
computer o forse è solamente una persona solo molto, molto annoiata. Qualunque
sia la ragione, estendere il router ad un'altra LAN dovrebbe essere abbastanza
semplice. Negli esempi seguenti si darà per scontato che questa nuova rete sia
collegata attraverso una terza scheda Ethernet chiamata eth2.
Per prima cosa, configurare l'interfaccia. Usare le istruzioni nel
listato di codice 4.1,
sostituendo eth0 con eth2 e 192.168.0 con 192.168.1.
Fatto ciò, configurare dnsmasq affinché fornisca i suoi servizi alla nuova
interfaccia. Modificare di nuovo il file /etc/conf.d/dnsmasq,
aggiungendo -i eth2 a DNSMASQ_OPTS; si può usare -i più volte. Poi
modificare /etc/dnsmasq.conf e aggiungere un'altra riga come quella
del dhcp-range nel listato di codice 5.1,
sostituendo 192.168.0 con 192.168.1. Si possono avere anche più
righe dhcp-range.
Per finire, guardare le regole nel listato di codice
5.2 e duplicare le regole che contengono -i ${LAN}. Per rendere le
cose più semplici si potrebbe creare un'altra variabile, chiamandola ad esempio
LAN2.
7.
Risoluzione dei problemi
Strumenti utili
Se si riscontrano problemi nel cercare di mettere in comunicazione i propri
computer, i seguenti strumenti potrebbero risultare utili (sono tutti contenuti
nella categoria net-analyzer di portage):
| Strumento |
Descrizione |
| wireshark |
Strumento grafico per visualizzare tutto il traffico di rete grezzo secondo
alcuni filtri
|
| tcpdump |
Uno strumento da console per intercettare il traffico di rete grezzo secondo
alcuni filtri
|
| iptraf |
Monitor IP per la LAN basato sulle librerie ncurses |
| ettercap |
Monitor/Controllore di rete basato sulle librerie ncurses |
DHCP non parte
Quando viene lanciato lo script init.d di dhcp per la prima volta, potrebbe non
caricarsi senza fornire alcuna informazione utile.
Codice 7.1: Esempio di fallimento di DHCP |
# /etc/init.d/dhcp start
* Setting ownership on dhcp.leases ... [ ok ]
* Starting dhcpd ... [ !! ]
|
Il trucco sta nello scoprire dove il demone dhcpd invia il suo output. Basta
semplicemente posizionarsi su /var/log e leggere i file di log. Dal
momento che il file dipende da quale syslog si sta usando, si può lanciare il
comando grep -Rl dhcpd /var/log per trovare il file esatto. La causa che
ha generato il mancato avvio di dhcpd è probabilmente un errore nel file di
configurazione. Si può anche provare a lanciare dhcpd -d -f ed effettuare
il debug degli errori basandosi sull'output.
Valore dell'MTU sbagliato
Se occasionalmente si presentano degli errori (come il non riuscire a
visualizzare alcune pagine web, mentre altre si visualizzano correttamente),
potrebbero esserci dei problemi con il "Path MTU Discovery". Il modo più veloce
per scoprirlo è lanciare iptables:
Codice 7.2: Impedire problemi di MTU |
# iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
|
Questo avrà effetto solo sulle nuove connessioni, per cui ricaricare la pagina
web che presentava problemi per verificare se tutto è a posto. Potrebbe far
comodo sapere che il valore MTU standard per connessioni ethernet a 100Mb è
1500; questo valore va bene anche per quanto riguarda PPPoA. Per le
connessioni PPPoE è invece 1492. Per ulteriori informazioni consultare il
capitolo 15 della guida Linux Advanced
Routing & Traffic Control HOWTO.
Nel caso in cui questo comando non funzioni, si può provare ad inserire la
regola nella tabella mangle. Per fare ciò basta aggiungere -t mangle al
comando.
Impossibile connettere direttamente due computer
Se (per qualche ragione) si vogliono connettere due macchine direttamente senza
usare un hub o uno switch, un normale cavo ethernet non funzionerà, a meno che
non si possieda una scheda di rete Auto MDI/MDI-X (chiamate anche
"autosensing"). Ci sarà bisogno di un altro tipo di cavo che viene chiamato cavo
incrociato (crossover). Su Wikipedia si
possono trovare tutti i dettagli su questo argomento (la pagina di Wikipedia in
Italiano è qui).
8.
Note Finali
Non ci sono note finali, tranne una. Se si riscontra qualsiasi problema con la
guida, si prega di contattare l'autore o
segnalare un bug qui. Se si possiede
qualche pezzo interessante che si pensa possa migliorare questa guida, inviarlo
tranquillamente all'autore, che provvederà ad includerlo.
I contenuti di questo documento sono rilasciati sotto la licenza Creative
Commons - Attribution / Share Alike.
|