Profili di rete automatici per laptop

Lun, 25/09/2006 - 19:29

Profili di rete automatici per laptop

Inviato da ntropia 6 commenti

How-to su come configurare profili di rete automatici per portatili

I n t r o d u z i o n e

Questa guida è stata scritta per fornire un'indicazione su come installare un servizio di profili di rete automatici per tutti coloro che usano un portatile per connettersi a più reti diverse (casa, università, ufficio). Una volta messo a punto, il sistema sarà in grado di configurare automaticamente le interfacce di rete all'avvio o al semplice inserimento del cavo di rete, riconoscendo la rete presso la quale si è collegati, selezionando i parametri opportuni (IP, gateway, ecc...), nonchè eseguire compiti specifici, come il montaggio di dischi remoti con samba piuttosto che nfs, eccetera.

In rete ho trovato molto materiale relativo all'argomento, ma nessuno comprendeva tutto quello di cui avevo bisogno. Così questo mini-howto è un riassunto derivato dai vari tutorial, howto e dalle pagine stesse di Guessnet, nonché dai tentativi (e dagli errori!) da me fatti. In qualche punto potrà essere carente di dettagli, ma sono certo che l'utente curioso potrà facilmente colmare le lacune tramite le pagine di manuale dei singoli comandi e i link di riferimento in fondo alla guida.

La guida è incentrata sulle connessioni ethernet, perchè non ho reti wifi a disposizione, ma il codice è adattabile con poca fatica. In ogni caso, consiglio la lettura dei link in fondo, dove sono riportati anche i pacchetti aggiuntivi necessari per una wlan.

Guessnet non è l'unico programma disponibile per il l'identificazione automatica delle reti, ne esistono molti altri: whereami, intuitively, laptop-net, divine... Personalmente ho scelto questo perchè oltre ad essere configurabile tramite un apposito apposito file di descrizione, può utilizzare direttamente il file /etc/network/interfaces di Debian, con poche opportune modifiche.
1. Installazione dei pacchetti necessari

Il primo passo sarà l'installazione dei pacchetti che contengono le applicazioni che serviranno per la messa a punto dei profili:

# apt-get install ifplugd resolvconf iputils-arping guessnet

Una breve descrizione dei pacchetti:
ifplugd: è un demone in grado di rilevare ed effettuare operazioni quando viene connesso e disconnesso un cavo di rete.
resolvconf:gestisce i nomi dei nameserver (DNS). In genere è installato di default nella Debian
iputils-arping: fornisce i comandi necessari per effettuare il ping per MAC address.
guessnet: è in grado effettuare dei test per identificare la rete alla quale si è connessi e selezionare da un file di configurazione i parametri corrispondenti a ciascuna rete.

2. Configurazione

Cominciamo a sporcarci le mani. Prima di tutto tiriamo giù tutte le interfacce di rete (tranne lo, ovviamente) che ci sono:

# ifdown eth0
# ifdown eth1
# ifdown wlan0
# ifdown ...

Una volta fatto questo, bisogna assicurarsi che l'interfaccia che ci interessa controllare (eth0, nel caso più probabile) sia compresa nel file di configurazione/etc/default/ifplugd, che dovrebbe contenere righe simili a queste:
INTERFACES="eth0"
HOTPLUG_INTERFACES=""

Se vogliamo che vengano rilevate anche interfacce collegate a caldo (PCMCIA, WiFi usb) basterà aggiungere il corrispondente device anche nella riga inferiore.
Tutto questo non dovrebbe essere necessario, perchè in teoria al momento dell'installazione del pacchetto vengono automaticamente aggiunte tutte le interfacce rilevate con le relative opzioni. Volendo è possibile riconfigurare ifplugd con dpkg-reconfigure ma attenzione perchè in questo caso le eventuali personalizzazioni fatte nel file verrebbero perdute.
Da questo momento in po' ogni volta che verrà inserito o disinserito il cavo di rete, ifplugd notificherà l'evento con un bip.
Rimando al manuale di ifplugd per le ulteriori impostazioni relative alla gestione della sospensione del computer, la soppressione degli avvisi eccetera...

3. Creazione dei profili

A questo punto non resta che definire i profili di rete, e le operazioni che vogliamo che vengano eseguite per ciascuno di essi.
Per la ricognizione della rete sono disponibili diverse scelte (rimando al man di guessnet per i dettagli). In questo caso verrà usato il comando "peer" che è in grado di verificare se sia raggiungibile un dato indirizzo IP associato ad un MAC address, il codice hardware univoco di ogni interfaccia di rete. La scelta dei computer di riferimento nelle diverse reti dovrebbe prediligere computer che fungano da gateway, DNS interni o un router piuttosto che desktop che potrebbero essere frequentemente off-line.

