Das FreeBSD-Handbuch
Zurück | Kapitel 32. Weiterführende Netzwerkthemen | Weiter

# 32.3. Drahtlose Netzwerke

Loader, Marc Fonvieille und Murray Stokely.

## 32.3.1. Grundlagen

Die meisten drahtlosen Netzwerke basieren auf dem Standard IEEE® 802.11. Sie bestehen aus Stationen, die in der Regel im 2,4 GHz- oder im 5 GHz-Band miteinander kommunizieren. Es ist aber auch möglich, dass regional andere Frequenzen, beispielsweise im 2,3 GHz- oder 4,9 GHz-Band, verwendet werden.

802.11-Netzwerke können auf zwei verschiedene Arten aufgebaut sein: Im Infrastruktur-Modus agiert eine Station als Master, mit dem sich alle anderen Stationen verbinden. Die Summe aller Stationen wird als BSS (Basic Service Set), die Master-Station hingegen als Access Point (AP) bezeichnet. In einem BSS läuft jedwede Kommunikation über den Access Point. Die zweite Form drahtloser Netzwerke sind die sogenannten Ad-hoc-Netzwerke (auch als IBSS bezeichnet), in denen es keinen Access Point gibt und in denen die Stationen direkt miteinander kommunizieren.

Die ersten 802.11-Netzwerke arbeiteten im 2,4 GHz-Band und nutzten dazu Protokolle der IEEE-Standards 802.11 sowie 802.11b. Diese Standards legen unter anderem Betriebsfrequenzen sowie Merkmale des MAC-Layers (wie Frames und Transmissionsraten) fest. Später kam der Standard 802.11a hinzu, der im 5 GHz-Band, im Gegensatz zu den ersten beiden Standards aber mit unterschiedlichen Signalmechanismen und höheren Transmissionsraten arbeitet. Der neueste Standard 802.11g implementiert die Signal- und Transmissionsmechanismen von 802.11a im 2,4 GHz-Band, ist dabei aber abwärtskompatibel zu 802.11b-Netzwerken.

Unabhängig von den zugrundeliegenden Transportmechanismen verfügen 802.11-Netzwerke über diverse Sicherheitsmechanismen. Der ursprüngliche 802.11-Standard definierte lediglich ein einfaches Sicherheitsprotokoll namens WEP. Dieses Protokoll verwendet einen fixen (gemeinsam verwendeten) Schlüssel sowie die RC4-Kryptografie-Chiffre, um Daten verschlüsselt über das drahtlose Netzwerk zu senden. Alle Stationen des Netzwerks müssen sich auf den gleichen fixen Schlüssel einigen, um miteinander kommunizieren zu können. Dieses Schema ist sehr leicht zu knacken und wird deshalb heute kaum mehr eingesetzt. Aktuelle Sicherheitsmechanismen bauen auf dem Standard IEEE 802.11i auf, der neue kryptografische Schlüssel (Chiffren), ein neues Protokoll für die Anmeldung von Stationen an einem Access Point, sowie Mechanismen zum Austausch von Schlüsseln als Vorbereitung der Kommunikation zwischen verschiedenen Geräten festlegt. Kryptografische Schlüssel werden regelmäßig getauscht. Außerdem gibt es Mechanismen, um Einbruchsversuche zu entdecken (und Gegenmaßnahmen ergreifen zu können). Ein weiteres häufig verwendetes Sicherheitsprotokoll ist WPA. Dabei handelt es sich um einen Vorläufer von 802.11i, der von einem Industriekonsortium als Zwischenlösung bis zur endgültigen Verabschiedung von 802.11i entwickelt wurde. WPA definiert eine Untergruppe der Anforderungen des 802.11i-Standards und ist für den Einsatz in älterer Hardware vorgesehen. WPA benötigt nur den (auf dem ursprünglichen WEP-Code basierenden) TKIP-Chiffre. 802.11i erlaubt zwar auch die Verwendung von TKIP, fordert aber zusätzlich eine stärkere Chiffre (AES-CCM) für die Datenverschlüsselung. (AES war für WPA nicht vorgesehen, weil man es als zu rechenintensiv für den Einsatz in älteren Geräten ansah.)

Neben den weiter oben erwähnten Standards ist auch der Standard 802.11e von großer Bedeutung. Dieser definiert Protokolle zur Übertragung von Multimedia-Anwendungen wie das Streaming von Videodateien oder Voice-over-IP (VoIP) in einem 802.11-Netzwerk. Analog zu 802.11i verfügt auch 802.11e über eine vorläufige Spezifikation namens WMM (ursprünglich WME), die von einem Industriekonsortium als Untergruppe von 802.11e spezifiziert wurde, um Multimedia-Anwendungen bereits vor der endgültigen Verabschiedung des 802.11e-Standards implementieren zu können. 802.11e sowie WME/WMM erlauben eine Prioritätenvergabe beim Datentransfer im einem drahtlosen Netzwerk. Möglich wird dies durch den Einsatz von Quality of Service-Protokollen (QoS) und erweiterten Medienzugriffsprotokollen. Werden diese Protokolle korrekt implementiert, erlauben sie daher hohe Datenübertragungsraten und einen priorisierten Datenfluss.

FreeBSD unterstützt die Standards 802.11a, 802.11b, sowie 802.11g. Ebenfalls unterstützt werden WPA sowie die Sicherheitsprotokolle gemäß 802.11i (dies sowohl für 11a, 11b als auch 11g). QoS und Verkehrspriorisierung, die von den WME/WMM-Protokollen benötigt werden, werden ebenfalls (allerdings nicht für alle drahtlosen Geräte) unterstützt.

## 32.3.2. Basiskonfiguration

### 32.3.2.1. Kernelkonfiguration

Um ein drahtloses Netzwerk zu nutzen, benötigen Sie eine drahtlose Netzwerkkarte und einen Kernel, der drahtlose Netzwerke unterstützt. Der FreeBSD-Kernel unterstützt den Einsatz von Kernelmodulen. Daher müssen Sie nur die Unterstützung für die von Ihnen verwendeten Geräte aktivieren.

Als Erstes benötigen Sie ein drahtloses Gerät. Die meisten drahtlosen Geräte verwenden Bauteile von Atheros und werden deshalb vom ath(4)-Treiber unterstützt. Um diesen Treiber zu verwenden, nehmen Sie die folgende Zeile in die Datei `/boot/loader.conf` auf:

    if_ath_load="YES"

Der Atheros-Treiber besteht aus drei Teilen: dem Treiber selbst (ath(4)), dem Hardware-Support-Layer für die chip-spezifischen Funktionen (ath_hal(4)) sowie einem Algorithmus zur Auswahl der korrekten Frame-Übertragungsrate (ath_rate_sample). Wenn Sie die Unterstützung für diesen Treiber als Kernelmodul laden, kümmert sich dieses automatisch um diese Aufgaben. Verwenden Sie ein Nicht-Atheros-Gerät, so müssen Sie hingegen das für dieses Gerät geeignete Modul laden, beispielsweise

    if_wi_load="YES"

für Geräte, die auf Bauteilen von Intersil Prism basieren und daher den Treiber wi(4) voraussetzen.

> Anmerkung: In den folgenden Abschnitten wird der ath(4)-Treiber verwendet. Verwenden Sie ein anderes Gerät, müssen Sie diesen Wert daher an Ihre Konfiguration anpassen. Eine Liste aller verfügbaren Treiber und unterstützten drahtlosen Geräte finden sich in den FreeBSD Hardware Notes. Diese sind für verschiedene Releases und Architekturen auf der Seite Release Information der FreeBSD Homepage. Gibt es keinen nativen FreeBSD-Treiber für Ihr drahtloses Gerät, können Sie möglicherweise mit NDIS einen Windows®-Treiber verwenden.

