Ifplugd: connessione automatica

Debian-swirl.png Versioni Compatibili

Debian 8 "jessie"
Debian 9 "stretch"
Debian 10 "buster"

Introduzione

Capita spesso, ai possessori di notebook/netbook, di spostarsi da una rete all'altra per esigenze diverse (lavoro, studio, etc.) e di essere costretti volta per volta a reimpostare tutti i parametri per poter operare all'interno di quella rete. È vero che esistono tool grafici che permettono di usufruire di profili diversi e di sceglierli di volta in volta, ma è anche vero che essi sono comunque applicativi che “pesano” sulle risorse di sistema e che, soprattutto, “nascondono” all'utilizzatore le procedure che mettono in atto.
Questa guida si rivolge a coloro i quali gradirebbero ottenere lo stesso risultato “sporcandosi le mani”, intervenendo direttamente dentro i file di configurazione.

ifplugd

Il pacchetto ifplugd contiene un demone che "osserva" le interfacce di rete specificate e attiva la connessione non appena rileva la presenza di un collegamento su una di esse.

Il suo uso è semplicissimo, basta semplicemente installarlo e riconfigurarlo:

# dpkg-reconfigure ifplugd

il sistema chiederà di specificare le interfacce che si vogliono monitorare. Se si posseggono più schede esse potranno essere inserite tutte, separate da spazi (ad esempio: eth0 eth1 wlan0).

Da questo momento in poi la connessione verrà automaticamente attivata secondo quanto impostato nel file /etc/network/interfaces ;-).

impostazione automatica dei parametri di rete

Come detto, l'obiettivo a cui si sta mirando è quello di automatizzare la configurazione di sistema relativamente alla rete nella quale ci si trova. Per far questo il solo ifplugd non basta ma ci si dovrà avvalere anche di altri tool che dovranno essere installati prima di procedere:

  • resolvconf (gestisce i nomi dei nameserver)
  • iputils-arping (fornisce gli strumenti necessari ad effettuare il ping per Mac-Address)
  • guessnet (script in grado di effettuare dei test per identificare la rete in cui ci si trova e selezionare da un file preparato ad hoc i parametri da utilizzare=

Il tutto è presente nei repository di Debian e quindi comodamente disponibile con un semplice apt-get install! ;)

Si creeranno dei profili di rete, delle mappe che permettano al sistema di identificare la rete nella quale si trova in modo da poter impostare in automatico i parametri necessari.
Per far ciò sarà necessario identificare un computer di riferimento all'interno delle varie reti e l'unico dato davvero “attendibile” a questo proposito è il suo MAC address. Si consiglia di prediligere, per questo compito, PC che fungano da router, gateway o DNS in quanto sempre accesi e raggiungibili. In pratica il nostro notebook, al plug del cavo di rete, esplorerà il network cercando di trovare uno di questi PC di riferimento.

Per ottenere il MAC address, supponendo che l'IP del PC che ci interessa sia 192.168.1.1:

# arping -I eth0 192.168.1.1
ARPING 192.168.1.1 60 bytes from aa:bb:cc:dd:ee:ff (192.168.1.1):
index=0 time=160.043 usec

dove aa:bb:cc:dd:ee:ff è il MAC address che stavamo cercando.

Raccolti i MAC address dei PC di riferimento nelle varie reti che ci interessa mappare, si preparerà "ad-hoc" il file /etc/network/interfaces:


# The loopback network interface
auto lo
iface lo inet loopback
 
# Network cards
auto eth0
# non essenziale in quanto gestito da ifplugd
 
# Avviamo la scansione delle mappe sull'interfaccia eth0 
# e impostiamo la mappa di default
mapping eth0
script guessnet-ifupdown
map timeout: 10
map default nonet
map verbose:true
 
# DEFINIZIONE DELLE MAPPE
# I test presenti in ogni mappa servono a verificare se 
# l'indirizzo interrogato è presente nella rete.
# Se l'interrogazione è positiva vengono impostati i relativi 
# parametri
 
## CASA ##
iface home inet dhcp
test peer address 192.168.1.1 mac aa:bb:cc:dd:ee:ff
 
## LAVORO ##
iface lavoro inet static
address 192.168.2.11
netmask 255.255.255.0
gateway 192.168.2.34
dns-nameservers 10.109.1.9
test peer address 192.168.2.34 mac gg:hh:ii:ll:mm:nn source 192.168.2.11
 
## UNIVERSITA' ##
iface uni inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.29
dns-nameservers 192.168.1.1
up sh /path/di/qualche/script.sh
test peer address 192.168.1.29 mac ZZ:ZZ:ZZ:ZZ:ZZ:ZZ source 192.168.1.100
 
## DEFAULT ##
iface nonet inet dhcp
 
## SENZA CONNESSIONE (cavo di rete non inserito) ##
iface disconnected inet static
address 192.168.1.111
netmask 255.255.255.0
test missing-cable


Riavviamo, a questo punto, i servizi:

# service ifplugd restart
# service networking restart

e il sistema è pronto.

Da questo momento in poi, quando inseriremo il cavo di rete, il sistema emetterà un avviso sonoro (beep) per notificare l'avvenuto plug e avvierà una serie di test (quelli contenuti in /etc/network/interfaces). Se riconoscerà una delle reti mappate, vi si connetterà in automatico.

Happy networking!




Guida scritta da: ~ The Noise 03:21, 6 Mag 2006 (EDT)   Debianized 20%
Estesa da:
pmate 16:50, 14 ott 2011 (CEST)
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized