WiFi - Basal opsætning af trådløse forbindelser

Af komplekse juridiske årsager findes der kun dfsg-free software på aptosid, følg dette link for at få mere information om non-free kilder til firmware

For at få wlan WiFi til at virke skal du bruge en kablet forbindelse (eller bare en anden forbindelse der virker), bare for et par minutter så du kan hente den rette og nødvendige firmware.

Hvis du ikke har mulighed for at oprette andre forbindelser må du placere firmwaren på en USB-nøgle eller andet medie og installere det derfra med root rettigheder. Det gør du med følgende kommando:

#dpkg -i <firmware.deb>

For at finde den rette firmware, uden at kende til producent og version af din trådløse chip, kan du anvende følgende kommando:

#fw-detect

Dette giver dig følgende information:

#apt-get update
#apt-get install <name of firmware>
#modprobe -r <modulename>
#modprobe <modulename>

Brug apt-get install linjen som fw-detect kommandoen returnerede til dig. Herefter skal du køre nogle kommandoer i en skal/ terminal inden du kan konfigurere enheden.

Du skal så indlæse modulet for at være i stand til at konfigurere enheden.

Som root i en konsol skriver du:

modprobe -r <modulename>

modprobe <modulename>

Eftersom <modulename> bruger den information som fw-detect gav dig før. Her kan du anvende en nyttig funktion i konsollen: bash completion:
Hvis du bare skriver de første få bogstaver af <modulename> og så taster TAB tasten, så færdiggøres modulnavnet (e.g. modprobe ipw TAB-tast). Det forhindrer også at du staver forkert.

Begge modprobe kommandoer skulle ikke give noget output retur, hvis de bliver udført succesfuldt, så hvis den normale prompt vender tilbage, så er modulet korrekt indlæst.

Du kan kontrollere det med denne kommando:

#lsmod | grep <module>

Nu kan du starte Ceni fra K-Menu - Internet, eller du kan afvikle ceni fra en konsol som root. Se også Kom online - Ceni. Din trådløse enhed skulle nu kunne ses og er parat til at blive konfigureret.

For at sætte dit trådløse netværk op til at forbinde til netværk med wpagui kan du se her WiFi - roaming WPA-GUI

Funktionerne af wpasupplicant i Debian

Af juridiske årsager stiller aptosid udelukkende dfsg-free software til rådighed, følg venligst dette link for yderligere information om non-free sources for firmware

Debian wpasupplicant pakken understøtter to metoder som begge er tæt integrerede med kernen i netværk infrastrukturen ( ifupdown).

Indhold

1. Specificer backend til wpa_supplicant driveren

* Tabel over understøttede drivere
* Almene driver anbefalinger

2. Mode #1: Managed Mode

* Eksempler
* Tabel over almindelige valgmuligheder
* Vigtige noter om Managed Mode
* Hvordan det gøres

3. Mode #2: Roaming Mode

* wpa_supplicant.conf
* /etc/network/interfaces
* Kontroller Roaming Daemon med wpa_action
* Finindstilling af Roaming opsætning
* Logfilen
* Anvendelse af eksterne Mapping Scripts (f.eks. guessnet)
* /etc/network/interfaces med ekstern mapping

4. Fejlfinding

* Skjulte ssids

5. Sikkerhedsovervejelser

* Konfiguration af fil-rettigheder

1. Specificer backend til wpa_supplicant driveren

Hvis der ikke eksplicit bliver valgt en en anden driver med "wpa_driver" vil wext driveren blive anvendt. Anvender man 2.4 kernel eller 2.6 kernels under 2.6.14 skal man definere wpa driveren under alle omstændigheder.

Understøttede drivere

Driver Beskrivelse
wext Linux wireless extensions (generic)

Almene driver anbefalinger

Intel Pro Wireless adapters (ipw2100, ipw2200 and ipw3945) anvender allesammen 'wext' backend, medmindre din kernel er ældre end 2.6.14

Madwifi understøtter både 'wext' og 'madwifi' driver backends. 'wext' foretrækkes, men 'madwifi' kan i nogle tilfælde vise sig at fungerer bedre.

Ndiswrapper UNDERSTØTTER IKKE LÆNGERE 'ndiswrapper' driver backend fra og med version 1.16. Derfor skal 'wext' anvendes (medmindre du bruger en gammel version af ndiswrapper).

Definer drivertypen med parameteren 'wpa_driver' i /etc/network/interfaces. For eksempel:

iface eth0 inet dhcp
	wpa-driver wext
	. . . . . flere valg

2. Mode #1: Managed Mode

Managed mode tillader at etablere forbindelse via wpa_supplicant til et kendt netværk. Det fungerer på samme måde som wireless-tools pakken. Ethvert element, der er nødvendig for at oprette forbindelsen via wpa_supplicant, skal have præfikset 'wpa-' og efterfølges af den værdi der skal bruges for elementet.

Eksempler på Mode #1 wpa.conf fil - Eksempel 1.
Eksempler på Mode #1 wpa.conf fil - Eksempel 1.
BEMÆRK: 'wpa-psk' værdien er kun gyldig hvis:

   1. Det er plaintext (ascii) streng på mellem 8 og 63 anslag, eller
   2. Det er en hexadecimal streng på 64 anslag

# Forbind til access point med ssid 'NETBEER' med kryptering af typen
# WPA-PSK/WPA2-PSK. det antages at driveren vil anvende 'wext' driver backend for wpa_supplicant fordi
#ingen anden wpa-driver værdi er defineret.
# passphrase gives som ASCII (plaintext) streng.
# DHCP anvendes til at få tildelt en netværksadresse.
#
iface wlan0 inet dhcp

        wpa-ssid NETBEER
        # plaintext passphrase
        wpa-psk PlainTextSecret
Eksempler på Mode #1 wpa.conf fil - Eksempel 2.
# Forbind til access point med ssid 'homezone'
# Anvend kryptering type WPA-PSK/WPA2-PSK,
# Anvend 'wext' driver backend for wpa_supplicant.
# psk (personal key) indgives som hexadecimal string.
# DHCP is used to obtain # a network address.
#
iface wlan0 inet dhcp
wpa-driver wext
wpa-ssid homezone
# hexadecimal psk is encoded from a plaintext passphrase
wpa-psk 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
Eksempler på Mode #1 wpa.conf fil - Eksempel 3.
# Forbind til et access point med ssid 'HotSpot1' og bssid '00:1a:2b:3c:4d:5e'
# anvend kryptering type WPA-PSK/WPA2-PSK,
# anvend 'madwifi' driver backend for wpa_supplicant.
# passphrase indgives som plaintext streng
# Static network address assignment anvendes
#
iface ath0 inet static

        wpa-driver madwifi
        wpa-ssid HotSpot1
        wpa-bssid 00:1a:2b:3c:4d:5e
        # plaintext passphrase
        wpa-psk madhotspot
        wpa-key-mgmt WPA-PSK
        wpa-pairwise TKIP CCMP
        wpa-group TKIP CCMP
        wpa-proto WPA RSN
        # static ip settings
        address 192.168.0.100
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
Eksempler på Mode #1 wpa.conf fil - Eksempel 4.
# Bruger oprettet wpa_supplicant.conf anvendes for eth1.
# Alt netværk information finde i denne wpa_supplicant.conf.
# Ingen wpa-driver type speciferes, hvorfor 'wext' vil blive brugt
# DHCP anvendes til at få tildelt netværksadresse
#
iface eth1 inet dhcp

wpa-conf /sti/til/wpa_supplicant.conf

Tabel over almindelige valgmuligheder

En kort oversigt over de mest almindelige 'wpa-' options der kan bruges i /etc/network/interfaces. De skal stå i WLAN enhedens afsnittet. Se 'Vigtige noter til Managed Mode' sektionen for information om gyldige og ugyldige 'wpa-' værdier.

OBS: Alle værdier er CASE SeNsItIvE!

Valgmulighed	Eksempel på værdi	Beskrivelse
=======         =============           ===========
wpa-ssid        plaintextstring         definerer dit netværks ssid
wpa-bssid       00:1a:2b:3c:4d:5e       dit access point bssid
wpa-psk         0123456789......        din preshared wpa key. Anvend
                                        wpa_passphrase(8) for at generere din psk
                                        fra et passphrase / ssid par
wpa-key-mgmt    NONE, WPA-PSK, WPA-EAP, liste over accepterede "authenticated key
                IEEE8021X               management protocols"
wpa-group       CCMP, TKIP, WEP104,     liste over "accepted group ciphers for WPA"
                WEP40
wpa-pairwise    CCMP, TKIP, NONE        liste over "accepted pairwise ciphers for
                                        WPA"
wpa-auth-alg    OPEN, SHARED, LEAP      liste over "allowed IEEE 802.11
                                        authentication algorithms"
wpa-proto       WPA, RSN                liste over accepterede protokoller
wpa-identity    myplaintextname         administrator provided username
                                        (EAP authentication)
wpa-password    myplaintextpassword     dit password (EAP authentication)
wpa-scan-ssid   0 or 1                  toggles scanning of ssid with specific
                                        Probe Request frames
wpa-ap-scan     0 or 1 or 2             adjusts the scanning logic of
                                        wpa_supplicant

Den komplette funktionalitet af wpa_cli(8) skulle være implementeret. En fejlende programfunktion anses for værende en bug og skal rapporteres som sådan. Patches er altid velkomne.

Vigtige bemærkninger til Managed Mode

Næsten alle 'wpa-' indstillinger kræver at de i det mindste er speciferet et ssid. Kun en lille del af indstillingerne har global effekt, disse er: 'wpa-ap-scan' og 'wpa-preauthenticate'.

Enhver 'wpa-' indstilling der er defineret for en enhed (i interfaces(5) filen), er tilstrækkelig til at starte wpa_supplicant daemon'en op.

'wpasupplicant ifupdown' script'et foretager antagelser (gætter) omkring input typen, der er gyldig for enhver indstilling. For eksempel antager den at nogle værdier er plaintext og sætter citationstegn omkring dette input før det bliver sendt videre til wpa_cli. wpa_cli føjer så dette til den 'network block' der dannes via 'wpa_supplicant ctrl_interface socket'.

Hvis du afvikler ifup manuelt med '--verbose' option vil du kunne se alle de kommandoer der danner 'network block' via wpa_cli. Hvis nogen af de værdier du har skrevet i wpa-* indstillingerne i /etc/network/interfaces er omgivet af dobbelt citationstegn, er det fordi det er blevet antaget at dit input var "plaintext" eller "ascii".

Nogle værdier antages automatisk at være hexadecimale strenge (f.eks. wpa-wep-key*). Værdi-'typen' af wpa-psk bliver dog bestemt ved at der søges efter ikke-hexadecimale tegn.

Hvordan wpa_supplicant fungerer

Som tidligere nævnt bliver ethvert 'wpa_supplicant'-specifikt element kaldt med præfikset 'wpa-'. Hvert element korrelerer med en 'wpa-supplicant'-egeneskab som er beskrevet i wpa_supplicant.conf(5), wpa_supplicant(8) og wpa_cli(8) manpages.

Supplicant'en kaldes uden nogen form for pre-konfigurering overhovedet, og wpa_cli bygger netværks-konfigurationen ud fra værdierne i 'wpa-*' linerne. Til at starte med indstiller wpa_supplicant/wpa_cli ikke direkte egenskaberne for enheder (som for eksempel hvis du sætter et essid med iwconfig), men informerer enheden om hvilket access point der er egnet til en forbindelse. Først når enheden har skannet området og fundet at det af 'supplicant' angivne access point er til rådighed sættes enheden om med egenskaberne.

Scriptet, der udfører alt dette, findes her:

/etc/wpa_supplicant/ifupdown.sh
/etc/wpa_supplicant/functions.sh

ifupdown.sh:Det bliver eksekveret af 'run-parts', der igen bliver 'invoked' af ifupdown i 'pre-up', 'pre-down' og 'post-down' faserne.

I 'pre-up' fasen bliver en wpa_supplicant daemon startet, fulgt af en serie af wpa_cli kommandoer, der indstiller en netværks konfiguration i henhold til værdierne i 'wpa-' parametrene som er indført i /etc/network/interfaces for den fysiske enhed.

Hvis der anvendes wpa-roam, startes en wpa_cli daemon i 'post-up' fasen.

I 'pre-down' fasen bliver wpa_cli daemon dræbt (stoppet) hvis den findes.

I 'post-down' fasen bliver wpa_supplicant daemon dræbt hvis den findes.

3. Mode #2: Roaming Mode

Pakken 'wpa_supplicant' indeholder en simpel roaming-mekanisme i sig selv; den findes i form af et wpa_cli-action-script (findes her: /sbin/wpa_action). Ved aktivering overtager dette script kontrollen med ifupdown. De tekniske detaljer omkring dette er beskrevet i wpa_action(8) manpage.

For at aktivere dette roaming-interface, tilpas det følgende interfaces(5)-eksempel:

iface eth1 inet manual
	wpa-driver wext
        wpa-roam /sti/til/wpa_supplicant.conf

To daemons startes med ovenstående eksempel; wpa_supplicant og wpa_cli. En wpa_supplicant.conf-fil er nødvendigt hvis dette skal virke. Du kan bruge eksempel-konfigurations-filen som du kan kopiere til /etc med følgende:

 # copy the template to /etc/wpa_supplicant/
        cp /usr/share/doc/wpasupplicant/examples/wpa-roam.conf \
                /etc/wpa_supplicant/wpa_supplicant.conf
        # allow only root to read and write to file
        chmod 0600 /etc/wpa_supplicant/wpa_supplicant.conf

NOTE: it is critical that the used wpa_supplicant.conf defines the location of
      the 'ctrl_interface' so that a communication socket is created for the
      wpa_cli (wpa-roam daemon) to attach. The mentioned example configuration,
      /usr/share/doc/wpasupplicant/examples/wpa-roam.conf, has been set to a
      sane default

Det er nødvendigt at redigere denne konfigurationsfil, og tilføje 'network blocks' for alle kendte netværk. Hvis du ikke forstår hvad dette betyder, kan du begynde at læse manpage for wpa_supplicant.conf(5) nu.

For hvert netværk kan der defineres en 'id_str'. Den bør defineres som en simpel text-streng. Denne text-streng danner basis for netværksprofilen; som korrelere til en logisk interface (som defineret i interfaces(5) filen). Hvis ingen 'id_str' angives for et netværk, vil wpa_action antage at den skal anvende standard ('default') logisk interface. Denne 'default' interface kan ydermere defineres via værdien for 'wpa-default-iface'.

Hvad alt dette betyder kan vi kigge på med følgende eksempel, taget fra wpa_action(8) manpage.

wpa_supplicant.conf eksempel
wpa_supplicant.conf example:
network={
        ssid="foo"
        key_mgmt=NONE
        # this id_str will notify /sbin/wpa_action to 'ifup uni'
        id_str="uni"
}

network={
        ssid="bar"
        psk=123456789...
        # this id_str will notify /sbin/wpa_action to 'ifup home_static'
        id_str="home_static"
}

network={
        ssid=""
        key_mgmt=NONE
        # no 'id_str' parameter is given, /sbin/wpa_action will 'ifup default'
}

/etc/network/interfaces eksempler
/etc/network/interfaces (eksempel):
# roaming-interface SKAL bruge den manuelle inet metode
# 'allow-hotplug' eller 'auto' sikrer at daemon'en starter automatisk
allow-hotplug eth1
iface eth1 inet manual

        wpa-driver wext
        wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf


# no id_str, 'default' bruges som fallback mapping target
iface default inet dhcp


# id_str="uni"
iface uni inet dhcp

# id_str="home_static"
iface home_static inet static

        address 192.168.0.20
        netmask 255.255.255.0
        network 192.168.0.0

        broadcast 192.168.0.255
        gateway 192.168.0.1

Et logisk interface bringes op via ifup, og stoppes via ifdown, når wpa_supplicant henholdsvis associerer og de-associerer med det netværk, der er defineret i 'id_str' i /etc/wpa_supplicant.conf.

En log over aktiviteterne af /sbin/wpa_action bliver oprettet i /var/log/wpa_action.log, venligst vedhæft denne hvis du rapporterer om problemer.

Samspil mellem wpa_supplicant og wpa_cli og wpa_gui

wpa_supplicant processen kan spille sammen med alle gruppemedlemmer fra gruppen "netdev", hvis roaming konfiguration er blevet anvendt som i eksemplet (eller med enhver anden gruppe/ gid, specificeret ved GROUP= crtl_interface parameteren).

# standard ctrl_interface opsætning anvendt i eksemplet
	# /usr/share/doc/wpasupplicant/examples/wpa-roam.conf
        ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev

For at interagere med supplicant, findes der wpa_cli (kommando linje) og wpa_gui (QT).
Med disse kan du forbinde, afbryde, tilføje/fjerne nye
netværksblokke, desuden vises interaktive sikkerhedsindstillinger, og mere.

Kontrol over Roaming-Daemon gennem wpa_action

Når først roaming daemon'en starter, overtager den kontrollen med ifupdown. Det vil sige; wpa_cli kalder ifup når wpa_supplicant har oprettet en forbindelse med et access point, og kalder ifdown når forbindelsen afbrydes eller termineres. Når roaming daemon'en er aktiv, bør ifupdown ikke kontrolleres direkte med manuelle kommandoer, anvend i stedet /sbin/wpa_action til at stoppe og genindlæse roaming daemon'en. For eksempel; for at stoppe romaing daemon'en på enheden 'eth1':

wpa_action eth1 stop

Hvis det er nødvendigt at opdatere roaming daemon'en med nye netværks detaljer, kan dette gøres uden at stoppe den. Rediger wpa_supplicant.conf filen der bliver anvendt af daemon'en med de nye detaljer, tilføj eventuelle specifikke netværk indstillinger til /etc/network/interfaces (associeret via 'id_str') og genindlæs daemon'en sådan her:

wpa_action eth1 reload

Omfattende tekniske detaljer om wpa_action findes i wpa_action(8) manpage.

Fin indstilling af Roaming opsætning

Du kan stå i en situation hvor flere kendte access points er aktive i dine nærmeste omgivelser. Du kan vælge hvilket du foretrækker manuelt, med enten wpa_cli eller wpa_gui, eller du kan tildele hvert netværk dets egen prioritet. Den sidste funktion anvendes via 'priority' parameteren i wpa_supplicant.conf.

Logfilen

Aktiviteten fra roaming dameon'en logges til /var/log/wpa_action.log. Den følgende information findes i logfilen:

*time and date
*interface name and action event
*values of enviromental variables (WPA_ID, WPA_ID_STR, WPA_CTRL_DIR)
*ifupdown command executed
*wpa_cli status (based on WPA-PSK, network may display different info)
*bssid
*ssid
*id
*id_str
*pairwise_cipher
*group_cipher
*key_mgmt
*wpa_state
*ip_address

Anvendelse af eksterne mapping-scripts (f.eks. guessnet)

I tillæg til den interne mapping af logiske interfaces via 'id_str', kan wpa_action ogdå kalde eksterne mapping scripts. Et mapping script burde returnere navnet på det logiske interface som skal kaldes op. Ethvert mapping script der virker fra ifupdown's mapping mekanisme (se man interfaces) bør også fungere når det bliver kaldt fra wpa_action.

For at kalde et mapping script skal du tilføje en linie 'wpa-mapping-script name-of-the-script' til 'interfaces stanza' for den fysiske roaming-device. (Det kan være at du skal specificere den absolutte sti til mapping script.)

Indholdet i linierne der starter med wpa-map sendes videre til mapping script'ets stdin. Siden ifupdown kun tillader en wpa-map linie kan du tilføje numre til wpa-map for at få flere linier. For eksempel:

iface wlan0 inet manual
        wpa-driver wext
        wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
        wpa-mapping-script guessnet-ifupdown
        wpa-map0 home
        wpa-map1 work
        wpa-map2 school
        # ... flere wpa-mapX linier efter behov

Som standard vil mapping script'et kun blive brugt når der ike er nogen 'id_str' tilgængelig for det aktuelle netværk. Hvis du vil deaktivere brugen af 'id_str' matching og kun anvende ekstern mapping script kan du bruge 'wpa-mapping-script-priority 1' muligheden for at overtrumfe standard adfærden.

