25.3. Drahtlose Netzwerke

Geschrieben von Eric Anderson.

25.3.1. Einführung

Es kann sehr nützlich sein, einen Computer zu verwenden, ohne sich die ganze Zeit mit einem Netzwerkkabel herumärgern zu müssen. FreeBSD kann auf drahtlose Netzwerke (wireless LAN) zugreifen und sogar als “Zugangspunkt” (access point) für drahtlose Netzwerke verwendet werden.

25.3.2. Betriebsmodi drahtloser Geräte

Drahtlose 802.11-Geräte können in zwei Modi konfiguriert werden: BSS und IBSS.

25.3.2.1. BSS-Modus

Üblicherweise wird der BSS-Modus, der auch Infrastruktur-Modus genannt wird, verwendet. In diesem Modus sind die Zugangspunkte (access points) mit einem Kabel-Netzwerk verbunden. Jedes drahtlose Netzwerk besitzt einen Namen, der als die SSID des Netzwerks bezeichnet wird.

Drahtlose Clients benutzen ein im IEEE-802.11-Standard beschriebenes Protokoll, um sich mit den Zugangspunkten zu verbinden. Durch die Angabe einer SSID kann sich der Client das Netzwerk, mit dem er sich verbinden will, aussuchen. Gibt der Client keine SSID an, so wird er mit einem beliebigen Netzwerk verbunden.

25.3.2.2. IBSS-Modus

Der IBSS-Modus, der auch ad-hoc-Modus genannt wird, wurde für Punkt-zu-Punkt-Verbindungen entworfen. Es gibt zwei Modi: Den IBSS-Modus, auch ad-hoc- oder IEEE-ad-hoc-Modus (definiert im IEEE-802.11-Standard) sowie den demo-ad-hoc-Modus oder Lucent-adhoc-Modus (der manchmal ebenfalls als ad-hoc-Modus bezeichnet wird). Der zweite Modus stammt aus der Zeit vor IEEE 802.11 und sollte nur noch mit alten Installationen verwendet werden. Im folgenden wird keiner der ad-hoc-Modi behandelt.

25.3.3. Infrastruktur-Modus

25.3.3.1. Zugangspunkte

Zugangspunkte sind drahtlose Netzwerkgeräte, die es einem oder mehreren Clients ermöglichen, diesen als einen zentralen Verteiler (Hub) zu benutzen. Wenn ein Zugangspunkt verwendet wird, kommunizieren alle Clients über diesen Zugangspunkt. Oft werden mehrere Zugangspunkte kombiniert, um ein ganzes Gebiet, wie ein Haus, ein Unternehmen oder einen Park mit einem drahtlosen Netzwerk zu versorgen.

Üblicherweise haben Zugangspunkte mehrere Netzwerkverbindungen: Die drahtlose Karte, sowie eine oder mehrere Ethernetkarten, über die die Verbindung mit dem restlichen Netzwerk hergestellt wird.

Sie können einen vorkonfigurierten Zugangspunkt kaufen, oder Sie können sich unter Verwendung von FreeBSD und einer unterstützten drahtlosen Karte einen eigenen bauen. Es gibt verschiedene Hersteller, die sowohl Zugangspunkte als auch drahtlose Karten mit verschiedensten Eigenschaften vertreiben.

25.3.3.2. Einen FreeBSD-Zugangspunkt installieren

25.3.3.2.1. Voraussetzungen

Um einen drahtlosen Zugangspunkt unter FreeBSD einzurichten, müssen Sie über eine drahtlose Karte verfügen. Zurzeit werden dafür von FreeBSD nur Karten mit Prism-Chipsatz unterstützt. Zusätzlich benötigen Sie eine von FreeBSD unterstützte Ethernetkarte (diese sollte nicht schwer zu finden sein, da FreeBSD eine Vielzahl von verschiedenen Karten unterstützt). Für die weiteren Erläuterungen nehmen wir an, dass Sie den ganzen Verkehr zwischen dem drahtlosen Gerät und dem an die Ethernetkarte angeschlossenen Kabel-Netzwerk über die bridge(4)-Funktion realisieren wollen.

Die hostap-Funktion, mit der FreeBSD Zugangspunkte implementiert, läuft am besten mit bestimmten Firmware-Versionen. Prism 2-Karten sollten die Firmwareversion 1.3.4 oder neuer verwenden. Prism 2.5- und Prism 3-Karten sollten die Firmwareversion 1.4.9 verwenden. Es kann sein, dass auch ältere Versionen funktionieren. Zurzeit ist es nur mit Windows®-Werkzeugen der Hersteller möglich, die Firmware zu aktualisieren.