Unter FreeBSD 7.X benötigen Sie zusätlich zum korrekten Treiber auch die Unterstützung für 802.11-Netzwerke. Für den ath(4)-Treiber werden dazu mindestens die Module wlan(4), `wlan_scan_ap` sowie `wlan_scan_sta` benötigt. Das wlan(4)-Kernelmodul wird automatisch mit dem Treiber des drahtlosen Geräts geladen, die beiden anderen Module werden jeweils durch einen Eintrag in der Datei `/boot/loader.conf` beim Systemstart geladen:

    wlan_scan_ap_load="YES"
    wlan_scan_sta_load="YES"

Ab FreeBSD 8.0 sind diese Module Teil des wlan(4)-Treibers und werden bei Bedarf automatisch geladen.

Zusätzlich benötigen Sie noch Module zur Verschlüsselung ihres drahtlosen Netzwerks. Diese werden normalerweise dynamisch vom wlan(4)-Modul geladen. Im folgenden Beispiel erfolgt allerdings eine manuelle Konfiguration. Folgende Module sind verfügbar: wlan_wep(4), wlan_ccmp(4) sowie wlan_tkip(4). Sowohl wlan_ccmp(4) als auch wlan_tkip(4) werden nur benötigt, wenn Sie WPA und/oder die Sicherheitsprotokolle von 802.11i verwenden wollen. Wollen Sie Ihr Netzwerk hingegen ohne Verschlüsselung betreiben, benötigen Sie nicht einmal die wlan_wep(4)-Unterstützung. Um alle drei Module beim Systemstart zu laden, fügen Sie folgende Zeilen in die Datei `/boot/loader.conf` ein:

    wlan_wep_load="YES"
    wlan_ccmp_load="YES"
    wlan_tkip_load="YES"

Um diese neuen Einträge in der Datei `/boot/loader.conf` zu aktivieren, müssen Sie Ihr FreeBSD-System neu starten. Alternativ können Sie die Kernelmodule aber auch manuell mit kldload(8) laden.

> Anmerkung: Wollen Sie keine Kernelmodule verwenden, können Sie die benötigten Treiber auch in Ihren Kernel kompilieren. Daz nehmen Sie folgende Zeilen in Ihre Kernelkonfigurationsdatei auf:

>     device wlan              # 802.11 support
>     device wlan_wep          # 802.11 WEP support
>     device wlan_ccmp         # 802.11 CCMP support
>     device wlan_tkip         # 802.11 TKIP support
>     device wlan_amrr         # AMRR transmit rate control algorithm
>     device ath               # Atheros pci/cardbus NIC's
>     device ath_hal           # pci/cardbus chip support
>     options AH_SUPPORT_AR5416 # enable AR5416 tx/rx descriptors
>     device ath_rate_sample   # SampleRate tx rate control for ath

> Verwenden Sie FreeBSD 7.X, müssen Sie auch die beiden Module `wlan_scan_ap` und `wlan_scan_sta` in den Kernel aufnehmen (unter FreeBSD 8.X ist dies hingegen nicht mehr notwendig):

>     device wlan_scan_ap      # 802.11 AP mode scanning
>     device wlan_scan_sta     # 802.11 STA mode scanning

> Danach bauen Sie den neuen Kernel und starten Ihr FreeBSD-System neu.

Während des Systemstarts sollten nun einige Informationen ähnlich den folgenden über das von Ihnen verwendete drahtlose Gerät ausgegeben werden:

    ath0: <Atheros 5212> mem 0x88000000-0x8800ffff irq 11 at device 0.0 on cardbus1
    ath0: [ITHREAD]
    ath0: AR2413 mac 7.9 RF2413 phy 4.5

## 32.3.3. Infrastruktur-Modus

Drahtlose Netzwerke werden in der Regel im Infrastruktur-Modus (auch BSS-Modus genannt) betrieben. Dazu werden mehrere drahtlose Access Points zu einem gemeinsamen drahtlosen Netzwerk verbunden. Jedes dieser drahtlosen Netzwerke hat einen eigenen Namen, der als SSID bezeichnet wird. Alle Clients eines drahtlosen Netzwerks verbinden sich in diesem Modus mit einem Access Point.

### 32.3.3.1. FreeBSD-Clients

#### 32.3.3.1.1. Einen Access Point finden

Um nach drahtlosen Netzwerken zu suchen verwenden Sie `ifconfig`. Dieser Scanvorgang kann einige Zei in Anspruch nehmen, da dazu jede verfügbare Frequenz auf verfügbare Access Points hin überprüft werden muss. Um die Suche zu starten, müssen Sie als Super-User angemeldet sein:

    # ifconfig wlan0 create wlandev ath0
    # ifconfig wlan0 up scan
    SSID/MESH ID    BSSID              CHAN RATE   S:N     INT CAPS
    dlinkap         00:13:46:49:41:76   11   54M -90:96   100 EPS  WPA WME
    freebsdap       00:11:95:c3:0d:ac    1   54M -83:96   100 EPS  WPA

> Anmerkung: Ihre Netzwerkkarte muss in den Status `up` versetzt werden, bevor Sie den ersten Scanvorgang starten können. Für spätere Scans ist dies aber nicht mehr erforderlich.

> Anmerkung: Unter FreeBSD 7.X wird der Gerätetreiber, beispielsweise ``ath0``, direkt verwendet, anstatt auf das allgemeine Gerät `wlan`0`` zuzugreifen. Verwenden Sie also FreeBSD 7.X, müssen Sie die beiden Befehle im vorigen Beispiel durch den folgenden Befehl ersetzen:

>     # ifconfig ath0 up scan

> Dies gilt auch für alle weiteren Ausführungen in diesem Kapitel. Unter FreeBSD 7.X müssen analog alle Befehle und Konfigurationsdateien/Zeilen entsprechend angepasst werden.

Als Ergebnis erhalten Sie eine Liste mit allen gefundenen BSS/IBSS-Netzwerken. Zusätzlich zur `SSID` (dem Namen des Netzwerks) wird auch die `BSSID` ausgegeben. Dabei handelt es sich um MAC-Adresse des Access Points. Das Feld `CAPS` gibt den Typ des Netzwerks sowie die Fähigkeiten der Stationen innerhalb des Netzwerks an:

`E`

  Extended Service Set (ESS). Zeigt an, dass die Station Teil eines Infrastruktur-Netzwerks ist (und nicht eines IBSS/Ad-hoc-Netzwerks).

`I`

  IBSS/Ad-hoc-Netzwerk. Die Station ist Teil eines Ad-hoc-Netzwerks (und nicht eines ESS-Netzwerks).

`P`

  Privacy. Alle Datenframes, die innerhalb des BSS ausgetauscht werden, sind verschlüsselt. Dieses BSS verwendet dazu kryptografische Verfahren wie WEP, TKIP oder AES-CCMP.

`S`

  Short Preamble. Das Netzwerk verwendet eine kurze Präambel (definiert in 802.11b High Rate/DSSS PHY). Eine kurze Präambel verwendet ein 56 Bit langes Sync-Feld (im Gegensatz zu einer langen Präambel, die ein 128 Bit langes Sync-Feld verwendet).

`s`

  Short slot time. Das 802.11g-Netzwerk verwendet eine kurze Slotzeit, da es in diesem Netzwerk keine veralteten (802.11b) Geräte gibt.

Um eine Liste der bekannten Netzwerke auszugeben, verwenden Sie den folgenden Befehl:

    # ifconfig wlan0 list scan

Diese Liste kann entweder automatisch durch das drahtlose Gerät oder manuell durch eine `scan`-Aufforderung aktualisiert werden. Veraltete Informationen werden dabei automatisch entfernt.

#### 32.3.3.1.2. Basiseinstellungen

Dieser Abschnitt beschreibt, wie Sie ein einfaches drahtloses Netzerk ohne Verschlüsselung unter FreeBSD einrichten. Nachdem Sie sich mit den Informationen dieses Abschnitts vertraut gemacht haben, sollten Sie Ihr drahtloses Netzwerk mit WPA verschlüsseln.

Das Einrichten eines drahtlosen Netzwerks erfolgt in drei Schritten: Der Auswahl eines Access Points, der Anmeldung Ihrer Station sowie der Konfiguration Ihrer IP-Adresse.

##### 32.3.3.1.2.1. Einen Access Point auswählen

Im Normalfall wird sich Ihre Station automatisch mit einem der zur Verfügung stehenden Access Points verbinden. Sie müssen dazu lediglich Ihr drahtloses Gerät aktivieren. Alternativ können Sie auch einen Eintrag ähnlich dem folgenden in `/etc/rc.conf` aufnehmen:

    wlans_ath0="wlan0"
    ifconfig_wlan0="DHCP"

> Anmerkung: Wie bereits erwähnt, benötigen Sie unter FreeBSD 7.X anstelle dieser beiden Zeilen nur eine Zeile (mit dem entsprechenden Gerätetreiber):

>     ifconfig_ath0="DHCP"

Wollen Sie sich hingegen mit einem bestimmten Access Point verbinden, müssen Sie dessen SSID angeben:

    wlans_ath0="wlan0"
    ifconfig_wlan0="ssid Ihre_SSID DHCP"

Gibt es in Ihrem Netzwerk mehrere Access Points mit der gleichen SSID (was der Einfachheit wegen häufig der Fall ist), können Sie sich dennoch mit einem bestimmten Access Point verbinden. Dazu müssen Sie lediglich die BSSID des Access Points angeben (die Angabe der SSID ist in diesem Fall nicht erforderlich):

    wlans_ath0="wlan0"
    ifconfig_wlan0="ssid Ihre_SSID bssid xx:xx:xx:xx:xx:xx DHCP"

Es gibt noch weitere Möglichkeiten, den Zugriff auf bestimmte Access Point zu beschränken, beispielsweise durch die Begrenzung der Frequenzen, auf denen eine Station nach einem Access Point sucht. Sinnvoll ist ein solches Vorgehen beispielsweise, wenn Ihr drahtloses Gerät in verschiedenen Frequenzbereichen arbeiten kann, da in diesem Fall das Prüfen aller Frequenzen sehr zeitintensiv ist. Um nur innerhalb eines bestimmten Frequenzbereichs nach einem Access Point zu suchen, verwenden Sie die Option `mode`:

    wlans_ath0="wlan0"
    ifconfig_wlan0="mode 11g ssid Ihre_SSID DHCP"

Dadurch sucht Ihr drahtloses Gerät nur im 2,4 GHz-Band (802.11g), aber nicht innerhalb des 5 GHz-Bandes nach einem Access Point. Mit der Option `channel` können Sie eine bestimmte Frequenz vorgeben, auf der gesucht werden soll. Die Option `chanlist` erlaubt die Angabe mehrerer erlaubter Frequenzen. Eine umfassende Beschreibung dieser Optionen finden Sie in der Manualpage ifconfig(8).

##### 32.3.3.1.2.2. Authentifizierung

Wenn Sie einen Access Point gefunden haben, muss sich Ihrem Station am Access Point anmelden, bevor Sie Daten übertragen kann. Dazu gibt es verschiedene Möglichkeiten. Am häufigsten wird nach wie vor die sogenannte offene Authentifizierung verwendet. Dabei wird es jeder Station erlaubt, sich mit einem Netzwerk zu verbinden und Daten zu übertragen. Aus Sicherheitsgründen sollte diese Methode allerdings nur zu Testzwecken bei der erstmaligen Einrichtung eines drahtlosen Netzwerks verwendet werden. Andere Authentifizierungsmechanismen erfordern den Austausch kryptografischer Informationen, bevor Sie die Übertragung von Daten erlauben. Dazu gehören der Austausch fixer (vorher vereinbarter) Schlüssel oder Kennwörter sowie der Einsatz komplexerer Verfahren mit Backend-Diensten wie RADIUS. Die meisten Netzwerke nutzen allerdings nach wie vor die offene Authentifizierung, da dies die Voreinstellung ist. Am zweithäufigsten kommt das weiter unten beschriebene WPA-PSK (das auch als WPA Personal bezeichnet wird) zum Einsatz.

> Anmerkung: Verwenden Sie eine Apple® AirPort® Extreme-Basisstation als Access Point, benötigen Sie wahrscheinlich sowohl die Shared-Key-Authentifizierung als auch einen WEP-Schlüssel. Die entsprechende Konfiguration erfolgt entweder in der Datei `/etc/rc.conf` oder über das Programm wpa_supplicant(8). Verwenden Sie nur eine einzige AirPort-Basisstation, benötigen Sie einen Eintrag ähnlich dem folgenden:

>     wlans_ath0="wlan0"
>     ifconfig_wlan0="authmode shared wepmode on weptxkey 1 wepkey 01234567 DHCP"

> Normalerweise sollten Sie Shared-Key-Authentifizierung aber nicht verwenden, da diese die Sicherheit des WEP-Schlüssel noch weiter verringert. Müssen Sie WEP einsetzen (beispielsweise weil Sie zu veralteten Geräten kompatibel bleiben müssen), sollten Sie WEP nur zusammen mit der offenen Authentifizierung (`open` authentication) verwenden. WEP wird im Abschnitt 32.3.3.1.4 näher beschrieben.

##### 32.3.3.1.2.3. Eine IP-Adresse über DHCP beziehen

Nachdem Sie einen Access Point gefunden und sich authentifiziert haben, benötigen Sie noch eine IP-Adresse, die Sie in der Regel über DHCP zugewiesen bekommen. Dazu müssen Sie lediglich die Option `DHCP` in Ihre in der Datei `/etc/rc.conf` vorhandene Konfiguration Ihres drahtlosen Geräts aufnehmen:

    wlans_ath0="wlan0"
    ifconfig_wlan0="DHCP"

Nun können Sie Ihr drahtloses Gerät starten:

    # /etc/rc.d/netif start

Nachdem Sie das Gerät aktiviert haben, können Sie mit `ifconfig` den Status des Geräts `ath0` abfragen:

    # ifconfig wlan0
    wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
            ether 00:11:95:d5:43:62
            inet 192.168.1.100 netmask 0xffffff00 broadcast 192.168.1.255
            media: IEEE 802.11 Wireless Ethernet OFDM/54Mbps mode 11g
            status: associated
            ssid dlinkap channel 11 (2462 Mhz 11g) bssid 00:13:46:49:41:76
            country US ecm authmode OPEN privacy OFF txpower 21.5 bmiss 7
            scanvalid 60 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi 7
            roam:rate 5 protmode CTS wme burst

`status: associated` besagt, dass sich Ihr Gerät mit dem drahtlosen Netzwerk verbunden hat (konkret mit dem Netzwerk `dlinkap`). `bssid 00:13:46:49:41:76` gibt die MAC-Adresse Ihres Access Points aus und die Zeile mit `authmode OPEN` informiert Sie darüber, dass Ihre Kommunikation nicht verschlüsselt wird.

##### 32.3.3.1.2.4. Statische IP-Adressen

Alternativ zu dynamischen IP-Adressen können Sie auch eine statische IP-Adresse verwenden. Dazu ersetzen Sie in Ihrer Konfiguration `DHCP` durch die zu verwendende IP-Adresse. Beachten Sie dabei, dass Sie die anderen Konfigurationsparameter nicht versehentlich verändern:

    wlans_ath0="wlan0"
    ifconfig_wlan0="inet 192.168.1.100 netmask 255.255.255.0 ssid your_ssid_here"