Il MAC address è un valore esadecimale a 12 cifre nella forma XX:XX:XX:XX:XX e si ottiene con il comando arping -I interfaccia host:

# arping -I eth0 192.168.0.1
ARPING 192.168.0.1
60 bytes from XX:XX:XX:XX:XX:XX (192.168.0.1): index=0 time=165.939 usec
...

Una volta raccolti tutti gli IP e i MAC address che servono, è possibile passare alla compilazione del file di configurazione.
Quello che segue è il contenuto di /etc/network/interfaces "truccato" per includere i comandi da impartire a guessnet, ovviamente da correggere inserendo i vostri dati:

# The loopback network interface
auto lo
iface lo inet loopback

# auto non essenziale perché gestito da ifplugd
auto eth0
mapping eth0
script guessnet-ifupdown
map timeout: 10
map default: nonet
map verbose: true

# PROFILO HOME
iface home inet static
address 192.168.0.5
netmask 255.255.255.0
gateway 192.168.0.1
broadcast 192.168.0.255
up sh /etc/scrippete_personale.sh
pre-up echo -e "nameserver 192.168.0.1\nsearch neutrinet" | resolvconf -a eth0
up mount /mnt/gargantua
test peer address 192.168.0.1 mac XX:XX:XX:XX:XX:XX

# PROFILO UNIVERSITA'
iface uni inet static
address 172.16.xx.xx
netmask 255.255.252.0
gateway 172.16.xx.xx
pre-up echo -e "nameserver 193.xxx.xx.xx\nsearch xxx.unisi.it xxx.unisi.it" | resolvconf -a eth0
up mount /mnt/disk2
up /etc/init.d/samba start
down /etc/init.d/samba stop
up hostname entropia
test1 peer address 172.16.xx.xx mac XX:XX:XX:XX:XX:XX source 172.16.xx.xx
test2 peer address 172.16.xx.xx mac XX:XX:XX:XX:XX:XX source 172.16.xx.xx

# PROFILO DEFAULT
iface nonet inet dhcp

# PROFILO SENZA CONNESSIONE
#iface disconnected inet static
# test missing-cable

Nell'intestazione è definito che il mapping di eth0 è gestito da guessnet, che ha 10 secondi per riconoscere in quale rete si trova, altrimenti, in caso di fallimento, sceglierà il profilo predefinito nonet, ripiegando sul DHCP. Adesso ogni interfaccia ifacecorrisponde ad un profilo.
Per il profilo home, nel caso in cui sia raggiungibile il computer con 192.168.0.1 con il MAC address specificato, verranno assegnati IP, netmask e gli altri parametri corrispondenti alla lan domestica. Il DNS viene impostato tramite resolvconf prima di attivare l'interfaccia, altrimenti gli eventuali comandi successivi (il mount, ad esempio) non saranno in grado di risolvere correttamente i nomi. Quindi verrà eseguito uno script personalizzato e montato il disco /mnt/gargantua.

Un andamento del tutto analogo verrò seguito per il profilo uni. Prima di avviare la rete viene attivato il servizio samba, che viene automaticamente fermato quando la rete stessa verrà disattivata. Dal momento che questa rete richiede esplicitamente la definizione del nome dell'host, verrà eseguito il comando hostname.

test1 peer address 172.16.xx.xx mac XX:XX:XX:XX:XX:XX source 172.16.xx.xx

Dato che il computer non ha ancora un suo indirizzo, tutte le sue richieste proverranno dall'indirizzo inesistente 0.0.0.0. A seguito di scelte di sicurezza è possibile che alcuni server non rispondano ad interrogazioni anonime con il protocollo ARP, e per ovviare a questo inconveniente viene simulato un indirizzo che sia plausibile. Niente di meglio dell'indirizzo che il portatile dovrebbe avere in questa rete.

Per praticità nella gestione, tutte le operazioni possono essere incluse in uno script specifico per ciascun profilo, ma in questo caso è stata lasciata la notazione esplicita nel file interfaces per rendere più chiaro ogni passaggio.

4. La prova del fuoco

Se tutto è andato come si deve, riavviando i servizi ifplugd e network

# /etc/init.d/ifplugd restart
# /etc/init.d/network restart

...con una zaffata di zolfo e un ghigno satanico (nonchè un bip di ifplugd), il vostro portatile sarà perfettamente configurato per la rete.

5. Estensioni & miglioramenti

Come già detto, questa non è una guida esaustiva, e le possibilità di configurazione e di personalizzazione sono tante quante sono le esigenze di ciascuno.