25.3.3.2.2. Einrichtung

Stellen Sie als Erstes sicher, dass Ihr System die drahtlose Karte erkennt:

# ifconfig -a
wi0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        inet6 fe80::202:2dff:fe2d:c938%wi0 prefixlen 64 scopeid 0x7
        inet 0.0.0.0 netmask 0xff000000 broadcast 255.255.255.255
        ether 00:09:2d:2d:c9:50
        media: IEEE 802.11 Wireless Ethernet autoselect (DS/2Mbps)
        status: no carrier
        ssid ""
        stationname "FreeBSD Wireless node"
        channel 10 authmode OPEN powersavemode OFF powersavesleep 100
        wepmode OFF weptxkey 1

Kümmern Sie sich jetzt noch nicht um die Details, sondern stellen Sie nur sicher, dass ihre drahtlose Karte überhaupt erkannt und angezeigt wird. Wenn es sich um eine PC Card handelt, die überhaupt nicht erkannt wird, sollten Sie pccardc(8) sowie pccardd(8) lesen.

Danach müssen Sie ein Modul laden, um die Bridge-Funktion von FreeBSD für den Zugangspunkt vorzubereiten. Um das Modul bridge(4) zu laden, geben Sie Folgendes ein:

# kldload bridge

Dabei sollten beim Laden des Moduls keine Fehlermeldungen auftreten. Geschieht dies doch, kann es sein, dass Sie die Bridge-Funktion (bridge(4)) in Ihren Kernel kompilieren müssen. Der Abschnitt LAN-Kopplung mit einer Bridge dieses Handbuchs sollte Ihnen dabei behilflich sein.

Wenn die Bridge-Funktion aktiviert ist, müssen wir FreeBSD mitteilen, welche Schnittstellen über die Bridge verbunden werden sollen. Dazu verwenden wir sysctl(8):

# sysctl net.link.ether.bridge=1
# sysctl net.link.ether.bridge_cfg="wi0 xl0"
# sysctl net.inet.ip.forwarding=1

Ab FreeBSD 5.2-RELEASE müssen Sie Folgendes eingeben:

# sysctl net.link.ether.bridge.enable=1
# sysctl net.link.ether.bridge.config="wi0,xl0"
# sysctl net.inet.ip.forwarding=1

Nun ist es an der Zeit, die drahtlose Karte zu installieren. Der folgende Befehl konfiguriert einen Zugangspunkt:

# ifconfig wi0 ssid my_net channel 11 media DS/11Mbps mediaopt hostap up stationname "FreeBSD AP"

Durch diese Zeile aktiviert ifconfig(8) das Gerät wi0, setzt die SSID auf my_net sowie den Namen des Zugangspunkts auf FreeBSD AP. Mit media DS/11Mbps wird die Karte in den 11 Mbps-Modus versetzt. Diese Option ist nötig, damit mediaopt-Optionen wirksam werden. Durch mediaopt hostap wird die Schnittstelle als Zugangspunkt konfiguriert. Der zu benutzende 802.11b-Kanal wird durch channel 11 festgelegt. Weitere Informationen zu gültigen Kanaloptionen finden Sie in wicontrol(8).

Nun sollten Sie über einen voll funktionsfähigen und laufenden Zugangspunkt verfügen. Weitere Informationen finden Sie in den Hilfeseiten wicontrol(8), ifconfig(8) und wi(4).

Außerdem ist es empfehlenswert, den folgenden Abschnitt zu lesen, um sich über die Sicherung und Verschlüsselung von Zugangspunkten zu informieren.

25.3.3.2.3. Statusinformationen

Wenn der Zugangspunkt eingerichtet ist und läuft, können Sie die verbundenen Clients mit dem nachstehenden Kommando abfragen:

# wicontrol -l
1 station:
00:09:b7:7b:9d:16  asid=04c0, flags=3<ASSOC,AUTH>, caps=1<ESS>, rates=f<1M,2M,5.5M,11M>, sig=38/15

Das Beispiel zeigt eine verbundene Station und die dazugehörenden Verbindungsparameter. Die angegebene Signalstärke ist allerdings mit Vorsicht zu genießen, da die Umrechnung in dBm oder andere Einheiten von der eingesetzten Firmware-Version abhängig ist.

25.3.3.3. Clients

Ein drahtloser Client ist ein System, das direkt auf einen Zugangspunkt oder einen anderen Client zugreift.

Üblicherweise haben drahtlose Clients nur ein Netzwerkgerät, die drahtlose Netzkarte.

Es gibt verschiedene Möglichkeiten, einen drahtlosen Client zu konfigurieren. Diese hängen von den verschiedenen drahtlosen Betriebsmodi ab. Man unterscheidet vor allem zwischen BSS (Infrastrukturmodus, erfordert einen Zugangspunkt) und IBSS (ad-hoc, Peer-to-Peer-Modus, zwischen zwei Clients, ohne Zugangspunkt). In unserem Beispiel verwenden wir den weiter verbreiteten BSS-Modus, um einen Zugangspunkt anzusprechen.

25.3.3.3.1. Voraussetzungen

Es gibt nur eine Voraussetzung, um FreeBSD als drahtlosen Client betreiben zu können: Sie brauchen eine von FreeBSD unterstützte drahtlose Karte.

25.3.3.3.2. Einen drahtlosen FreeBSD-Client einrichten

Sie müssen ein paar Dinge über das drahtlose Netzwerk wissen, mit dem Sie sich verbinden wollen, bevor Sie starten können. In unserem Beispiel verbinden wir uns mit einem Netzwerk, das den Namen my_net hat, und bei dem die Verschlüsselung deaktiviert ist.

Anmerkung: In unserem Beispiel verwenden wir keine Verschlüsselung. Dies ist eine gefährliche Situation. Im nächsten Abschnitt werden Sie daher lernen, wie man die Verschlüsselung aktiviert, warum es wichtig ist, dies zu tun, und warum einige Verschlüsselungstechniken Sie trotzdem nicht vollständig schützen.

Stellen Sie sicher, dass Ihre Karte von FreeBSD erkannt wird:

# ifconfig -a
wi0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        inet6 fe80::202:2dff:fe2d:c938%wi0 prefixlen 64 scopeid 0x7
        inet 0.0.0.0 netmask 0xff000000 broadcast 255.255.255.255
        ether 00:09:2d:2d:c9:50
        media: IEEE 802.11 Wireless Ethernet autoselect (DS/2Mbps)
        status: no carrier
        ssid ""
        stationname "FreeBSD Wireless node"
        channel 10 authmode OPEN powersavemode OFF powersavesleep 100
        wepmode OFF weptxkey 1

Nun können wir die Einstellungen der Karte unserem Netzwerk anpassen:

# ifconfig wi0 inet 192.168.0.20 netmask 255.255.255.0 ssid my_net

Ersetzen Sie 192.168.0.20 und 255.255.255.0 durch eine gültige IP-Adresse und Netzmaske ihres Kabel-Netzwerks. Bedenken Sie außerdem, dass unser Zugangspunkt als Bridge zwischen dem drahtlosen und dem Kabel-Netzwerk fungiert. Für die anderen Rechner Ihres Netzwerks befinden Sie sich, genauso wie diese, im gleichen Kabel-Netzwerk, obwohl Sie zum drahtlosen Netzwerk gehören.

Nachdem Sie dies erledigt haben, sollten Sie andere Rechner (Hosts) im Kabel-Netzwerk anping(8)en können, genauso, wie wenn Sie über eine Standardkabelverbindung mit ihnen verbunden wären.

Wenn Probleme mit Ihrer drahtlosen Verbindung auftreten, stellen Sie sicher, dass Sie mit dem Zugangspunkt verbunden sind:

# ifconfig wi0

sollte einige Informationen ausgeben und Sie sollten Folgendes sehen:

status: associated

Wird associated nicht angezeigt, sind Sie entweder außerhalb der Reichweite des Zugangspunktes, haben die Verschlüsselung deaktiviert, oder Sie haben ein anderes Konfigurationsproblem.

25.3.3.4. Verschlüsselung

Verschlüsselung ist in einem drahtlosen Netzwerk wichtig, da Sie das Netzwerk nicht länger in einem geschützten Bereich betreiben können. Ihre Daten verbreiten sich in der ganzen Nachbarschaft, das heißt jeder, der es will, kann Ihre Daten lesen. Deshalb gibt es die Verschlüsselung. Durch die Verschlüsselung der durch die Luft versendeten Daten machen Sie es einem Dritten sehr viel schwerer, Ihre Daten abzufangen oder auf diese zuzugreifen.

Die gebräuchlichsten Methoden, um Daten zwischen Ihrem Client und dem Zugangspunkt zu verschlüsseln, sind WEP und ipsec(4).

25.3.3.4.1. WEP