#### 32.3.3.1.3. WPA

Bei WPA (Wi-Fi Protected Access) handelt es sich um ein Sicherheitsprotokoll, das in 802.11-Netzwerken verwendet wird, um die Nachteile von WEP (fehlende Authentifizierung und schwache Verschlüsselung) zu vermeiden. WPA stellt das aktuelle 802.1X-Authentifizierungsprotokoll dar und verwendet eine von mehreren Chiffren, um die Datensicherheit zu gewährleisten. Die einzige Chiffre, die von WPA verlangt wird, ist TKIP (Temporary Key Integrity Protocol), eine Chiffre, die die von WEP verwendete RC4-Chiffre um Funktionen zur Prüfung der Datenintegrität und zur Erkennung und Bekämpfung von Einbruchsversuchen erweitert. TKIP ist durch Softwaremodifikationen auch unter veralteter Hardware lauffähig. Im Vergleich zu WEP ist WPA zwar sehr viel sicherer, es ist aber dennoch nicht völlig immun gegen Angriffe. WPA definiert mit AES-CCMP noch eine weitere Chiffre als Alternative zu TKIP. AES-CCMP (das häufig als WPA2 oder RSN bezeichnet wird) sollte, wenn möglich, eingesetzt werden.

WPA definiert Authentifizierungs- und Verschlüsselungsprotokolle. Die Authentifizierung erfolgt in der Regel über eine der folgenden Techniken: 802.1X gemeinsam mit einem Backend-Authentifizierungsdienst wie RADIUS, oder durch einen Minimal-Handshake zwischen der Station und dem Access Point mit einem vorher vereinbarten gemeinsamen Schlüssel. Die erste Technik wird als WPA Enterprise, die zweite hingegen als WPA Personal bezeichnet. Da sich der Aufwand für das Aufsetzen eines RADIUS-Backend-Servers für die meisten drahtlosen Netzwerke nicht lohnt, wird WPA in der Regel als WPA-PSK (WPA, Pre-Shared-Key) konfiguriert.

Die Kontrolle der drahtlosen Verbindung sowie die vorangehende Authentifizierung (über Schlüssel oder durch die Kommunikation mit einem Server) erfolgt über das Programm wpa_supplicant(8), das über die Datei `/etc/wpa_supplicant.conf` eingerichtet wird. Ausführliche Informationen zur Konfiguration des Programms finden sich in der Manualpage wpa_supplicant.conf(5).

##### 32.3.3.1.3.1. WPA-PSK

WPA-PSK oder WPA-Personal basiert auf einem gemeinsamen (vorher vereinbarten) Schlüssel (PSK), der aus einem Passwort generiert und danach als Master-Key des drahtlosen Netzwerks verwendet wird. Jeder Benutzer des drahtlosen Netzwerks verwendet daher den gleichen Schlüssel. WPA-PSK sollte nur in kleinen Netzwerken eingesetzt werden, in denen die Konfiguration eines Authentifizierungsservers nicht möglich oder erwünscht ist.

> Warnung: Achten Sie darauf, dass Sie immer starke Passwörter verwenden, die ausreichend lang sind und, wenn möglich, auch Sonderzeichen enthalten, damit diese nicht leicht erraten und/oder umgangen werden können.

Der erste Schritt zum Einsatz von WPA-PSK ist die Konfiguration der SSID und des gemeinsamen Schlüssels Ihres Netzwerks in der Datei `/etc/wpa_supplicant.conf`:

    network={
      ssid="freebsdap"
      psk="freebsdmall"
    }

Danach geben Sie in `/etc/rc.conf` an, dass WPA zur Verschlüsselung eingesetzt werden soll und dass die IP-Adresse über DHCP bezogen wird:

    wlans_ath0="wlan0"
    ifconfig_wlan0="WPA DHCP"

Nun können Sie Ihr Netzgerät aktivieren:

    # /etc/rc.d/netif start
    Starting wpa_supplicant.
    DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 5
    DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 6
    DHCPOFFER from 192.168.0.1
    DHCPREQUEST on wlan0 to 255.255.255.255 port 67
    DHCPACK from 192.168.0.1
    bound to 192.168.0.254 -- renewal in 300 seconds.
    wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
          ether 00:11:95:d5:43:62
          inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255
          media: IEEE 802.11 Wireless Ethernet OFDM/36Mbps mode 11g
          status: associated
          ssid freebsdap channel 1 (2412 MHz 11g) bssid 00:11:95:c3:0d:ac
          country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF
          AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan
          bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS
          wme burst roaming MANUAL

Alternativ können Sie die Konfiguration von WPA-PSK auch manuell durchführen, wobei Sie wiederum die Konfigurationsdatei `/etc/wpa_supplicant.conf` verwenden:

    # wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf
    Trying to associate with 00:11:95:c3:0d:ac (SSID='freebsdap' freq=2412 MHz)
    Associated with 00:11:95:c3:0d:ac
    WPA: Key negotiation completed with 00:11:95:c3:0d:ac [PTK=CCMP GTK=CCMP]
    CTRL-EVENT-CONNECTED - Connection to 00:11:95:c3:0d:ac completed (auth) [id=0 id_str=]

Im zweiten Schritt starten Sie nun `dhclient`, um eine IP-Adresse vom DHCP-Server zu beziehen:

    # dhclient wlan0
    DHCPREQUEST on wlan0 to 255.255.255.255 port 67
    DHCPACK from 192.168.0.1
    bound to 192.168.0.254 -- renewal in 300 seconds.
    # ifconfig wlan0
    wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
          ether 00:11:95:d5:43:62
          inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255
          media: IEEE 802.11 Wireless Ethernet OFDM/36Mbps mode 11g
          status: associated
          ssid freebsdap channel 1 (2412 MHz 11g) bssid 00:11:95:c3:0d:ac
          country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF
          AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan
          bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS
          wme burst roaming MANUAL

> Anmerkung: Enthält Ihre `/etc/rc.conf` bereits die Zeile `ifconfig_wlan0="DHCP"`, müssen Sie `dhclient` nicht mehr manuell aufrufen, da `dhclient` in diesem Fall automatisch gestartet wird, nachdem `wpa_supplicant` die Schlüssel übergibt.

Sollte der Einsatz von DHCP nicht möglich sein, können Sie auch eine statische IP-Adresse angeben, nachdem `wpa_supplicant` Ihre Station authentifiziert hat:

    # ifconfig wlan0 inet 192.168.0.100 netmask 255.255.255.0
    # ifconfig wlan0
    wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
          ether 00:11:95:d5:43:62
          inet 192.168.0.100 netmask 0xffffff00 broadcast 192.168.0.255
          media: IEEE 802.11 Wireless Ethernet OFDM/36Mbps mode 11g
          status: associated
          ssid freebsdap channel 1 (2412 MHz 11g) bssid 00:11:95:c3:0d:ac
          country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF
          AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan
          bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS
          wme burst roaming MANUAL

Verwenden Sie DHCP nicht, müssen Sie zusätzlich noch das Standard-Gateway sowie den/die Nameserver manuell festlegen:

    # route add default your_default_router
    # echo "nameserver your_DNS_server" >> /etc/resolv.conf

##### 32.3.3.1.3.2. WPA und EAP-TLS

Die zweite Möglichkeit, WPA einzusetzen, ist die Verwendung eines 802.1X-Backend-Authentifizierungsservers. Diese Variante wird als WPA-Enterprise bezeichnet, um sie vom weniger sicheren WPA-Personal abzugrenzen, das auf dem Austausch gemeinsamer (und vorher vereinbarter Schlüssel) basiert. Die bei WPA-Enterprise verwendete Authentifizierung basiert auf EAP (Extensible Authentication Protocol).