-Per esempio un semplice script come quello che segue, lanciato con il comando "up" potrebbe curarsi di connettersi ad una wlan:

#!/bin/sh
iwconfig wlan0 essid nome_essid
iwconfig wlan0 key xxxx-xxxx-xx

-Nel caso in cui siano presenti più possibilità di scelta contemporanee (wifi e lan nello stesso posto) è possibile gestirne automaticamente le rispettive priorità con il pacchetto ifmetric (vedi i link) per far sì che nel momento in cui venga staccato il cavo ethernet, venga attivata immediatamente la connessione senza fili, e viceversa.

Link utili

Riporto alcuni dei link che ho consultato e dai quali ho attinto per mettere su questa guida. Ne consiglio la lettura per la gestione della wlan, la discussione delle alternative a Guessnet e per un approfondimento sulle operazioni possibili.

La guida Debian: configurare la rete

La homepage di Guessnet (inglese)

Roaming Ethernet configuration with Guessnet (inglese)

Profili di rete con WiFi su Debian Administration (inglese)

Howto Set Up Multiple Network Schemes on a Linux Laptop (inglese e un po' datato ma utile)

Il pacchetto Debian Ifmetric

eNjoy





Commenti

Ritratto di pietro
#1

Inviato da pietro il Mar, 26/09/2006 - 10:38.

Ottima guida

Ottima guida! Devo dire che anch'io ci avevo provato qualche tempo fa, ma poi al lavoro ero costretto quasi sempre ad utilizzare Winsozz, mentre a casa utilizzavo sempre Linux, per cui ho lasciato perdere: ma con una guida così ben fatta vale la pena riprovarci.

Un bel 9 (sennò ti siedi sugli allori e non produci più guide... Wink )

Pietro

Debian. Be unique.



Ritratto di Stefano
#2

Inviato da Stefano il Mar, 26/09/2006 - 18:26.

Re:: Ottima guida

Ottima.
Perchè non la passi su ILDNPedia?

www.ildnpedia.net
user: ildnpedia
pass: monnalisa81ui

Stefano Mainardi - Founder of ILDN & CEO of Twinbit



Ritratto di kripsio
#3

Inviato da kripsio il Mer, 27/09/2006 - 00:40.

Re:: Ottima guida

fuzzica fuzzica... mi metterò a fare i miei script di up&down... sueggiù... mmmm... Smile
notina:

# arping
Usage: arping [-fqbDUAV] [-c count] [-w timeout] [-I device] [-s source] destination

la I è maiuscola almeno in sid :
dpkg -l | grep arping
ii  iputils-arping                   20020927-3

anche io ti invito come stefano a passarla su ildnpedia e rilasciarla con licenza fdl (così ci smanazzo sopra Laughing
ciao e davvero grazie milleeee!



Ritratto di ntropia
#4

Inviato da ntropia il Mer, 27/09/2006 - 01:20.

Re:: Ottima guida

Chi di supermucca ferisce... Wink

$ apt-cache search arping
iputils-arping - Tool to send ICMP echo requests to an ARP address
arping - sends IP and/or ARP pings (to the MAC address)
...

Quanto alla "I" maiuscola, faccio ammenda e rimedio subito!

Ho provato un paio di volte a tentare l'inserimento in ILDN: se avete qualche guida in merito su quale procedura seguire, vi sarei grato... specialmente se si spiegasse pure come mantenere questa formattazione senza dover rimettere mano a tutto il codice in HTML (incapace me medesimo)

Chiaramente la licenza è FDL, quindi sarei onorato del tuo contributo, come di quello di chiunque altro.

eNjoy

Chi ha intendimento conti il numero della Bestia, perché è un numero d'uomo; e il suo numero è... rw-rw-rw-



Ritratto di kripsio
#5

Inviato da kripsio il Mer, 27/09/2006 - 09:28.

Re:: Ottima guida

Abbiamo anche un tool di conversione scritto da uno dei soci... non so se sei iscritto alla lista progetti. Se hai qualche minuto ti invito ad iscriverti: http://www.ildn.net/cgi-bin/mailman/listinfo/progetti-lists.ildn.net

poi eventualmente posta il fatto che hai scritto la guida e vediamo di convertirla così devi solo rivederla.

Altra nota.
Con mediawiki puoi scrivere con un linguaggio di markup simile a quello delle guide dei portali: non è necessario scrivere in html Smile
A presto!



Ritratto di citizendick
#6

Inviato da citizendick il Gio, 07/12/2006 - 13:30.

Re:: Ottima guida

Fantastico!!! Smile

cercavo di fare una cosa del genere chissà da quanto tempo senza riuscirci mai, adesso come posso cerco di applicare la guida al mio portatile

Ciao e grazie Laughing