I det tilfælde at mapping script returnerer en tom streng vil wpa_action falde tilbage til 'default' interface, medmindre et alternativ er defineret i 'wpa-roam-default-iface' parameteren.

Nedenunder er et avanceret eksempel der anvender guessnet-ifupdown som ekstern mapping script.

/etc/network/interfaces med ekestern mapping eksempel
/etc/network/interfaces med ekestern mapping eksempe:
allow-hotplug wlan0
iface wlan0 inet manual

        wpa-driver wext
        wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
        wpa-roam-default-iface default-wparoam
        wpa-mapping-script guessnet-ifupdown
        wpa-map default: default-guessnet
        wpa-map0 home_static
        wpa-map1 work_static


# school can only be chosen via 'id_str' matching
iface school inet dhcp

        # resolvconf
        dns-nameservers 11.22.33.44 55.66.77.88

iface home_static inet static

        address 192.168.0.20
        netmask 255.255.255.0

        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
        test peer address 192.168.0.1 mac 00:01:02:03:04:05


iface work_static inet static

        address 192.168.3.200
        netmask 255.255.255.0
        network 192.168.3.0
        broadcast 192.168.3.255

        gateway 192.168.3.1
        test peer address 192.168.3.1 mac 00:01:02:03:04:05

iface default-guessnet inet dhcp

iface default-wparoam inet dhcp

I dette eksempel vil wpa_action kun bruge guessnet for at vælge et egnet logisk interface, når der ikke er defineret nogen 'id_str' for det aktuelle netværk i wpa_supplicant.conf.

'wpa-map' linerne giver guessnet navnene på de logiske interfaces der skal testes, såvel som standard ('default') interface der skal bruges hvis alle tests fejler.'test' linierne for hvert logisk interface bruges af guessnet til at afgøre om der aktuelt er forbindelse til dette netværk. For eksempel vil guessnet vælge det logiske interface 'home_static' hvis der er en enhed med IP addressen 192.168.0.1 og MAC adressen 00:01:02:03:04:05 på det aktuelle netværk. Hvis alle tests fejler vil 'default-guessnet' interface blive konfigureret.

Venligst læs guessnet(8) manpage for yderligere information.

4. Fejlfinding

For at debugge forbindelses-, associations- og "authentication"-problemer, anbefaler vi at du starter 'wpa_cli -i <interface>' i et andet konsolvindue før du starter interface. Brug kommandoen 'level 0' først, for at få alle debug messages. Brug så 'ifup --verbose <interface>' for at få verbose debug messages fra script'et der starter wpasupplicant.

Skjulte ssid'er

For referencer, se #358137. For at oprette forbindelser til skjulte ssid'er, skal du indstille parameteren 'ap_scan=1' i global section, og 'scan_ssid=1' i din 'network block' sektion af din wpa_supplicant.conf fil. Hvis du bruger netværket i managed mode kan du gøre dette ved hjælp af følgende parametere:

iface eth1 inet dhcp
wpa-conf managed
wpa-ap-scan 1
wpa-scan-ssid 1
# ... additional options for your setup

I følge #368770, kan oprettelsen af forbindelser der benytter WEP tage enddog meget lang tid. I nogle tilfælde kan indføjelse af parameteren 'ap_scan=2' i konfigurationsfilen hjælpe på dette (eller anvend den ekvivalente 'wpa-ap-scan 2' parameter).

5. Sikkerheds overvejelser

Tilladelser for konfigurationsfiler

Det er vigtigt at holde PSK's og andet sensitivt information om dine netværk indstillinger privat, derfor skal du sikre dig at konfigurations-filer der indeholder den slags information kun er læsbare af deres ejer. For eksempel:

chmod 0600 /etc/network/interfaces
# substituer stien med den til din egen wpa_supplicant.conf fil
chmod 0600 /etc/wpa_supplicant/wpa_supplicant.conf

I standard opsætningen er /etc/network/interfaces læsbar for alle brugere (world readable), og den er derfor uegnet til at opbevare hemmelige passwords og nøgler (keys) i.

Page last revised 14/08/2010 0100 UTC