EAP selbst bietet keine Verschlüsselung, sondern operiert in einem verschlüsselten Tunnel. Es gibt verschiedene, auf EAP basierende Authentifizierungsmethoden, darunter EAP-TLS, EAP-TTLS sowie EAP-PEAP.

Bei EAP-TLS (EAP with Transport Layers Security) handelt es sich um sehr gut unterstütztes Authentifizierungsprotokoll, da es sich dabei um die erste EAP-Methode handelt, die von der Wi-Fi Alliance zertifiziert wurde. EAP-TLS erfordert drei Zertifikate: Das (auf allen Rechnern installierte) CA-Zertifikat, das Server-Zertifikat Ihres Authentifizierungsservers, sowie ein Client-Zertifikat für jeden drahtlosen Client. Sowohl der Authentifizierungsservers als auch die drahtlosen Clients authentifizieren sich gegenseitig durch ihre Zertifikate, wobei sie überprüfen, ob diese Zertifikate auch von der Zertifizierungs-Authorität (CA) des jeweiligen Unternehmens signiert wurden.

Die Konfiguration erfolgt (analog zu WPA-PSK) über die Datei `/etc/wpa_supplicant.conf`:

    network={
      ssid="freebsdap"
      proto=RSN
      key_mgmt=WPA-EAP
      eap=TLS
      identity="loader"
      ca_cert="/etc/certs/cacert.pem"
      client_cert="/etc/certs/clientcert.pem"
      private_key="/etc/certs/clientkey.pem"
      private_key_passwd="freebsdmallclient"
    }

  Der Name des Netzwerks (die SSID).
  Das RSN/WPA2-Protokoll (IEEE 802.11i) wird verwendet.
  Die `key_mgmt`-Zeile bezieht sich auf das verwendete Key-Management-Protokoll. In diesem Beispiel wird WPA gemeinsam mit der EAP-Authentifizierung verwendet (`WPA-EAP`).
  Die für die Verbindung verwendete EAP-Methode.
  Das `identity`-Feld enthält den von EAP verwendeten Identifizierungsstring.
  Das Feld `ca_cert` gibt den Pfad zum CA-Zertifikat an. Dieses Datei wird benötigt, um das Server-Zertifikat zu verifizieren.
  Die `client_cert`-Zeile gibt den Pfad zum Client-Zertifikat an. Jeder Client hat ein eigenes, innerhalb des Netzwerks eindeutiges, Zertifikat.
  Das Feld `private_key` gibt den Pfad zum privaten Schlüssel des Client-Zertifikat an.
  Das Feld `private_key_passwd` enthält die Passphrase für den privaten Schlüssel.

Danach fügen Sie die folgende Zeile in `/etc/rc.conf` ein:

    wlans_ath0="wlan0"
    ifconfig_wlan0="WPA DHCP"

Nun können Sie Ihr drahtloses Gerät über das `rc.d`-System aktivieren:

    # /etc/rc.d/netif start
    Starting wpa_supplicant.
    DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 7
    DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 15
    DHCPACK from 192.168.0.20
    bound to 192.168.0.254 -- renewal in 300 seconds.
    wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
          ether 00:11:95:d5:43:62
          inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255
          media: IEEE 802.11 Wireless Ethernet DS/11Mbps mode 11g
          status: associated
          ssid freebsdap channel 1 (2412 MHz 11g) bssid 00:11:95:c3:0d:ac
          country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF
          AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan
          bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS
          wme burst roaming MANUAL

Alternativ können Sie Ihr drahtloses Gerält wiederum manuell über `wpa_supplicant` und `ifconfig` aktivieren.

##### 32.3.3.1.3.3. WPA und EAP-TTLS

Bei EAP-TLS müssen sowohl der Authentifizierungsserver als auch die Clients jeweils ein eigenes Zertifikat aufweisen. Setzen Sie hingegen EAP-TTLS (EAP-Tunneled Transport Layer Security) ein, ist das Client-Zertifikat optional. EAP-TTLS geht dabei ähnlich vor wie verschlüsselte Webseiten, bei denen der Webserver einen sicheren SSL-Tunnel erzeugen kann, ohne dass der Besucher dabei über ein client-seitiges Zertifikat verfügen muss. EAP-TTLS verwendet einen verschlüsselten TLS-Tunnel zum sicheren Transport der Authentifizierungsdaten.

Die Konfiguration von EAP-TTLS erfolgt in der Datei `/etc/wpa_supplicant.conf`:

    network={
      ssid="freebsdap"
      proto=RSN
      key_mgmt=WPA-EAP
      eap=TTLS
      identity="test"
      password="test"
      ca_cert="/etc/certs/cacert.pem"
      phase2="auth=MD5"
    }

  Die für die Verbindung verwendete EAP-Methode.
  Das `identity`-Feld enthält den Identifizierungsstring für die EAP-Authentifizierung innerhalb des verschlüsselten TlS-Tunnels.
  Das `password`-Feld enthält die Passphrase für die EAP-Authentifizierung.
  Das Feld `ca_cert` gibt den Pfad zum CA-Zertifikat an, das benötigt wird, um das Server-Zertifikat zu verifizieren.
  Die innerhalb des verschlüsselten TLS-Tunnels verwendete Authentifizierungsmethode. In unserem Beispiel handelt es sich dabei um EAP und MD5. Diese Phase der “inneren Authentifizierung” wird oft als “phase2” bezeichnet.

Folgende Zeilen müssen zusätzlich in die Datei `/etc/rc.conf` aufgenommen werden:

    wlans_ath0="wlan0"
    ifconfig_wlan0="WPA DHCP"

Nun können Sie Ihr drahtloses Gerät aktivieren:

    # /etc/rc.d/netif start
    Starting wpa_supplicant.
    DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 7
    DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 15
    DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 21
    DHCPACK from 192.168.0.20
    bound to 192.168.0.254 -- renewal in 300 seconds.
    wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
          ether 00:11:95:d5:43:62
          inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255
          media: IEEE 802.11 Wireless Ethernet DS/11Mbps mode 11g
          status: associated
          ssid freebsdap channel 1 (2412 MHz 11g) bssid 00:11:95:c3:0d:ac
          country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF
          AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan
          bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS
          wme burst roaming MANUAL

##### 32.3.3.1.3.4. WPA und EAP-PEAP

PEAP (Protected EAP) wurde als Alternative zu EAP-TTLS entwickelt. Es gibt zwei verschiedene PEAP-Methoden, wobei es sich bei PEAPv0/EAP-MSCHAPv2 um die häufiger verwendete Methode handelt. In den folgenden Ausführungen wird der Begriff PEAP synonym für diese EAP-Methode verwendet. PEAP ist nach EAP-TLS der am häufigsten verwendete und am besten unterstützte EAP-Standard.

PEAP arbeitet ähnlich wie EAP-TTLS: Es verwendet ein server-seitiges Zertifikat, um einen verschlüsselten TLS-Tunnel zu erzeugen, über den die sichere Authentifizierung zwischen den Clients und dem Authentifizierungsserver erfolgt. In Sachen Sicherheit unterscheiden sich EAP-TTLS und PEAP allerdings: PEAP überträgt den Benutzernamen im Klartext und verschlüsselt nur das Passwort, während EAP-TTLS sowohl den Benutzernamen als auch das Passwort über den TLS-Tunnel überträgt.