WEP ist die Abkürzung für Wired Equivalency Protocol ("Verkabelung entsprechendes Protokoll"). WEP war ein Versuch, drahtlose Netzwerke ebenso sicher und geschützt zu machen wie verkabelte Netzwerke. Unglücklicherweise wurde es bereits geknackt, und ist relativ einfach auszuhebeln. Sie sollten sich also nicht darauf verlassen, wenn Sie sensible Daten verschlüsseln wollen.

Allerdings ist eine schlechte Verschlüsselung noch immer besser als gar keine Verschlüsselung. Aktivieren Sie daher WEP für Ihren neuen FreeBSD-Zugangspunkt:

# ifconfig wi0 inet up ssid my_net wepmode on wepkey 0x1234567890 media DS/11Mbps mediaopt hostap

Auf dem Client können Sie WEP wie folgt aktivieren:

# ifconfig wi0 inet 192.168.0.20 netmask 255.255.255.0 ssid my_net wepmode on wepkey 0x1234567890

Beachten Sie bitte, dass Sie 0x1234567890 durch einen besseren Schlüssel ersetzen sollten.

25.3.3.4.2. IPsec

ipsec(4) ist ein viel besseres und robusteres Werkzeug, um Daten in einem Netzwerk zu verschlüsseln und ist auch der bevorzugte Weg, Daten in einem drahtlosen Netzwerk zu verschlüsseln. Weitere Informationen zu ipsec(4) sowie zu dessen Implementierung enthält der Abschnitt IPsec des Handbuches.

25.3.3.5. Werkzeuge

Es gibt einige Werkzeuge, die dazu dienen, Ihr drahtloses Netzwerk zu installieren, und auftretende Probleme zu beheben. Im folgenden Abschnitt werden die wichtigsten von ihnen beschrieben.

25.3.3.5.1. bsd-airtools

Das Paket bsd-airtools enthält einen kompletten Werkzeugsatz zum Herausfinden von WEP-Schlüsseln, zum Auffinden von Zugangspunkten, usw.

Die bsd-airtools können Sie über den Port net/bsd-airtools installieren. Wie ein Port installiert wird, beschreibt Kapitel 4 des Handbuchs.

Das Programm dstumbler ist ein Werkzeug, das Sie beim Auffinden von Zugangspunkten unterstützt, und das Signal-Rausch-Verhältnis graphisch darstellen kann. Wenn Sie Probleme beim Einrichten und Betreiben Ihres Zugangspunktes haben, könnte dstumbler genau das Richtige für Sie sein.

Um die Sicherheit Ihres drahtlosen Netzwerks zu überprüfen, könnten Sie das Paket “dweputils” (dwepcrack, dwepdump und dwepkeygen) verwenden. Durch diese Tools können Sie feststellen, ob WEP Ihren Sicherheitsanforderungen genügt.

25.3.3.5.2. wicontrol, ancontrol und raycontrol

Dies sind Werkzeuge, um das Verhalten Ihrer drahtlosen Karte im drahtlosen Netzwerk zu kontrollieren. In den obigen Beispielen haben wir wicontrol(8) verwendet, da es sich bei unser drahtlosen Karte um ein Gerät der wi0-Schnittstelle handelt. Hätten Sie eine drahtlose Karte von Cisco, würden Sie diese über an0 ansprechen, und daher ancontrol(8) verwenden.

25.3.3.5.3. Das Kommando ifconfig

ifconfig(8) kennt zwar viele Optionen von wicontrol(8), einige fehlen jedoch. Unter ifconfig(8) finden Sie Informationen zu Parametern und Optionen.

25.3.3.6. Unterstützte Karten

25.3.3.6.1. Zugangspunkt

Die einzigen Karten, die im BSS-Modus (das heißt als Zugangspunkt) derzeit unterstützt werden, sind solche mit Prism 2-, 2.5- oder 3-Chipsatz. Für eine komplette Übersicht lesen Sie bitte wi(4).

25.3.3.6.2. Clients

Beinahe alle nach 802.11b arbeitenden drahtlosen Karten werden von FreeBSD unterstützt. Die meisten dieser Karten von Prism, Spectrum24, Hermes, Aironet und Raylink arbeiten als drahtlose Netzkarten im IBSS-Modus (ad-hoc, Peer-to-Peer und BSS).

25.3.3.6.3. 802.11a und 802.11g Clients

ath(4) unterstützt sowohl 802.11a als auch 802.11g. Wenn Ihre Karte auf dem Atheros-Chipsatz basiert, können Sie also eventuell diesen Treiber verwenden.

