Wireless+wpa con zd1211






Vediamo qui come configurare correttamente una scheda wireless

usb con slackware,la scheda che qui prendiamo in esame e' la

zyxel g-air 220.

Attenzione:non rispondo in nessun caso di danni al vostro hardware,




Pacchetti necessari


  1. kernel 2.6.24.3 o superiore
  2. kernel headers
  3. gcc
  4. wpa_supplicant
  5. wireless tools
  6. firmware zd1211
  7. udev
  8. usbutils
Kernel e riconoscimento scheda


La scheda wireless zyxel g-air 220 è supportata

dal kernel 2.6 dovete solo inserirla dopo aver

installato il firmware,appena inserita

appariranno linee simili a queste


zd1211rw 1-2:1.0: firmware version 4605
zd1211rw 1-2:1.0: zd1211 chip 0586:3401 v4810 high 00-13-49 AL2230_RF pa0 ---
zd1211rw 1-2:1.0: eth0
usbcore: registered new driver zd1211rw


Segno che e' tutto andato bene,passiamo ora alla configurazione vera e propria della rete

e infine del wpa(criptazione sicura).

 

Configurazione rete



Logghiamoci come root,e modifichiamo in ordine questi due  files,rc.inet1.conf,rc.wireless.conf

si presuppone,che abbiate già configurato a dovere,il vostro ap(punto d'accesso wireless)

/etc/rc.d/rc.inet1.conf

# /etc/rc.d/rc.inet1.conf
#
# This file contains the configuration settings for network interfaces.
# If USE_DHCP[interface] is set to "yes", this overrides any other settings.
# If you don't have an interface, leave the settings null ("").

# You can configure network interfaces other than eth0,eth1... by setting
# IFNAME[interface] to the interface's name. If IFNAME[interface] is unset
# or empty, it is assumed you're configuring eth<interface>.

# Several other parameters are available, the end of this file contains a
# comprehensive set of examples.

# =============================================================================

# Config information for eth0:
IPADDR[0]="192.168.0.3"
NETMASK[0]="255.255.255.0"
#USE_DHCP[0]=""
#DHCP_HOSTNAME[0]=""

# Config information for eth1:
IPADDR[1]=""
NETMASK[1]=""
USE_DHCP[1]=""
DHCP_HOSTNAME[1]=""

# Config information for eth2:
IPADDR[2]=""
NETMASK[2]=""
USE_DHCP[2]=""
DHCP_HOSTNAME[2]=""

# Config information for eth3:
IPADDR[3]=""
NETMASK[3]=""
USE_DHCP[3]=""
DHCP_HOSTNAME[3]=""

# Default gateway IP address:
GATEWAY="192.168.0.1"

# Change this to "yes" for debugging output to stdout.  Unfortunately,
# /sbin/hotplug seems to disable stdout so you'll only see debugging output
# when rc.inet1 is called directly.
DEBUG_ETH_UP="no"

## Example config information for wlan0.  Uncomment the lines you need and fill
## in your info.  (You may not need all of these for your wireless network)
IFNAME[4]="wlan0"
IPADDR[4]="192.168.0.2"
NETMASK[4]="255.255.255.0"
#USE_DHCP[4]="yes"
#DHCP_HOSTNAME[4]="icculus-wireless"
#DHCP_KEEPRESOLV[4]="yes"
#DHCP_KEEPNTP[4]="yes"
#DHCP_KEEPGW[4]="yes"
#DHCP_IPADDR[4]=""
#WLAN_ESSID[4]=Slack
#WLAN_MODE[4]=Managed
#WLAN_RATE[4]="54M auto"
#WLAN_CHANNEL[4]="11"
##WLAN_KEY[4]="D5AD1F04ACF048EC2D0B1C80C7"
##WLAN_IWPRIV[4]="AuthMode=WPAPSK EncrypType=TKIP #WPAPSK=7B1ABEEB5D197741923ED26727569C365E31212096A0EAFAD563B268BAD01CAF TxRate=0"
#WLAN_WPA[4]="wpa_supplicant"
#WLAN_WPADRIVER[4]="wext"
#WLAN_WPAWAIT[4]=30 

## Some examples of additional network parameters that you can use.
## Config information for wlan0:
#IFNAME[4]="wlan0"              # Use a different interface name nstead of
                                # the default 'eth4'
#HWADDR[4]="00:01:23:45:67:89"  # Overrule the card's hardware MAC address
#MTU[4]=""                      # The default MTU is 1500, but you might need
                                # 1360 when you use NAT'ed IPSec traffic.
#DHCP_TIMEOUT[4]=15             # The default timeout for the DHCP client to
                                # wait for server resonse is 60 seconds, but
                                # you might want a shorter wait.
#DHCP_KEEPRESOLV[4]="yes"       # If you dont want /etc/resolv.conf overwritten
#DHCP_KEEPNTP[4]="yes"          # If you don't want ntp.conf overwritten
#DHCP_KEEPGW[4]="yes"           # If you don't want the DHCP server to change
                                # your default gateway
#DHCP_IPADDR[4]=""              # Request a specific IP address from the DHCP
                                # server
#WLAN_ESSID[4]=DARKSTAR         # Here, you can override _any_ parameter
                                # defined in rc.wireless.conf, by prepending
                                # 'WLAN_' to the parameter's name. Useful for
                                # those with multiple wireless interfaces.
#WLAN_IWPRIV[4]="AuthMode=WPAPSK EncrypType=TKIP WPAPSK=thekey TxRate=0"
                                # Some drivers require a private ioctl to be
                                # set through the iwpriv command. If more than
                                # one is required, you can place them in the
                                # IWPRIV parameter (space-separated, see the
                                # example).

In breve,abbiamo semplicemente associato a wlan0 l'ip 192.168.0.2 e la relativa maschera(255.255.255.0)

adesso creiamo un file che chiameremo /etc/rc.d/rc.wifiwpa

e avrà il seguente contenuto

killall -9 wpa_supplicant

wpa_supplicant -c/etc/wpa_supplicant.conf -iwlan0 -Dwext -B

sleep 10

wpa_cli -iwlan0 add network

wpa_cli -iwlan0 enable network

route add default gw 192.168.0.1 dev wlan0&

lo rendiamo esegubile con

# chmod +x /etc/rc.d/rc.wifiwpa


WPA SUPPLICANT

Doverosa premessa:il protocollo wpa1-tkip non è più sicuro usate wpa-aes

o meglio ancora wpa2,nell'esempio verrà usato wpa2,attenzione perchè non

tutti i router supportano wpa2.

Una breve introduzione:il wpa,e' un protocollo per la  cifratura  di reti wifi

che sostituisce il wep,non e' necessario che lo usiate,ma e' vivamente consigliato

se non lo fate,correte il rischio che altri usufruiscano della vostra connessione

a sbafo,in quanto a loro basterà collegarsi al vostro A.P,proteggere l'A.P con

il mac filtering(accesso consentito solo a determinati mac-address) potrebbe

non bastare,in quanto il mac address puo' benissimo essere sniffato.

Il wep e' ugualmente sconsigliato,in quanto si tratta ormai di un protocollo

considerato insicuro.

Nel vostro A.P,avrete attivato la cifratura wpa,e impostato una psk(pre shared key)

ossia una password,vi consiglio di usare password alfanumeriche.

Adesso occorre impostare una psk a livello client,che deve essere ovviamente

IDENTICA a quella dell' A.P

Modifichiamo adesso l'ultimo file, /etc/wpa_supplicant.conf

# See /usr/doc/wpa_supplicant-0.4.8/wpa_supplicant.conf.sample
# for many more options that you can use in this file.

# This line enables the use of wpa_cli which is used by rc.wireless
# if possible (to check for successful association)
ctrl_interface=/var/run/wpa_supplicant
# By default, only root (group 0) may use wpa_cli
ctrl_interface_group=0
eapol_version=1
ap_scan=1
fast_reauth=1

# WPA protected network, supply your own ESSID and WPAPSK here:
network={
  scan_ssid=0
  ssid="IL VOSTRO ESSID"
  proto=RSN #ATTENZIONE:per usare wpa1 usate wpa
  key_mgmt=WPA-PSK
  pairwise=CCMP TKIP
  group=CCMP TKIP
  #psk="LA STESSA PASS DELL' A.P"
  psk=LA CIFRA CHE VI RESTITUIRÀ WPA_PASSPHRASE
}


Adattate il file alla vostra configurazione,per ottenere la psk

date wpa_passphrase VOSTROESSID,vi rammento che la psk-ascii deve

essere identica a quella impostata nell'a.p.

Per semplificarvi le cose,supponiamo abbiate impostato nell A.P essid Slack,e  psk L@@!jn"3

allora darete

#wpa_passphrase Slack L@@!jn"3

apparirà sulla console

network={
        ssid="Slack"
        #psk="L@@!jn23"
        psk=b4af4d3eacc5c227d7ec29910b6e7b52dcd9a32248dd2463f0465e90938c5814
}


pertanto il nostro file wpa_supplicant.conf sarà identico a questo


# See /usr/doc/wpa_supplicant-0.4.8/wpa_supplicant.conf.sample
# for many more options that you can use in this file.

# This line enables the use of wpa_cli which is used by rc.wireless
# if possible (to check for successful association)
ctrl_interface=/var/run/wpa_supplicant
# By default, only root (group 0) may use wpa_cli
ctrl_interface_group=0
eapol_version=1
ap_scan=1
fast_reauth=1

# WPA protected network, supply your own ESSID and WPAPSK here:
network={
  scan_ssid=0
  ssid="Slack"
  proto=RSN
  key_mgmt=WPA-PSK
  pairwise=CCMP TKIP
  group=CCMP TKIP
  #psk="L@@!jn23"
  psk=b4af4d3eacc5c227d7ec29910b6e7b52dcd9a32248dd2463f0465e90938c5814
}


Abbiamo finito,adesso diamo

# /etc/rc.d/rc.inet1 stop
# /etc/rc.d/rc.inet1 start
# /etc/rc.d/rc.wifiwpa&


e dopo qualche secondo,salvo errori,avremo la nostra rete

attiva,con wpa2.

Per verificare la correttezza delle operazioni date

#iwconfig

wlan0     802.11b/g NIC  ESSID:"Slack"
          Mode:Managed  Frequency=2.462 GHz  Access Point: 00:*
          Bit Rate:54 Mb/s
          Retry:off   RTS thr=2432 B   Fragment thr:off
          Power Management:off
          Link Quality=96/100  Signal level=81/100  Noise level=0/100
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:20
          Tx excessive retries:4  Invalid misc:0   Missed beacon:0

Ovviamente al posto di 00:*  deve apparire l'indirizzo dell ap

poi controllate con

#ifconfig wlan0

wlan0     Link encap:Ethernet  HWaddr 00:*
          inet addr:192.168.0.2  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3145 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3238 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:722635 (705.6 KiB)  TX bytes:350273 (342.0 KiB)


mentre per verificare wpa,e' sufficente dare dmesg e controllare,oppure

#ps aux|grep wpa

Se la connessione non va,o wpa non parte controllate di aver configurato tutto a dovere

in particolar modo,le impostazioni nell'A.P e la sintassi nei file di configurazione.

BUGS

Iwconfig non mostra le statistiche dei pacchetti

che però possiamo vedere da ifconfig

DOMANDE

Ho seguito tutto correttamente,ma il rate e' 11M e non  54M,come mai?

Aggiungi in $HOME/.kde/Autostart  questo script e rendilo eseguibile

#!/bin/sh
iwconfig wlan0 rate 54M


Al riavvio non attiva la rete,che faccio?

Aggiungi a rc.local questi comandi

sleep 10&
/etc/rc.d/rc.inet1 stop
/etc/rc.d/rc.inet1 start&
sleep 10&
/etc/rc.d/rc.wifiwpa


Ultimo aggiornamento:15/09/09


Torna all' indice