Um EAP-PEAP einzurichten, müssen Sie die Konfigurationsdatei `/etc/wpa_supplicant.conf` anpassen:

    network={
      ssid="freebsdap"
      proto=RSN
      key_mgmt=WPA-EAP
      eap=PEAP
      identity="test"
      password="test"
      ca_cert="/etc/certs/cacert.pem"
      phase1="peaplabel=0"
      phase2="auth=MSCHAPV2"
    }

  Die für die Verbindung verwendete EAP-Methode.
  Das `identity`-Feld enthält den Identifizierungsstring für die innerhalb des verschlüsselten TLS-Tunnels erfolgende EAP-Authentifizierung.
  Das Feld `password` enthält die Passphrase für die EAP-Authentifizierung.
  Das Feld `ca_cert` gibt den Pfad zum CA-Zertifikat an, das zur Verifizierung des Server-Zertifikats benötigt wird.
  Dieses Feld enthält die Parameter für die erste Phase der Authentifizierung (also den TLS-Tunnel). Je nach dem, welchen Authentifizierungsserver Sie verwenden, müssen Sie hier einen unterschiedlichen Wert angeben. In den meisten Fällen wird dieses Feld den Wert “client EAP encryption” aufweisen, der durch die Angabe von `peaplabel=0` gesetzt wird. Weitere Informationen zur Konfiguration von PEAP finden Sie in der Manualpage wpa_supplicant.conf(5).
  Das innerhalb des verschlüsselten TLS-Tunnels verwendete Authentifizierungsprotokoll. In unserem Beispiel handelt es sich dabei um `auth=MSCHAPV2`.

Danach fügen Sie die folgende Zeile in `/etc/rc.conf` ein:

    ifconfig_ath0="WPA DHCP"

Zuletzt müssen Sie die Netzwerkkarte noch aktivieren:

    # /etc/rc.d/netif start
    Starting wpa_supplicant.
    DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 7
    DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 15
    DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 21
    DHCPACK from 192.168.0.20
    bound to 192.168.0.254 -- renewal in 300 seconds.
    wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
          ether 00:11:95:d5:43:62
          inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255
          media: IEEE 802.11 Wireless Ethernet DS/11Mbps mode 11g
          status: associated
          ssid freebsdap channel 1 (2412 MHz 11g) bssid 00:11:95:c3:0d:ac
          country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF
          AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan
          bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS
          wme burst roaming MANUAL

#### 32.3.3.1.4. WEP

WEP (Wired Equivalent Privacy) ist Teil des ursprünglichen 802.11-Standards. Es enthält keinen Authentifzierungsmechanismus und verfügt lediglich über eine schwache Zugriffskontrolle, die sehr leicht umgangen werden kann.

WEP kann über `ifconfig` aktiviert werden:

    # ifconfig wlan0 create wlandev ath0
    # ifconfig wlan0 inet 192.168.1.100 netmask 255.255.255.0 \
    	    ssid my_net wepmode on weptxkey 3 wepkey 3:0x3456789012

- Mit `weptxkey` geben Sie an, welcher WEP-Schlüssel für für die Datenübertragung verwendet wird (in unserem Beispiel ist dies der dritte Schlüssel). Der gleiche Schlüssel muss auch am Access Point eingestellt sein. Kennen Sie den vom Access Point verwendeten Schlüssel nciht, sollten Sie zuerst den Wert `1` (d.h. den ersten Schlüssel) für diese Variable verwenden.

- Mit `wepkey` legen Sie den zu verwendenden WEP-Schlüssel in der Form `Nummer:Schlüssel` fest. Ist der Schlüssel "Nummer" nicht vorhanden, wird automatisch Schlüssel `1` verwendet. Die Angabe von "Nummer" ist zwingend nötig, wenn Sie einen anderen als den ersten Schlüssel verwenden wollen.

  > Anmerkung: In Ihrer Konfiguration müssen Sie `0x3456789012` durch den an Ihrem Access Point konfigurierten Schlüssel ersetzen.

Weitere Informationen finden Sie in der Manualpage ifconfig(8).

Das Programm `wpa_supplicant` eignet sich ebenfalls dazu, WEP für Ihr drahtloses Gerät zu aktivieren. Obige Konfiguration lässt sich dabei durch die Aufnahme der folgenden Zeilen in die Datei `/etc/wpa_supplicant.conf` realisieren:

    network={
      ssid="my_net"
      key_mgmt=NONE
      wep_key3=3456789012
      wep_tx_keyidx=3
    }

Danach müssen Sie das Programm noch aufrufen:

    # wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf
    Trying to associate with 00:13:46:49:41:76 (SSID='dlinkap' freq=2437 MHz)
    Associated with 00:13:46:49:41:76

## 32.3.4. Ad-hoc-Modus

Der IBSS-Modus (auch als Ad-hoc-Modus bezeichnet), ist für Punkt-zu-Punkt-Verbindungen vorgesehen. Um beispielsweise eine Ad-hoc-Verbindung zwischen den Rechnern `A` und `B` aufzubauen, benötigen Sie lediglich zwei IP-Adressen und eine SSID.

Auf dem Rechner `A` geben Sie Folgendes ein:

    # ifconfig wlan0 create wlandev ath0 wlanmode adhoc
    # ifconfig wlan0 inet 192.168.0.1 netmask 255.255.255.0 ssid freebsdap
    # ifconfig wlan0
      wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
          ether 00:11:95:c3:0d:ac
          inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
          media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <adhoc>
          status: running
          ssid freebsdap channel 2 (2417 Mhz 11g) bssid 02:11:95:c3:0d:ac
          country US ecm authmode OPEN privacy OFF txpower 21.5 scanvalid 60
          protmode CTS wme burst

Der `adhoc`-Parameter gibt an, dass die Schnittstelle im IBSS-Modus läuft.

Rechner `B` sollte nun in der Lage sein, Rechner `A` zu finden:

    # ifconfig wlan0 create wlandev ath0 wlanmode adhoc
    # ifconfig wlan0 up scan
      SSID/MESH ID    BSSID              CHAN RATE   S:N     INT CAPS
      freebsdap       02:11:95:c3:0d:ac    2   54M -64:-96  100 IS   WME

Der Wert `I` (Spalte CAPS) gibt an, dass sich Rechner `A` im Ad-hoc-Modus befindet. Nun müssen Sie nur noch Rechner `B` eine unterschiedliche IP-Adresse zuweisen:

    # ifconfig wlan0 inet 192.168.0.2 netmask 255.255.255.0 ssid freebsdap
    # ifconfig wlan0
      wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
          ether 00:11:95:d5:43:62
          inet 192.168.0.2 netmask 0xffffff00 broadcast 192.168.0.255
          media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <adhoc>
          status: running
          ssid freebsdap channel 2 (2417 Mhz 11g) bssid 02:11:95:c3:0d:ac
          country US ecm authmode OPEN privacy OFF txpower 21.5 scanvalid 60
          protmode CTS wme burst

Damit sind die Rechner `A` und `B` bereit und können untereinander Daten austauschen.

## 32.3.5. FreeBSD Host Access Points

FreeBSD kann als Access Point (AP) agieren. Dies verhindert, dass man sich einen Hardware AP kaufen oder ein ad-hoc Netzwerk laufen lassen muss. Dies kann sinnvoll sein, falls Ihre FreeBSD-Computer als Gateway zu einem anderen Netzwerk (z.B. Internet) fungiert.

### 32.3.5.1. Grundeinstellungen

Bevor Sie ihren FreeBSD-Computer als einen AP konfigurieren, muss der Kernel mit dem für ihre Wireless-Karte entsprechenden Treibern konfiguriert werden. Sie müssen ebenfalls die Sicherheitsprotokolle, die Sie nutzen wollen, dem Kernel hinzufügen. Für weitere Informationen siehe: Abschnitt 32.3.2.

