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.