Configurare le schede di rete in Slackware
Inserito il 23 aprile 2009 in Slackware How-To 
Introduzione
Questo articolo è inteso come una guida sui files di configurazione delle schede di rete in Slackware.
Cercherò di aggiornarlo in base agli input ricevuti ed ai cambiamenti che avverranno nella Slackware -current.
La base di questo articolo è il documento Configuring your network in Slackware di Eric Hameleers (Alien BOB), di cui si può definire una traduzione personalizzata e riassuntiva.
Per una spiegazione dettagliata riguardo il networking nella Slackware, non presente in questo articolo, si può fare riferimento a Slackware for Dummies, che consiglio sempre di leggere prima di utilizzare la Slackware.
Nella Slackware lo script /etc/rc.d/rc.inet1, che è molto ben “autodocumentato”, configura tutte le interfacce di rete, comprese le interfacce wireless e di loopback. Se lo script rileva che si tratta di un interfaccia wireless, verrà richiamato lo script /etc/rc.d/rc.wireless per configurare l’interfaccia wireless relativa. Entrambi gli script prendono le informazioni di configurazione dallo stesso file: /etc/rc.d/rc.inet1.conf. Il file di configurazione /etc/rc.drc.wireless.conf è deprecato e fondamentalmente inutile.
La configurazione delle schede di rete in Slackware si basa fondamentelmente sul file /etc/rc.d/rc.inet1.conf, in cui ci soffermeremo maggiormente, più alcune parti di UDEV e wpa_supplicant per casi particolari.
Premessa
In questo documento do per scontato che le schede di rete (wired o wireless) siano già attive e funzionanti, per sapere come installare i driver di una scheda wireless rifarsi sempre alla documentazione di riferimento.
Disclaimer
Non mi assumoo la responsabilità di eventuali danni provocati al vostro computer. Fate sempre le cose dopo averle ben capite e verificate. E dopo aver fatto un backup di ogni file modificato.
Network subsystem
La Slackware ha un sottosistema di rete lineare. Un dispositivo di rete sarà utilizzato dalla Slackware solo se verrà trovato il minimo richiesto di paramentri configurazione. Il più importante di essi è che deve essere noto se la scheda utilizza il protocollo DHCP per ottenere un indirizzo IP o se sarà utilizzato un indirizzo IP statico.
Ma come vengono caricati i driver per configurare ed attivare l’interfaccia di rete?
1) Automaticamente al momento del boot
Al momento del boot, UDEV “sonda” il nostro hardware e, sulla base delle informazioni che riceve, carica un modulo del kernel o più. Il feedback che riceve dal kernel, insieme alla stesse regole di UDEV, determinano in che modo l’hardware verrà attivato e configurato. Per esempio con quale nome, quale impostazioni, etc…
Per le interfacce di rete, lo script /lib/udev/rules.d/90-network.rules determina le azioni da compiere al riconoscimento di una interfaccia di rete. Per ogni interfaccia viene eseguito lo script /lib/udev/nethelper.sh con il nome dell’interfaccia stessa (che è stato creato dal kernel al caricamento dei driver relativi) come parametro.
Bisogna notare che l’attivazione della rete non deve avvenire troppo presto durante la fase di boot, questo perché alcune directory richieste (come /var per esempio) possono non essere state ancora montante, se non sono sulla partizione root. Quindi conviene non modificare l’ordine degli script di boot.
Durante il boot, lo script nethelper.sh attiverà la scheda di rete tramite lo script /etc/rc.d/rc.inet1 in questo modo:
/etc/rc.d/rc.inet1 INTERFACE_start
dove INTERFACE è il nome dell’interfaccia da avviare.
Questo naturalmente solo se si aggiungono i dati richiesti nel file di configurazione /etc/rc.d/rc.inet1.conf. Vedremo in seguito i vari parametri di questi file.
UDEV farà sì che la scheda di rete avrà sempre il nome che aveva inizialmente.
A titolo di esempio, pensiamo a cosa succede se si dispone di una interfaccia eth0 e poi si aggiunge un ulteriore scheda di rete al computer. Questa nuova scheda potrebbe venire rilevata prima di quella vecchia e questo avrebbe come conseguenza che il kernel assegnerà eth0 alla nuova scheda, lasciando eth1 per la vecchia scheda.
Se abbiamo degli script che utilizzano tale nome, per esempio script iptables, potrebbero non funzionare come ci aspettiamo. Per evitare che questo succeda, UDEV utilizza lo script /lib/udev/rules.d/75-persistent-net-generator.rules.
Questo script si occupa di scrivere il file /etc/udev/rules.d/70-persistent-net.rules che indica al sistema quale nome avrà una determinata scheda con un determinato MAC address
Il file ha una struttura come questa
# PCI device 0x10b7:0x9055 (3c59x)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:10:5a:ac:13:53", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
# PCI device 0x10b7:0x9055 (3c59x)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:10:5a:ac:13:54", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
# USB device 0x083a:0x4505 (zd1211rw)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:13:f7:88:6c:ba", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan0"Come possiamo vedere ogni scheda è definita tramite il suo MAC address ed associata ad un nome che manterrà sempre, a condizione che questo file esiste.
Se si pensa che ci sia qualcosa di sbagliato nella denominazione delle interfacce di rete (come nel caso in cui si sia clonato il sistema per l’uso su un altro computer o in una Virtual Machine) si può tranquillamente cancellare il file. Al prossimo boot udev si occuperà di creare un nuovo file con le informazioni corrette.
Nota: Come si può capire, tramite questo file si può modificare a mano il nome dell’interfaccia creata dal kernel. Per esempio per avere sempre wlan* per le schede Wifi, alcune delle quali vengono riconosciute come eth*. Basta cambiare il valore della “variabile” NAME
2) Pre-definito al momento del boot
Se udev non rileva la scheda, o se non si usa udev, o se si desidera semplicemente assicurarsi che il driver della scheda sia sempre caricato, è possibile creare un file con il nome del file /etc/rc.d/rc.netdevice ed aggiungere il comando modprobe con il nome del modulo per caricare il driver per la scheda. Per le schede ethernet viste nell’esempio precedente il comando sarebbe simile a questo:
/sbin/modprobe 3c59x
Non dimenticate di rendere il file eseguibile!
chmod + x /etc/rc.d/rc.netdevice
Nota: Naturalmente il comando modprobe si può inserire nel file /etc/rc.d/rc.modules, ma inserendolo in /etc/rc.d/rc.netdevice viene caricato solamente se la rete viene avviata, cioè se il file /etc/rc.drc.inet1 ha i permessi di esecuzione.
Al termine del processo di riconoscimento dell’hardware, lo script di avvio /etc/rc.d/rc.M eseguirà /etc/rc.d/rc.inet1 senza parametri, per assicurare che ogni interfaccia di rete, della quale abbiamo sufficienti dati di configurazione, sia configurata e disponibile al sistema.
3) Runtime
Udev gestisce anche l’aggiunta e la rimozione a “runtime” delle periferiche di rete. Per esempio nel caso di dispositivi usb.
Verrà eseguita la stessa procedura descritta precedentemente, con l’aggiunta che alla rimozione della periferica verrà lanciato il comando
/ etc/rc.d/rc.inet1 INTERFACE_stop
che disattiverà l’interfaccia.
4) A richiesta dell’utente
Un utente può decidere di arrestare, avviare o riavviare ogni interfaccia di rete in esecuzione direttamente con uno dei seguenti comandi
/ etc/rc.d/rc.inet1 INTERFACE_stop / etc/rc.d/rc.inet1 INTERFACE_start / etc/rc.d/rc.inet1 INTERFACE_restart
Questo ultimo comando più essere utilizzato dopo la sostituzione di uno dei parametri di configurazione dell’interfaccia, come ad esempio l’indirizzo IP, o la chiave di crittografia wireless.
Configurazione di rc.inet1.conf
Le interfacce di rete nella Slackware sono configurate tramite il file /etc/rc.d/rc.inet1.conf
Sia quelle wired, sia quelle wireless. Il file /etc/rc.d/rc.wireless.conf è deprecato come abbiamo detto.
Nota: Normalmente durante il setup della Slackware questo file viene generato dal comando netconfig, il quale però ha il difetto di configurare solamente la prima interfaccia di rete wired, solitamente eth0. Quindi conviene familiarizzare con la struttura di tale file per modificarlo a mano in caso di necessità.
Non bisogna spaventarsi nel dover configurarlo “a mano”, infatti il file /etc/rc.d/rc.inet1.conf consiste essenzialmente in una serie di parametri definiti tramite degli array. Ogni elemento di un array si riferisce alla scheda di rete con lo stesso “indice”. Per esempio
# Informazioni per eth0: IPADDR[0]="" NETMASK[0]="" USE_DHCP[0]=""
si riferiscono tutti alla stessa scheda di rete, cioè eth0. Questo perché di default il nome dell’interfaccia è eth più il numero d’indice.
Quindi l’esempio precedente quindi si riferisce all’interfaccia eth0, l’interfaccia con il numero indice 1 sarà invece eth1, e così via.
Se vogliamo cambiare il nome di default dell’interfaccia possiamo utilizzare la variabile IFNAME come vedremo in seguito.
Si tratta di informazioni che sono facilmente modificabili tramite editor come vi o nano. Ed in effetti questo è il modo in cui viene aggiornata la configurazione di rete nella Slackware.
Nota: Il numero di interfacce predefinito è 6, se abbiamo bisogno di più interfacce dobbiamo cambiare il valore della variabile MAXNICS nel file /etc/rc.d/rc.inet1. Per esempio dal valore di default MAXNICS=6 a MAXNICS=10.
Parametri di configurazione wired
Vediamo in dettaglio le opzioni possibili per le interfacce wired, mentre i parametri per le periferiche wireless saranno spiegati nella sezione apposita.
In questo esempio prendiamo come esempio la prima scheda di default
- IPADDR[0]=”"
- Setta l’indirizzo IP statico che vogliamo assegnare all’interfaccia
- NETMASK[0]=”"
- Se usiamo un IP statico, e quindi l’opzione precedente, qui va inserita la relativa netmask
- USE_DHCP[0]=”yes/no”
- Questa variabile, che può assumere i valori “yes” e “no” (quando una variabile di questo tipo è vuota si assume valore “no”), indica se vogliamo utilizzare un server DCHP per l’assegnamento dinamico di un indirizzo IP. Se ha valore “yes” i valori delle variabili precedenti sono ignorati.
- DHCP_HOSTNAME[0]=”"
- Qui va inserito l’hostname (il nome) del server DHCP
- DHCP_TIMEOUT[0]=
- Questa variabile indica il valore di “attesa”, in secondi, prima che il server DHCP ci assegni un indirizzo IP. Il valore di default è 30 secondi, se vogliamo velocizzare gli script di avvio nel caso il server DCHP non funzionasse possiamo diminuire tale valore, se invece vogliamo aumentarlo perché il server è lento possiamo aumentarlo.
- DHCP_KEEPRESOLV[0]=”yes/no”
- Questo parametro serve per impedire la sovrascrittura del file /etc/resolv.conf, in pratica per non far assegnare al sistema i DNS del server DCHP
- DHCP_KEEPNTP[0]=”yes/no”
- Con questo parametro indichiamo di non sovrascrivere il file /etc/ntp.conf per la modifica dell’orologio di sistema con i valori assegnati dal server DCHP
- DHCP_KEEPGW[0]=”yes/no”
- Questo se non vogliamo modificare il default gateway del sistema
- DHCP_IPADDR[0]=”"
- Qui possiamo inserire un indirizzo IP per “richiederlo” al server DHCP, se questo è possibile.
- DHCP_DEBUG[0]=”yes/no”
- Imposta la visualizzazione dei messaggi di debug di dhcpd
- DHCP_NOIPV4LL[0]=”yes/no”
- Non assegna un indirizzo ipv4ll quando non viene trovato un server dhcp. IPv4LL, “Dynamic Configuration of IPv4 Link-Local Addresses (IETF RFC3927)”, è un protocollo per la configurazione automatica degli indirizzi IP nell’intervallo 169.254.0.0/16 senza il bisogno di un server centrale. È anche conosciuto come indirizzo “zeroconf”.
- IFNAME[0]=”"
- Qui possiamo inserire il nome dell’interfaccia se non è quello di default.Per esempio se volessimo configurare una periferica chiamata tr0, o anche creare un alias per un interfaccia di rete virtuale come eth0:1
- HWADDR[0]=”"
- Qui possiamo inserire un MAC address per sovrascrivere quello dell’interfaccia di rete. Non tutti i driver lo permettono.
- MTU[0]=”"
- Con questo parametro modifichiamo il valore MTU di default che è 1500. Per esempio in contesti come una connessione pppoe, o quando usiamo NAT ed IPSec, può essere utile modificarlo.
Un esempio di configurazione potrebbe essere questo
IPADDR[0]="" NETMASK[0]="" IFNAME[0]="eth0:1" HWADDR[0]="00:01:23:45:67:89" MTU[0]="1492" USE_DHCP[0]="yes" DHCP_HOSTNAME[0]="darkstar" DHCP_TIMEOUT[0]=10 DHCP_DEBUG[0]="no" DHCP_NOIPV4LL[0]="yes" DHCP_KEEPRESOLV[0]="yes" DHCP_KEEPNTP[0]="yes" DHCP_IPADDR[0]="192.168.1.120"
Parametri di configurazione wireless
Abbiamo visto in precedenza i parametri per le interfaccie wired. Per le schede wireless ci sono dei parametri aggiuntivi, le cui impostazioni avviene tramite variabili che iniziano con il prefisso WLAN_
Naturalmente valgono sempre le variabili viste in precedenza, la più importante delle quali è la variabile IFNAME, visto che le periferiche wireless normalmente non assumono il nome eth*, ed anche quando succede abbiamo visto che si può modificare per fare in modo da rendere comprensibile a quale tipologia di interfaccia ci stiamo riferendo.
Per esempio una configurazione veloce per una interfaccia wireless con nome WLAN0 ed utilizzando dhcp sarebbe questa:
# Config information for wlan0 (using dhcp): IFNAME[1]="wlan0" IPADDR[1]="" NETMASK[1]="" USE_DHCP[1]="yes" DHCP_HOSTNAME[1]="mywirelessbox"
Nota: Nel precedente esempio abbiamo utilizzato l’indice 1, come in IFNAME[1]
Si può utilizzare qualsiasi indice che non sia utilizzato per un altra scheda di rete. Se per esempio non si dispone di un interfaccia eth0, si può utilizzare l’indice 0. L’importante è non usare lo stesso indice per due schede contemporaneamente, tanto abbiamo 6 indici, e come abbiamo visto possiamo incrementare questo valore tramite la variabile MAXNICS nel file /etc/rc.d/rc.inet1
Se all’esempio precedente volessimo aggiungere i parametri per collegarsi all’access point tramite una chiave WEP, basterà aggiungere le variabili apposite. Per esempio:
IFNAME[1] = "wlan0"
...
WLAN_MODE[1] = Managed
WLAN_ESSID[1] = "my access point essid"
WLAN_KEY[1] = "D5AD1F04ACF048EC2D0B1C80C7"Nota: abbiamo utilizzato un ESSID (Sistema di identificazione in reti Wireless, normalmente il nome dell’Access Point stesso) che ha al suo interno spazi. Ciò richiede che si usi il nome tra virgolette: “my access point essid”. Quando il punto di accesso ha un nome senza spazi, non si ha bisogno di queste virgolette – in effetti è meglio non usarle in quel caso. Per esempio: WLAN_ESSID[1] = Darkstar
Altri parametri possono essere il canale utilizzato ed la velocità di trasmissione. Normalmente sono automatici, ma in caso di interferenze o di altra necessità si possono specificare a mano. Per esempio con
IFNAME [1] = "wlan0"
...
WLAN_RATE[1]="54M"
WLAN_CHANNEL[1]="6"Lasciare questi valori non definiti (o ad “auto”) farà sì che il driver cercherà il canale appropriato e definirà una velocità di trasmissione dinamica.
Vediamo meglio i parametri wireless
- IFNAME[1]=”wlan0″
- Per utilizzare un nome diverso rispetto al default eth1
- WLAN_ESSID[1]=DARKSTAR
- L’ESSID del nostro AP
- WLAN_MODE[1]=Managed
- Modalità di connessione. “Managed” per l’uso con un AP, “Ad hoc” per connessioni peer-to-peer.
- WLAN_RATE[1]=”54M auto”
- La velocità di trasmissione che si vuol fare provare al driver. Con “auto” si intende che la velocità può essere variabile.
- WLAN_CHANNEL[1]=”auto”
- Il canale in cui l’AP è regolato. Utilizzare “auto” per permettere al driver di trovare il canale corretto
- WLAN_KEY[1]=”D5A31F54ACF0487C2D0B1C10D2″
- La chiave WEP
- WLAN_IWPRIV[1]=”set AuthMode=WPAPSK | set EncrypType=TKIP | set WPAPSK=thekey”
- Alcuni driver richiedono parametri opzionali (privati) da impostare tramite il comando iwpriv. Se ci sono più parametri è possibile separarli con la pipe (|) come si vede dall’esempio.
- WLAN_WPA[1]=”wpa_supplicant”
- Avvia wpa_supplicant per il supporto WPA
- WLAN_WPADRIVER[1]=”ndiswrapper”
- Indica a wpa_supplicant quale driver utilizzare. In questo caso abbiamo detto di usare il driver ndiswrapper. Se si lascia vuoto questo campo verrà viene utilizzato il driver di default che è ‘wext’. La maggior parte delle schede wifi utilizza ‘wext’
- WLAN_WPAWAIT[1]=30
- Indica il tempo di attesa in secondi prima di terminare di ottenere l’associazione WPA. Di default è 10 secondi.
Per conoscere in dettaglio i parametri WLAN_ disponibili, ed i valori che possono assumare, basta leggere la pagina man di iwconfig. Questi parametri si possono convertire direttamente in comandi di iwconfig.
Nota: Per la chiave WEP esiste anche la modalità “stringa”, per esempio WLAN_KEY[1]=”s:miachiave”, ma visto che sconsiglio l’utilizzo di chiavi WEP non sarà trattata in questa sede. Anche in questo caso “man iwconfig” spiega i valori che può assumere tale variabile.
In una configurazione base con autenticazione WAP, che consiglio sempre, e assegnazione dinamica dell’IP con DCHP, basteranno poche righe in rc.inet1.conf. Per esempio:
IFNAME[1] = "wlan0" USE_DHCP[1] = "yes" WLAN_WPA[1] = "wpa_supplicant"
WPA encryption
WPA è sinonimo di Wi-Fi Protected Access. Si tratta di uno standard di cifratura che è stato elaborato dopo che è diventato chiaro che l’algoritmo di cifratura WEP (Wired Equivalent Privacy) era alquanto lacunoso, infatti WEP può essere rotto (cracked) in pochi secondi.
WPA non è sicuro al 100%, ma è molto più difficile da rompere rispetto a WEP. Per questo bisogna assicurarci di utilizzare una passphrase non banale per creare la chiave WPA, se si utilizzano parole comuni si rende la vita facile agli attacchi tramite dizionario.
Vediamo adesso come configurare una connessione che utilizza la cifratura WPA.
Per abilitare il supporto per WPA assicuriamoci per prima cosa che sia installato il pacchetto wpa_supplicant, il quale è parte integrante di una installazione full della Slackware.
Il file di configurazione di wpa_supplicant è /etc/wpa_supplicant.conf, il quale di default dovrebbe avere una parte simile a questa:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=1
ap_scan=1
fast_reauth=1
network={
scan_ssid=0
ssid="your_essid"
proto=WPA RSN
key_mgmt=WPA-PSK WPA-EAP
pairwise=CCMP TKIP
group=CCMP TKIP
psk=your_64_hex_characters_long_key
}In una configurazione base basta cambiare le variabili ssid e psk.
SSID è l’identificativo dell’access point, lo stesso valore messo nella variabile ESSID nel file rc.inet1.conf. psk è la Pre Share Key, la quale può ottenuta a partire dalla passphrase con un comodo comando
# wpa_passphrase YOURSSID passphrase
Naturalmente come detto prima YOURSSID sarà l’ESSID del vostro Access Point e la passphrase è la stringa che abbiamo inserito nell’access point.
L’output sarà qualcosa simile a questo:
# wpa_passphrase Darkstar pippo234pluto432
network={
ssid="Darkstar"
#psk="pippo234pluto432"
psk=5c6618176bf8a90d7dcb54e43c6adb45faf932bf756b63848531c84cca9c6e42
}Basterà copiare le tre linee che si trovano all’interno della sezione network ed inserirle nella stessa sezione del file /etc/wpa_supplicant.conf, il quale diventerà così:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=1
ap_scan=1
fast_reauth=1
network={
scan_ssid=0
ssid="Darkstar"
proto=WPA RSN
key_mgmt=WPA-PSK WPA-EAP
pairwise=CCMP TKIP
group=CCMP TKIP
#psk="pippo234pluto432"
psk=5c6618176bf8a90d7dcb54e43c6adb45faf932bf756b63848531c84cca9c6e42
}Nota: Non dimenticate di controllare i permessi del file di configurazione! La chiave che contiene deve essere protetta da occhi indiscreti. Di default questo file è visibile infatti solamente all’utente root
Se abbiamo un file rc.inet1.conf come visto in uno degli esempi precedenti senza WPA
# Config information for wlan0 (using dhcp): IFNAME[1]="wlan0" IPADDR[1]="" NETMASK[1]="" USE_DHCP[1]="yes" DHCP_HOSTNAME[1]="mywirelessbox"
utilizzando WPA diventerà
# Config information for wlan0 (using dhcp): IFNAME[1]="wlan0" IPADDR[1]="" NETMASK[1]="" USE_DHCP[1]="yes" DHCP_HOSTNAME[1]="mywirelessbox" WLAN_WPA[1]="wpa_supplicant" WLAN_WPADRIVER[1]="wext"
Come abbiamo visto prima wext è il valore di default per WLAN_WPADRIVER, quindi potrebbe essere omesso.
WEXT sta per Wireless Extension ed è il protocollo con cui wpa_supplicat ed il driver wireless del kernel comunicano. Normalmente viene utilizzato wext, ma se si ha bisogno di un altro “protocollo”, chiamato driver in wpa_supplicant, si può inserire il valore desiderato. Per sapere quale sono supportati basta lanciare wpa_supplicant senza parametri e vedere la sezione drivers:
# wpa_supplicant wpa_supplicant v0.5.10 Copyright (c) 2003-2008, Jouni Malinen <j@w1.fi> and contributors ... drivers: wext = Linux wireless extensions (generic) hostap = Host AP driver (Intersil Prism2/2.5/3) atmel = ATMEL AT76C5XXx (USB, PCMCIA) ndiswrapper = Linux ndiswrapper ipw = Intel ipw2100/2200 driver (old; use wext with Linux 2.6.13 or newer) wired = wpa_supplicant wired Ethernet driver ...
Per esempio se si utilizza una vecchia versione di ndiswrapper (le attuali versioni di ndiswrapper richiedono “wext”) si potrebbe aver bisogno di utilizzare “ndiswrapper” invece di “wext” come driver, in questo caso inserire
WLAN_WPADRIVER [1] = "ndiswrapper"
Riavviare la scheda di rete
Dopo aver effettuato le necessarie modifiche al file di configurazione è possibile riavviare la nostra scheda di rete wireless (wlan0) con il comando:
# /etc/rc.d/rc.inet1 wlan0_restart
Naturalmente questo va effetuato solamente la prima volta, le volte successive sarà avviata con i giusti parametri in fase di inizializzazione della scheda di rete.
Nota: Nella Slackware wpa_supplicant è configurato con il supporto ad HAL, quindi a meno di problemi con il driver del kernel, l’inizializzazione della scheda wireless avverrà solamente all’attivazione della stessa. Questo è molto utile se abbiamo una chiavetta usb wifi o un portatile con il pulsante di accensione della periferica.
WPA2
WPA2 è considerato un protocollo di crittografia più sicuro di WPA. Tuttavia, non tutti gli access point lo supportano, soprattutto quelli più vecchi.
wpa_supplicant.conf configurato come nell’esempio precedente supporta sia WPA sia WPA2.
La linea che indica il protocollo è:
proto=WPA RSN
la quale può essere cambiata in
proto=WPA WPA2
in quanto WPA2 è un alias per RSN
Nota: wpa_supplicant gestisce anche altri tipi autenticazione, per conoscere ogni possibile autenticazione supportata e relativa configurazione rifarsi alla documentazione di wpa_supplicant
WPA Debugging
Se la connessione WPA non si attiva, ci sono diversi modi per effettuare il debug e trovare il problema.
Negli esempi seguenti utilizzeremo come nome dell’interfaccia wlan0, sostituire con il nome della vostra interfaccia wireless.
Debug del processo di autenticazione
Assicurarsi che l’interfaccia di rete sia ferma
# /etc/rc.d/rc.inet1 wlan0_stop
Avviare il demone wpa_supplicant come processo in primo piano, con il debug abilitato:
# wpa_supplicant--c/etc/wpa_supplicant.conf dw-Dwext-iath0
Quindi, attivare l’interfaccia di rete in un altro terminale
# /etc/rc.d/rc.inet1 ath0_start
A questo punto dobbiamo vedere l’output di wpa_supplicant nel primo terminale, il quale potrebbe dare indicazioni per cercare una soluzione.
Stato di wpa_supplicant in esecuzione
Per visualizzare lo stato attuale del processo di autenticazione di wpa_supplicant lanciare
#wpa_cli status
Se abbiamo più di una interfaccia wireless che utilizza wpa_supplicant, va indicata nel comando tramite l’opzione -i
#wpa_cli -i wlan0 status
Debug del processo di inizializzazione della rete della Slackware
Cambiare la linea
DEBUG_ETH_UP = "no"
in
DEBUG_ETH_UP = "yes"
nel file /etc/rc.d/rc.inet1.conf, riavviare la rete e guardare i messaggi che vengono scritti in /var/ log/messages (per esempio con il comando tail), mentre le interfacce vengono configurate. È possibile che quei messaggi aiutino a trovare il problema.
NOTA: con il debug attivato, Slackware scriverà in chiaro le chiavi WEP/WPA nei messaggi di log!
L’autenticazione WPA richiede molto tempo.
L’autenticazione WPA potrebbe richiedere più tempo di quello previsto.
Con il debug attivo (DEBUG_ETH_UP=”yes”) possiamo capire questa cosa tramite messaggi nel file /var/log/messages come questi:
WPA authentication did not complete, try running '/etc/rc.d/rc.inet1 wlan0_start' in a few seconds.
In questo caso possiamo riavviare l’interfaccia dopo poco tempo, come indicato dal messaggio di debug, oppure aumentare il tempo di attesa per l’autenticazione tramite il parametro WLAN_WPAWAIT nel file rc.inet1.conf, come abbiamo visto in precendenza.
Per esempio inserire la linea
WLAN_WPAWAIT[1]=30
che indica un tempo di attesa di 30 secondi (il default è 10). Naturalmente inserire il valore che si reputa necessario.
ESSID nascosto
In alcune circostanze si hanno problemi con WPA quando si utilizza un Access Point che nasconde l’ESSID.
Pertanto conviene trasmettere l’ESSID in quanto non ha molto senso nasconderlo perché anche con la crittografia ci saranno sempre i pacchetti che devono essere trasmessi in chiaro, ed una delle cose che non può essere cifrata è proprio l’ESSID!
In che altro modo una scheda senza fili puo’ capire che sta parlando col giusto punto di accesso se non puo’ leggere l’ESSID?”
In ogni caso, con la protezione WPA non si deve avere paura di accessi non autorizzati al proprio Access Point, a meno che non si utilizza una passphrase facile da indovinare
Problemi noti
Errore di Set Nickname
Se durante l’inizializzazione della scheda wireless notiamo un errore tipo:
Error for wireless request "Set Nickname" (ESSID) : SET failed on device wlano ; Operation not supported.
non dobbiamo preoccuparci. Questo è dovuto al file /etc/rc.drc.wireless.conf che come abbiamo detto è deprecato. Per non visualizzare questo errore possiamo eliminare tale file o modificarlo nella parte
# Generic example (decribe all possible settings) *)
cambiandola per esempio con
# Generic example (decribe all possible settings) X*)
serialmonkey driver RaLink
il supporto WPA2 per i vecchi driver RaLink prodotti da serialmonkey è dato da una configurazione con un comando iwpriv di questo tipo (vedi la precedente sezione sui rc.inet1.conf per vedere la differenza con l’esempio WPA1):
WLAN_IWPRIV[1]="set AuthMode=WPA2PSK | set EncrypType=AES | set WPAPSK=the_64_character_key"
Aggiornamenti di questo documento
Cercherò di aggiornare questo documento in base ai vostri suggerimenti ed alle modifiche della -current e del wiki di Alien Bob
Quindi se manca qualcosa o se avete suggerimenti/consigli lasciate un commento.
Link esterni
- Configuring your network in Slackware
- Sezione Network su Slackware.com
- SlackBook
- WPA Supplicant home page
Changelog
06/08/2009: Aggiunta di due parametri a rc.inet1.conf
24/09/2009: Prima stesura del documento
Copyright
Per la versione italiana:
Copyright (c) 2009 by Corrado “Conraid” Franco
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
A copy of the license is available from http://www.fsf.org/licenses/fdl.html.
Tutti i copyright sono di proprietà dei rispettivi detentori, a meno che indicato diversamente. L’uso di un termine in questo documento non inficia la validità di qualunque marchio di fabbrica o marchio di servizio.
Nominare un particolare prodotto o marchio non deve essere considerato come pubblicità.
Per la versione originale:
Copyright 2006,2007,2008,2009 Eric Hameleers

ottima guida conraid, verrà utile a molti utenti intenzionati a capire come configurare la propria rete senza utilizzare tool grafici esterni…
la guida è fatta bene, manca solo un riferimento a wicd. Lo uso da quando è comparso in extra e devo dire che non mi ha mai dato problemi, forse per chi è meno esperto conviene orientarsi in quella direzione, alla fine basta un installpkg e un chmod +x…
Una parte per wicd e simili è prevista in futuro. Nel documento di Alien Bob è appena accennata, non so se lasciarla anche io così o farla più ampia, forse in questo caso conviene fare un how-to separato
ottima guida !!! grazie mille! mi ha chiarito un sacco di dubbi !