> Anmerkung: Die Verwendung der NDIS und Windows Treiber erlauben zur Zeit keinen AP-Modus. Nur die nativen FreeBSD-Wireless-Treiber unterstüten den AP Modus.

Nachdem die Unterstützung für ihr drahtloses Netzwerk geladen ist, können Sie überprüfen, ob Ihr Wireless-Gerät den hostbasierenden Access-Point Modus (auch bekannt als hostap Modus) unterstützt:

    # ifconfig wlan0 create wlandev ath0
    # ifconfig wlan0 list caps
    drivercaps=6f85edc1<STA,FF,TURBOP,IBSS,HOSTAP,AHDEMO,TXPMGT,SHSLOT,SHPREAMBLE,MONITOR,MBSS,WPA1,WPA2,BURST,WME,WDS,BGSCAN,TXFRAG>
    cryptocaps=1f<WEP,TKIP,AES,AES_CCM,TKIPMIC>

Diese Ausgabe zeigt die Möglichkeiten der Karte. Das Wort `HOSTAP` bestätigt, dass diese Wireless-Karte als Access Point agieren kann. Die verschiedenen unterstützten Algorithmen (z.B. WEP, TKIP, AES usw.) werden ebenfalls angezeigt. Diese Informationen sind wichtig, wenn Sie wissen wollen, welche Sicherheitsprotokolle auf diesem Access Point verwendbar sind.

Das Wireless-Gerät kann nur während der Erzeugung des Pseudo-Geräts in den hostap-Modus gesetzt werden. Zuvor erstellte Pseudo-Geräte müssen also vorher zerstört werden:

    # ifconfig wlan0 destroy

Danach muss das Gerät erneut erstellt werden, bevor die restlichen Netzwerkparameter konfiguriert werden können:

    # ifconfig wlan0 create wlandev ath0 wlanmode hostap
    # ifconfig wlan0 inet 192.168.0.1 netmask 255.255.255.0 ssid freebsdap mode 11g channel 1

Benutzen Sie danach erneut den Befehl `ifconfig`, um den Status der `wlan0`-Schnittstelle abzufragen:

    # ifconfig wlan0
      wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
          ether 00:11:95:c3:0d:ac
          inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
          media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap>
          status: running
          ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac
          country US ecm authmode OPEN privacy OFF txpower 21.5 scanvalid 60
          protmode CTS wme burst dtimperiod 1 -dfs

Die `hostap`-Parameter geben die Schnittstelle an, die im hostbasierenden Access Point Modus läuft.

Die Konfiguration der Schnittstelle kann durch Hinzufügen der folgenden Zeilen in die Datei `/etc/rc.conf` automatisch während des Bootvorganges erfolgen:

    wlans_ath0="wlan0"
    create_args_wlan0="wlanmode hostap"
    ifconfig_wlan0="inet 192.168.0.1 netmask 255.255.255.0 ssid freebsdap mode 11g channel 1"

### 32.3.5.2. Hostbasierender Access Point ohne Authentifizierung oder Verschlüsselung

Obwohl es nicht empfohlen wird, einen AP ohne jegliche Authentifizierung oder Verschlüsselung laufen zu lassen, ist es eine einfache Art zu testen, ob der AP funktioniert. Diese Konfiguration ist auch wichtig für die Fehlersuche bei Client-Problemen.

Nachdem Sie den AP, wie oben beschrieben, konfiguriert haben, ist es möglich von einem anderen drahtlosen Computer eine Suche nach dem AP zu starten:

    # ifconfig wlan0 create wlandev ath0
    # ifconfig wlan0 up scan
    SSID/MESH ID    BSSID              CHAN RATE   S:N     INT CAPS
    freebsdap       00:11:95:c3:0d:ac    1   54M -66:-96  100 ES   WME

Der Client-Rechner fand den Access Point und kann mit ihm verbunden werden:

    # ifconfig wlan0 inet 192.168.0.2 netmask 255.255.255.0 ssid freebsdap
    # ifconfig wlan0
      wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
          ether 00:11:95:d5:43:62
          inet 192.168.0.2 netmask 0xffffff00 broadcast 192.168.0.255
          media: IEEE 802.11 Wireless Ethernet OFDM/54Mbps mode 11g
          status: associated
          ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac
          country US ecm authmode OPEN privacy OFF txpower 21.5 bmiss 7
          scanvalid 60 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi 7
          roam:rate 5 protmode CTS wme burst

### 32.3.5.3. WPA-basierender Host-Access Point

Dieser Abschnitt beschäftigt sich mit dem Konfigurieren eines FreeBSD-Access-Points mit dem WPA-Sicherheitsprotokoll. Weitere Einzelheiten zu WPA und der Konfiguration von Clients mit WPA finden Sie im Abschnitt 32.3.3.1.3.

Der hostapd-Dienst wird genutzt, um die Client-Authentifizierung und das Schlüsselmanagement auf dem Access Point mit aktiviertem WPA zu nutzen.

In den folgenden Abschnitten werden allen Konfigurationen auf dem FreeBSD-Computer ausgeführt, der als AP agiert. Nachdem der AP korrekt arbeitet, sollte hostapd automatisch beim Booten durch folgende Zeile in der `/etc/rc.conf` aktiviert werden:

    hostapd_enable="YES"

Bevor Sie versuchen hostapd zu konfigurieren, stellen Sie sicher, dass die Grundeinstellungen, wie in Abschnitt 32.3.5.1 beschrieben, ausgeführt wurden.

#### 32.3.5.3.1. WPA-PSK

WPA-PSK ist für kleine Netzwerke gedacht, in denen die Verwendung eines Authentifizierungs-Backend-Server nicht möglich oder erwünscht ist.

Die Konfiguration wird in `/etc/hostapd.conf` durchgeführt:

    interface=wlan0
    debug=1
    ctrl_interface=/var/run/hostapd
    ctrl_interface_group=wheel
    ssid=freebsdap
    wpa=1
    wpa_passphrase=freebsdmall
    wpa_key_mgmt=WPA-PSK
    wpa_pairwise=CCMP TKIP

  Dieses Feld zeigt die Wireless-Schnittstelle an, die für den Access Point verwendet wird an.
  Dieses Feld legt den debuglevel von hostapd während der Ausführung fest. Ein Wert von `1` ist der kleinste zulässige Wert.
  Das `ctrl_interface`-Feld gibt den Pfadnamen des Verzeichnisses an, der von hostapd dazu genutzt wird, um die domain socket Dateien zu speichern, die für die Kommunikation mit externen Programmen, wie z.B. hostapd_cli(8), benutzt werden. Hier wurden die Standardwerte benutzt.
  Die Zeile `ctrl_interface_group` legt fest, welche Gruppe (hier ist es die `wheel`-Gruppe) die Erlaubnis hat, die Schnittstellendateien zu kontrollieren.
  Dieses Feld setzt den Netzwerknamen.
  Das `wpa`-Feld aktiviert WPA und gibt an welches WPA-Authentifizierungprotokoll benötigt wird. Ein Wert von `1` konfiguriert den AP mit WPA-PSK.
  Das `wpa_passphrase`-Feld beinhaltet das ASCII-Passwort für die WPA-Authentifikation.

  > Warnung: Verwenden Sie immer sichere Passwörter, die ausreichend lang sind und aus vielen unterschiedlichen Zeichen bestehen, damit sie nicht erraten werden oder umgangen werden können.

  Die `wpa_key_mgmt` Zeile bestimmt das Schlüsselmanagement-Protokoll, das benutzt wird. In unserem Fall ist es WPA-PSK.
  Das `wpa_pairwise` Feld zeigt die zulässigen Verschlüsselungs-Algorithmen des Access Points. Hier werden beide, TKIP (WPA) und CCMP (WPA2), akzeptiert. CCMP-Verschlüsselung ist eine Alternative zu TKIP und sollte wenn möglich eingesetzt werden. TKIP sollte nur da eingesetzt werden, wo kein CCMP möglich ist.

