Wireless LAN unter Linux

ArticleCategory: System Administration[Choose a category, translators: do not translate this, see list below for available categories]

System Administration

AuthorImage:[Here we need a little image from you]

[Photo of Wang Xu]

TranslationInfo:[Author + translation history. mailto: or http://homepage]

original in cn Wang Xu 

cn to en Wang Xu

en to de Katja Socher

AboutTheAuthor:[A small biography about the author]

Wang Xu ist PhD Student an der Beijinger Universit�t f�r Post und Telekommunikation in China und besch�ftigt sich mit drahtloser Kommunikation. Er wurde 1999 als Collegestudent zum Linuxliebhaber. Au�er Linux mag er auch TeX, C/C++, Perl, etc.

Abstract:[Here you write a little summary]

In diesem Artikel spreche ich �ber einige Treiber f�r gew�hnliche Wireless LAN Adapter und einige verwandte Themen wie die Autentifizierung basierend auf 802.1x.

ArticleIllustration:[One image that will end up at the top of the article]

wireless interconnection
between computers

ArticleBody:[The main part of the article]

Einleitung

WLAN (IEEE 802.11b/a/g) wird immer popul�rer, da WLAN Karten immer billiger werden und mehr Organisationen ihren Angestallten oder der �ffentlichkeit Zugang zu WLAN erm�glichen. Fast jeder neue Laptop-Computer hat eine integrierte WLAN Karte und �ltere k�nnen PCMCIA WLAN Karten benutzen, sogar Desktop-Computer k�nnen USB WLAN Karten haben oder sogar eingebaute WLAN Karten. Andererseits werden WLAN Access Points (AP) an Universit�ten, in B�rogeb�uden, Hotels, Wohnh�usern etc. eingerichtet. Das WLAN erleichtert das Einrichten lokaler Netzwerke und unterst�tzt mobiles/normadisches Computern, was eine weitere Revolution in unserem Arbeits- und t�glichen Leben darstellt.

Von daher ist es auch f�r die Linuxwelt essentiell, WLAN Zugang zu unterst�tzen. Der Rest dieses Artikels ist wie folgt unterteilt: la�t uns �berlegen, wie man die Treiber f�r die Karten zum Laufen kriegt; dann versuchen wir, zu Netzwerken, die Autentifizierung benutzen, Zugang zu bekommen; und es gibt eine kurze Einf�hrung in die Werkzeuge f�r die WLAN Interface Konfiguration; schlie�lich gibt es eine Schlu�betrachtung.

WLAN Kartentreiber zum Laufen kriegen

Wenn du einmal eine Wireless LAN Karte in deinem Computer installiert hast, ist der erste Schritt, den Treiber zu installieren und zum Laufen zu kriegen. Eine WLAN Karte implementiert die Funktionen der physikalischen Schicht (PHY) und des media access control sublayer (MAC), wie es in mindestens einem der IEEE 802.11 Serien von Protokollen spezifiziert wurde, w�hrend der Treiber die Karte steuert, eine Netzwerkschnittstelle identisch zu einer Ethernetschnittstelle sowie andere WLAN spezifische Managementschnittstellen zur Verf�gung stellt.

Es gibt keine einheitliche Methode zum Installieren von Treibern bei der gro�en Zahl von Verk�ufern und Karten. Die meisten Treiber k�nnen jedoch durch eine der folgeden drei Methoden zum Laufen gebracht werden:

In den folgenden Abschnitten illustriere ich diese Methoden mit Beispielen.

Anmerkung, auch wenn du die letzten beiden Methoden benutzt, mu�t du sicherstellen, dass der wireless LAN support in deiner Kernelkonfiguration gesetzt ist:

gnawux@APTITUDE:~$ grep CONFIG_NET_RADIO /boot/config-`uname -r`
CONFIG_NET_RADIO=y
Wenn das nicht der Fall ist, solltest du den Kernel noch mal mit der aktivierten Option "Wireless LAN (non-hamradio) Drivers and Wireless Extensions" konfigurieren.

Kernelunterst�tzung f�r WLAN

Die Treiber, die ausgereift genug sind und keine Lizenzprobleme machen, werden zum Linux Kernel hinzugef�gt. Von daher ist die Liste der unterst�tzten WLAN Karten im Kernel abh�ngig von der Version des Kernels und es ist deshalb klug, zu �berpr�fen, ob ein neuer Kernel eine bessere Unterst�tzung f�r deine Karte bietet, bevor du den Treiber installierst.

In diesem Abschnitt illustriere ich, wie man den Treiber f�r WLAN Karten basierend auf Intersil Prism chipsets (ISL38xx) benutzt. Die Liste mit den unterst�tzten Karten findet man unter http://prism54.org [2].

Um eine auf Prism basierende Karte benutzen zu k�nnen, braucht man den neuesten 2.6 Kernel, und aktiviert die "Intersil Prism GT/Duette/Indigo PCI/Cardbus" Option im Wireless LAN Treiber Abschnitt der Kernelkonfiguration, und baut den Kernel erneut.

Wenn du den Hilfetext des Moduls sorgf�ltig durchliest, wenn du den Kernel konfigurierst, wirst du vielleicht feststellen, da� du eine firmware von der prism54.org project Webseite [2] brauchst. Dies ist so, weil die Karte keinen EPROM hat, um die firmware zu speichern. Deshalb mu� man die firmware herunterladen, wenn der Treiber die Karte initialisiert. Die firmware kann wegen ihrer Lizenz nicht Teil des Kernels werden. Nach dem Holen der firmware and schieben nach "/usr/lib/hotplug/firmware/", reboote deinen Computer, und du wirst feststellen, da� du eine zus�tzliche Ethernetschnittstelle hast, die von der WLAN Karte zur Verf�gung gestellt wird.

Unabh�ngige Module f�r spezielle WLAN Karten

Viele neue Karten haben, wie viele andere neue Hardware, keine GPL-kompatiblen Treiber der Hersteller oder die Treiber, die von der Open Source Community entwickelt wurden, sind noch nicht ausgereift genug, um in den Kernel integriert zu werden. Deshalb werden diese Treiber als Module bereitgestellt und einige von ihnen werden schlie�lich in zuk�nftigen Kernelversionen hinzugef�gt werden, wenn sie vollst�ndig sind.

Einer der bekanntesten Treiber ist der ipw2100 [3] f�r die Intel Pro/Wireless 2100 Karte, die ein Teil der Intel Centrino� Technologie ist und auf vielen Laptops installiert ist. In diesem Abschnitt f�hre ich in die Installation des ipw2100 Treibers ein.

Zuerst mu� man das Quellpaket des Treibers sowie die firmware von der Projektwebseite http://ipw2100.sourceforge.net herunterladen. Nachdem man sichergestellt hat, da� sein Kernel neu genug ist und mit Unterst�tzung f�r die Module hotplug firmware, and wireless LAN wie eben gesagt gebaut wurde, dekomprimiert man das Quellpaket:

APTITUDE:/usr/src# tar -zxvf ipw2100-1.0.1.tgz
Gehe dann zum Bilden und Installieren in das Quellverzeichnis:
APTITUDE:/usr/src/ipw2100-1.0.1# make
APTITUDE:/usr/src/ipw2100-1.0.1# make install
Nach dem Installieren der Module, mu� man nun die firmware installieren:
Don't forget to copy firmware to /usr/lib/hotplug/firmware/ and have the 
hotplug tools in place.
Genau so, wie die Meldung es sagt: dekomprimiere die firmware in das hotplug Verzeichnis, dann ist die Installationsprozedur beendet. Jetzt kannst du durch das folgende das ipw2100 Modul aktivieren:
APTITUDE:/usr/src/ipw2100-1.0.1# modprobe ipw2100
Au�erdem f�gt man hier vielleicht noch ein paar Parameter f�r verschiedene Konfigurationen hinzu. Zum Beispiel kann der ifname Parameter den Schnittstellennamen spezifizieren:
APTITUDE:/usr/src/ipw2100-1.0.1# modprobe ipw2100 ifname=wlan0
D.h. die Schnittstelle wird wlan0 genannt. F�r andere Parameter kann man die Dokumente im Quellpaket des ipw2100 Treibers lesen.

Treiber f�r andere Karten

Leider gibt es f�r einige Karten �berhaupt keine Treiber f�r Linux oder der Treiber l�uft aus bestimmten Gr�nden nicht. Dies bedeutet jedoch nicht, da� wir sie unter Linux nicht benutzen k�nnen. Zumindest gibt es NDIS wrapper [1].

Die meisten WLAN Karten f�r Desktop- und Laptopcomputer unterst�tzen Windows 2000/XP, das die WLAN Unterst�tzung durch eine Standardschnittstelle namens NDIS handhabt. Deshalb unterst�tzen die Treiber f�r solche Karten normalerweise NDIS. Deshalb k�nnen wir solch einen Treiber einwickeln (wrap) und unter Linux zum Laufen bringen, als wenn es Windows 2000/XP w�re, was uns zum ndiswrapper Projekt f�hrt.

In diesem Abschnitt installiere ich den ndiswrapper f�r eine Netgear 121 WLAN Karte als ein Beispiel. Als erstes sollte man den ndiswrapper von der Projektseite http://ndiswrapper.sourceforge.net herunterladen und den NDIS Treiber f�r Windows vorbereiten. Der ndiswrapper besteht aus einem Kernelmodul und einem Satz von Werkzeugen. Du solltest es bauen und installieren:

APTITUDE:/usr/src/ndiswrapper-0.11# make install
Dann kannst du den Windowstreiber im Wrapper laden
APTITUDE:/usr/src/ndiswrapper-0.11# ndiswrapper -i ../wg121/WG121V200/ndis5/netwg121.inf
wobei die .inf Datei der NDIS Treiber f�r Windows ist. Nach der Installation des NDIS Treibers solltest du das folgende sehen
APTITUDE:/usr/src/ndiswrapper-0.11# ndiswrapper -l
Installed ndis drivers:
netwg121        driver present 

Cheers! Die Installationsprozedur ist beendet.

Autentifizierung

Wenn du in einem �ffentlichen Bereich auf ein WLAN zugreifst, verlangt das WLAN eventuell einige Autentifizierungsmethoden aus Sicherheitsgr�nden. Die meisten verf�gbaren Autentifizierungsmethoden f�r WLAN basieren auf IEEE 802.1x (EAP) und IEEE 802.11i, und auf EAP basierende Methoden sind momentan die beliebtesten.

Es gibt viele auf EAP basierende Autentifizierungsmethoden, z.B. EAP-MD5, EAP-TLS, EAP-TTLS, EAP-SIM, LEAP, etc. Linuxbenutzer k�nnen xsupplicant benutzen, das von Open1x project [4] zur Verf�gung gestellt wird, um auf ein Netzwerk zuzugreifen, das auf 802.1x basierende Autentifizierung erfordert. In diesem Abschnitt benutze ich das LEAP protocol, das von Cisco corp. vorgeschlagen wurde, als eine Illustration. Beachte: ob das Protokol unterst�tzt wird, h�ngt von der Karte und dem Treiber ab, z.B. selbst wenn dein xsupplicant richtig installiert und konfiguriert wurde, kann es dir trotzdem unm�glich sein, auf das Netzwerk zuzugreifen, weil deine Karte oder dein Treiber es nicht unterst�tzen.

Du solltest xsupplicant von der Projektseite http://open1x.sourceforge.net herunterladen und installieren. Dann �ndere die Konfigurationsdatei, /etc/xsupplicant/xsupplicant.conf. Hier ist ein Beispiel f�r LEAP.

#example of /etc/xsupplicant/xsupplicant.conf
#for LEAP protocol

network_list = all
#the list of networks to access

default_netname = default
#the default access network

first_auth_command = <BEGIN_COMMAND>dhclient %i<END_COMMAND>
#The command before authentication, which is usually used to get some info from
#the network

logfile = /var/log/xsupplicant.log
#log file

myssid #here is your network id, may be listed in the network list
{
  type = wireless
  ssid = <BEGIN_SSID>myssid<END_SSID>
  allow_types = all
  identity = <BEGIN_ID>aptitude<END_ID>
  eap-leap {
      username = <BEGIN_UNAME>aptitude<END_UNAME>
      password = <BEGIN_PASS>passwd<END_PASS>
  }#setup for leap
}

LEAP ist eine einfache Autentifizierungsmethode, und es gibt viele Einstellungen f�r andere Methoden, bitte lies die Beispiele und Dokumente von xsupplicant.

Utilities f�r WLAN

Wie du wei�t, stellt WLAN eine Netzwerkschnittstelle identisch zu Ethernet zur Verf�gung, und du kannst sie als eine weitere Ethernetschnittstelle benutzen. Auf der anderen Seite hat eine WLAN Karte viel mehr Features als eine Ethernetkarte wegen des drahtlosen Mediums. Deshalb gibt es eine Menge Werkzeuge, um WLAN Karten zu konfigurieren und Informationen �ber den Status zu bekommen. Du findest die wireless tools auf http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html [5], die von Jean Tourrilhes beigesteuert wurde.

Das n�tzlichste Werkzeug ist iwconfig, das �hnlich wie ifconfig benutzt werden kann. Der iwconfig Befehl ohne Parameter, aber mit dem Schnittstellennamen druckt den Arbeitsstatus der Karte:

gnawux@APTITUDE:~$ /sbin/iwconfig wlan0
wlan0     unassociated  ESSID:off/any  Nickname:"ipw2100"
          Mode:Managed  Channel=0  Access Point: 00:00:00:00:00:00   
          Bit Rate=0 kb/s   Tx-Power:off   
          Retry:on   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Mit dem "mode" Parameter kannst du den WLAN Karten Arbeitsmode �ndern:
APTITUDE:/home/gnawux# iwconfig wlan0 mode 1
APTITUDE:/home/gnawux# iwconfig wlan0
wlan0     unassociated  ESSID:off/any  Nickname:"ipw2100"
          Mode:Ad-Hoc  Channel=0  Cell: 00:00:00:00:00:00   
          Bit Rate=0 kb/s   Tx-Power:off   
          Retry:on   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Hier �ndern wir die WLAN Karte in den "Ad Hoc" mode. Wir k�nnen auch den Netzwerknamen durch den "essid" Parameter �ndern:
APTITUDE:/home/gnawux# iwconfig wlan0 essid gnawux
APTITUDE:/home/gnawux# iwconfig wlan0
wlan0     IEEE 802.11b  ESSID:"gnawux"  Nickname:"ipw2100"
          Mode:Ad-Hoc  Frequency:2.412 GHz  Cell: 02:0C:F1:0F:11:2A   
          Bit Rate=0 kb/s   Tx-Power:off   
          Retry:on   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality=60/100  Signal level=-83 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Du hast vielleicht bemerkt, dass wir jetzt vern�nftigere Statusinformationen haben als vorher, weil wir eine g�ltige ESSID haben. F�r andere Parameter von iwconfig lies bitte iwconfig(8).

Ein weiteres m�chtiges utility ist iwlist, mit dem wir eine Liste der verf�gbaren Ressourcen bekommen k�nnen. Mit dem "scanning" Parameter k�nnen wir eine Liste verf�gbarer Zugriffspunkte (access points) bekommen:

gnawux@APTITUDE:~$ /sbin/iwlist wlan0 scanning
wlan0     Scan completed :
          Cell 01 - Address: 00:0D:BD:6F:B4:48
                    ESSID:""
                    Protocol:IEEE 802.11b
                    Mode:Master
                    Channel:6
                    Encryption key:on
                    Bit Rate:11 Mb/s
                    Extra: Rates (Mb/s): 1 2 5.5 11 
                    Extra: Signal: -70  dBm 
                    Extra: Last beacon: 59ms ago
          Cell 02 - Address: 86:CF:C1:34:12:06
                    ESSID:"gnawux"
                    Protocol:IEEE 802.11b
                    Mode:Ad-Hoc
                    Channel:11
                    Encryption key:off
                    Bit Rate:11 Mb/s
                    Extra: Rates (Mb/s): 1 2 5.5 11 
                    Extra: Signal: -37  dBm 
                    Extra: Last beacon: 2ms ago

Und mit dem "Frequenz" Parameter (freq), k�nnen wir eine Frequenzliste bekommen:
gnawux@APTITUDE:~$ /sbin/iwlist wlan0 freq
wlan0     14 channels in total; available frequencies :
          Channel 01 : 2.412 GHz
          Channel 02 : 2.417 GHz
          Channel 03 : 2.422 GHz
          Channel 04 : 2.427 GHz
          Channel 05 : 2.432 GHz
          Channel 06 : 2.437 GHz
          Channel 07 : 2.442 GHz
          Channel 08 : 2.447 GHz
          Channel 09 : 2.452 GHz
          Channel 10 : 2.457 GHz
          Channel 11 : 2.462 GHz
          Channel 12 : 2.467 GHz
          Channel 13 : 2.472 GHz
          Channel 14 : 2.484 GHz
          Current Channel=1

Und du kannst iwlist(8) f�r weitere Parameter lesen.

Au�er den beiden obengenannten gibt es auch noch andere utilities, z.B. iwevent, iwgetid, iwpriv, iwspy, um den Arbeitsstatus deiner WLAN Karte zu erhalten und zu verwalten.

Schlu�bemerkung

Ich habe die Treiberinstallation f�r verschiedene WLAN Karten gezeigt und illustriert, wie man eine Autentifizierung durchf�hrt. Au�erdem wurden m�chtige Konfigurations-utilities f�r WLAN in diesem Artikel angesprochen.

Dank der Beteiligung der Open Source Community k�nnen wir nicht nur auf Wireless LAN unter Linux zugreifen, sondern auch Spa� damit haben!

Referenzen

  1. NDIS wrapper Projekt, http://ndiswrapper.sourceforge.net;
  2. Prism54 Projekt, http://prism54.org;
  3. IPW2100 Projekt, http://ipw2100.sourceforge.net;
  4. Open1x Projekt, http://open1x.sourceforge.net;
  5. Jean Tourrilhes, wireless Werkzeuge, http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html.