Leider stellen nach wie vor viele Unternehmen die Spezifikationen ihrer Treiber der Open Source Gemeinde nicht zur Verfügung, weil sie diese Informationen als Geschäftsgeheimnisse betrachten. Daher haben die Entwickler von FreeBSD und anderen Betriebssystemen nur zwei Möglichkeiten. Entweder versuchen sie in einem aufwändigen Prozess den Treiber durch Reverse Engineering nachzubauen, oder sie versuchen, die vorhandenen Binärtreiber der Microsoft® Windows-Plattform zu verwenden. Die meisten Entwickler, darunter auch die an FreeBSD beteiligten, haben sich für den zweiten Ansatz entschieden.

Bill Paul (wpaul) ist es zu verdanken, dass es seit FreeBSD 5.3-RELEASE eine “native” Unterstützung der Network Driver Interface Specification (NDIS) gibt. Der FreeBSD NDISulator (auch als Project Evil bekannt) nutzt den binären Windows-Treiber, indem er diesem vorgibt, unter Windows zu laufen. Obwohl diese Fähigkeit noch relativ neu ist, arbeitet sie in den meisten Fällen bereits zufriedenstellend.

Um den NDISulator zu verwenden, benötigen Sie drei Dinge:

  1. Die Kernelquellen

  2. Den Windows XP-Binärtreiber (mit der Erweiterung .SYS)

  3. Die Konfigurationsdatei des Windows XP-Treibers (mit der Erweiterung .INF)

Als erstes müssen Sie das Wrappermodul für den ndis(4) Miniport-Treiber kompilieren. Dazu geben Sie als root Folgendes ein:

# cd /usr/src/sys/modules/ndis
# make && make install

Suchen Sie die Dateien für Ihre Karte. Diese befinden sich meistens auf einer beigelegten CD-ROM, oder können von der Internetseite des Herstellers heruntergeladen werden. In den folgenden Beispielen werden die Dateien W32DRIVER.SYS und W32DRIVER.INF verwendet.

Als Nächstes kompilieren Sie den binären Treiber, um ein Kernelmodul zu erzeugen. Dazu wechseln Sie als root ins Modulverzeichnis if_ndis und kopieren den Windows-Treiber dorthin:

# cd /usr/src/sys/modules/if_ndis
# cp /path/to/driver/W32DRIVER.SYS ./
# cp /path/to/driver/W32DRIVER.INF ./

Danach nutzen wir ndiscvt, um die Headerdatei ndis_driver_data.h mit den Treiberdefinitionen zu erzeugen, die für den Bau des Moduls benötigt wird:

# ndiscvt -i W32DRIVER.INF -s W32DRIVER.SYS -o ndis_driver_data.h

Die Optionen -i und -s legen die Konfigurations- und Binärdateien fest. Durch -o ndis_driver_data.h teilen wir Makefile mit, wo sich diese für den Bau des Moduls benötigte Datei befindet.

Anmerkung: Einige Windows-Treiber benötigen noch weitere Dateien für einen fehlerfreien Betrieb. Ist dies bei Ihnen der Fall, können Sie diese Dateien mit der Option -f an ndiscvt übergeben (lesen Sie dazu auch ndiscvt(8)).

Nun können wir das Treibermodul kompilieren und installieren:

# make && make install

Um den Treiber zu verwenden, müssen Sie die entsprechenden Module laden:

# kldload ndis
# kldload if_ndis

Der erste Befehl lädt den Wrapper für den NDIS Miniport-Treiber, der zweite die betreffende Netzwerkgerätedatei. Überprüfen Sie nun dmesg(8) auf eventuelle Fehlermeldungen. Wenn alles klappt, sollte Sie eine Ausgabe ähnlich der folgenden erhalten:

ndis0: <Wireless-G PCI Adapter> mem 0xf4100000-0xf4101fff irq 3 at device 8.0 on pci1
ndis0: NDIS API version: 5.0
ndis0: Ethernet address: 0a:b1:2c:d3:4e:f5
ndis0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
ndis0: 11g rates: 6Mbps 9Mbps 12Mbps 18Mbps 36Mbps 48Mbps 54Mbps

Ab sofort können Sie ndis0 wie jedes andere drahtlose Gerät (beispielsweise wi0) ansprechen. Lesen Sie sich dazu die vorherigen Abschnitte dieses Kapitels nochmals durch.

Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an <de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <de-bsd-translators@de.FreeBSD.org>.

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 17:56:55