Als nächstes wird der hostapd gestartet:

    # /etc/rc.d/hostapd forcestart

    # ifconfig wlan0
      wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2290
          inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
          inet6 fe80::211:95ff:fec3:dac%ath0 prefixlen 64 scopeid 0x4
          ether 00:11:95:c3:0d:ac
          media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap>
          status: associated
          ssid freebsdap channel 1 bssid 00:11:95:c3:0d:ac
          authmode WPA2/802.11i privacy MIXED deftxkey 2 TKIP 2:128-bit txpowmax 36 protmode CTS dtimperiod 1 bintval 100

Der Access Point läft nun, die Clients können mit ihm verbunden werden. Weitere Informationen finden Sie im Abschnitt 32.3.3.1.3. Es ist möglich zu sehen, welche Stationen mit dem AP verbunden sind. Dazu geben Sie den Befehl `ifconfig `wlan0` list sta` ein.

### 32.3.5.4. WEP hostbasierender Access Point

Es ist nicht empfehlenswert, einen Access Point mit WEP zu konfigurieren, da es keine Authentifikationsmechanismen gibt und WEP leicht zu knacken ist. Einige ältere WLAN-Karten unterstützen nur WEP als Sicherheitsprotokoll. Für solche Karten ist es notwendig den AP ohne Authentifikation, Verschlüsselung oder mit dem WEP-Protokoll zu konfigurieren.

Das Wireless-Gerät kann nun in den hostap-Modus versetzt werden und mit der korrekten SSID und IP-Adresse konfiguriert werden:

    # ifconfig wlan0 create wlandev ath0 wlanmode hostap
    # ifconfig wlan0 inet 192.168.0.1 netmask 255.255.255.0 \
          ssid freebsdap wepmode on weptxkey 3 wepkey 3:0x3456789012 mode 11g

- Der `weptxkey` gibt an, welcher WEP-Schlüssel bei der Übertragung benutzt wird. Hier nutzen wir den 3. Schlüssel (die Nummerierung der Schlüssel beginnt bei `1`). Dieses Parameter muss angegeben sein, damit die Daten wirklich verschlüsselt werden.

- Der `wepkey` gibt den gewählten WEP-Schlüssel an. Er sollte im folgenden Format `index:key` vorliegen. Wenn kein Index vorhanden ist, wird der Schlüssel `1` benutzt. Das bedeutet wir brauchen einen Index, falls wir einen anderen Schlüssel als den ersten nutzen wollen.

Benutzen Sie den Befehl `ifconfig` noch einmal um den Status der `wlan0`-Schnittstelle zu sehen:

    # ifconfig wlan0
      wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
          ether 00:11:95:c3:0d:ac
          inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
          media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap>
          status: running
          ssid freebsdap channel 4 (2427 Mhz 11g) bssid 00:11:95:c3:0d:ac
          country US ecm authmode OPEN privacy ON deftxkey 3 wepkey 3:40-bit
          txpower 21.5 scanvalid 60 protmode CTS wme burst dtimperiod 1 -dfs

Es ist möglich, von einem anderen drahtlosen Computer eine Suche nach dem AP zu starten:

    # ifconfig wlan0 create wlandev ath0
    # ifconfig wlan0 up scan
    SSID            BSSID              CHAN RATE  S:N   INT CAPS
    freebsdap       00:11:95:c3:0d:ac    1   54M 22:1   100 EPS

Der Client-Rechner fand den Access Point und kann mit den korrekten Parametern (Schlüssel usw.) mit ihm verbunden werden. Weitere Informationen gibt es in folgendem Abschnitt 32.3.3.1.4

## 32.3.6. Benutzung von drahtgebundenen und drahtlosen Verbindungen

Eine Verbindung per Kabel bietet eine bessere Leistung und eine höhere Zuverlässigkeit, während die Wireless-Verbindung eine höhere Flexibilität und Mobilität bietet. Benutzer von Laptops wollen normalerweise beides nutzen und zwischen beiden hin und her schalten.

Unter FreeBSD ist es möglich zwei oder mehr Netzwerkschnittstellen in einem “failover”-Mode zu kombinieren, so dass automatisch die beste verfügbare Verbindung aus der Gruppe ausgewählt wird, sobald der Linkstatus wechselt.

Wir behandeln Link-Aggregation und Failover in dem Kapitel Abschnitt 32.6. Dort gibt es auch ein Beispiel (Beispiel 32-3) für die Verwendung von sowohl kabelgebundenen wie auch drahtlosen Verbindungen.

## 32.3.7. Problembehandlung

Die folgenden Auflistung zeigt, wie Sie einige häufig auftretende Probleme bei der Einrichtung Ihres drahtlosen Netzwerks beheben können.

- Wird Ihr Access Point bei der Suche nicht gefunden, sollten Sie überprüfen, ob Sie bei Konfiguration Ihres drahtlosen Geräts die Anzahl der Kanäle beschränkt haben.

- Wenn Sie sich nicht mit Ihrem Access Point verbinden können, sollten Sie überprüfen, ob die Konfiguration Ihrer Station auch der des Access Points entspricht. Achten Sie dabei speziell auf die Authentifzierungsmethode und die Sicherheitsprotokolle. Halten Sie Ihre Konfiguration so einfach wie möglich. Verwenden Sie ein Sicherheitsprotokoll wie WPA oder WEP, sollten Sie testweise Ihren Access Point auf offene Authentifizierung und keine Sicherheit einstellen. Danach versuchen Sie sich erneut mit Ihren Access Point zu verbinden.

- Nachdem Sie sich mit dem Access Point verbinden können, prüfen Sie die Sicherheitseinstellungen, beginnend mit einfachen Werkzeugen wie ping(8).

  Das Programm `wpa_supplicant` kann Ihnen bei der Fehlersuche helfen. Dazu starten Sie es manuell mit der Option `-dd` und durchsuchen anschließend die Protokollinformationen nach eventuellen Fehlermeldungen.

- Zusätzlich gibt es auch zahlreiche Low-Level-Debugging-Werkzeuge. Die Ausgabe von Debugging-Informationen des 802.11 Protocol Support Layers lassen sich mit dem Programm `wlandebug` (das sich unter `/usr/src/tools/tools/net80211` befindet) aktivieren. Um beispielsweise während der Suche nach Access Points und des Aufbaus von 802.11-Verbindungen (Handshake) auftretende Systemmeldungen auf die Konsole auszugeben, verwenden Sie den folgenden Befehl:

      # wlandebug -i ath0 +scan+auth+debug+assoc
        net.wlan.0.debug: 0 => 0xc80000<assoc,auth,scan>

  Der 802.11-Layer liefert umfangreiche Statistiken, die Sie mit dem Werkzeug `wlanstats` abrufen können. Diese Statistiken sollten alle Fehler identifizieren, die im 802.11-Layer auftreten. Beachten Sie aber, dass einige Fehler bereits im darunterliegenden Gerätetreiber auftreten und daher in diesen Statistiken nicht enthalten sind. Wie Sie Probleme des Gerätetreibers identifizieren, entnehmen Sie bitte der Dokumentation Ihres Gerätetreibers.

Können Sie Ihr Problem durch diese Maßnahmen nicht lösen, sollten Sie einen Problembericht (PR) erstellen und die Ausgabe der weiter oben genannten Werkzeuge in den Bericht aufnehmen.

Zurück | Zum Anfang | Weiter
Gateways und Routen | Nach oben | Bluetooth

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>.