original in cn Wang Xu
cn to en Wang Xu
en to de Katja Socher
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.
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.
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:
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=yWenn das nicht der Fall ist, solltest du den Kernel noch mal mit der aktivierten Option "Wireless LAN (non-hamradio) Drivers and Wireless Extensions" konfigurieren.
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.
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.tgzGehe dann zum Bilden und Installieren in das Quellverzeichnis:
APTITUDE:/usr/src/ipw2100-1.0.1# make APTITUDE:/usr/src/ipw2100-1.0.1# make installNach 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 ipw2100Auß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=wlan0D.h. die Schnittstelle wird wlan0 genannt. Für andere Parameter kann man die Dokumente im Quellpaket des ipw2100 Treibers lesen.
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 installDann kannst du den Windowstreiber im Wrapper laden
APTITUDE:/usr/src/ndiswrapper-0.11# ndiswrapper -i ../wg121/WG121V200/ndis5/netwg121.infwobei 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.
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.
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:0Mit 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:0Hier ä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:0Du 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:"Und mit dem "Frequenz" Parameter (freq), können wir eine Frequenzliste bekommen:" 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
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=1Und 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.
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!