Fedora 7

Mit Fedora 7 wurde das ganze deutlich einfacher da sowohl die Firmware als auch der Treiber direkt mitgeliefert werden, damit im Grunde nur mehr wpa_supplicant zu konfigurieren und in ggf. vorhandenen Konfigurationen "eth1" durch "wlan0" zu ersetzen ist.

Der grösste Vorteil ist hierbei dass der Dienst "wpa_supplicant" durch das Wegfallen des Intel-Userspace-Daemons ganz normal beim Systemstart hochfahren kann da das Interface sofort zur Verfügung steht und auch die Abhängigkeit von externen Repos bei Kernel-Updates wegfällt.

BITTE wenn möglich den Accesspoint im Vorfeld auf Channel 1 konfigurieren, es scheint dass "system-config-network" diesen immer in die Konfigurationsdateien schreibt und dies leider auch bei jeder zukünftigten Änderung wieder tut so man die entsprechende Zeile entfernt hat worauf auch die beste WPA-Konfiguration nicht funktioniert.

Benötigte Pakete

  • wpa_supplicant
  • wpa_supplicant-gui (Nicht zwingend, aber nett und hilfreich)
  • iwl3945-firmware

Installation erfolgt in einem Rutsch mit dem Kommando "yum install wpa_supplicant wpa_supplicant-gui iwlwifi-firmware"

Die Einrichtung von wpa_supplicant erfolgt analog zu Fedora Core 6


Fedora Core 5 / Fedora Core 6

Vorwort

Vorweg möchte ich anmerken dass ich die Karte unter FC5 nicht zum Laufen gebracht habe, unter FC6 keine Probleme. Beim start des ipw3945d-Dienstes wurde der Kernel "nervös" und das System unbedienbar (Laufende Tastenanschläge etc.). Dies mag durchaus an einem ominösen ipw3945-Firmware-Paket von freshrpms liegen, welches zu diesem Zeitpunkt ebenfalls installiert war, und wie ich vermute mit dem "ucode"-Paket von atrpms nicht zusammenarbeitet.

Hier sind die Pakete von ATrpms gelistet, wobei die Erfahrung aber gezeigt hat dass diese Repo völlig unbrauchbar ist da der gute Herr auch Kernpakete von Fedora mit eigenen Versionen überschreibt bzw. Multimeidapakete so packt dass sie regelmässig mit anderen aus Livna etc. kollidieren und damit ein Abhängigkeitschaos schafft dass wenig feierlich ist.

Alternative: kwizart (Das Kernel-Modul heisst in diesem Fall "kmod-ipw3945" anstelle von "ipw3945-kmdl"), wobei ich aber nicht garantieren kann dass hier auch für die aktuellsteb Kernel Modlue zur Verfügung stehen

[kwizart]
name=kwizart - Fedora $releasever
baseurl=http://kwizart.free.fr/fedora/$releasever/$basearch/
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=http://kwizart.free.fr/fedora/RPM-GPG-KEY-kwizart

Derzeit ist es hier so dass am AP der SSID-Broadcast aktiv sein muss, obwohl alle Parameter statisch konfiguriert sind. Komischerweise funktioniert ein reconnect im Betrieb auch ohne Broadcast. Mittelfristig wird diesen Punkt ein Errata des HowTos klären.


Paket-Installation

Folgende Pakete sind zu installieren, wobei unter FC5 bei einem SMP-Kernel yum meist die falschen Kernel-Module installiert und man ggf. den vollen Paketnamen bei der Installation angeben muss. Ab FC6 gibt es hier keine Unterscheidung mehr.

Wie oben angeführt ist ATrmps mit Vorsicht zu geniessen, daher sollte man nach der Installation und automatischer Auflösung ggf. zusätzlicher Abhängigekeiten alle dabei installierten Üakete in der entsprechenden Repo-Datei unter "/etc/yum.repos.d" eine Zeile "includepkgs=paket1 paket2 paket3..." am Ende hinzufügen um bei zukünftigen Updates nur diese Pakete von ATrpms zu berücksichtigen.

Wenn noch nicht erfolgt ist für eine Installation mittels yum das Repository von http://www.atrpms.net/ hinzuzufügen und mittels "yum install ipw3945 ipw3945d wpa_supplicant wpa_supplicant-gui" werden dann auch alle Abhängigkeiten korrekt aufgelöst.

ipw3945-ucode
ipw3945d
ipw3945-kmdl
ipw3945
wpa_supplicant
wpa_supplicant-gui

Das GUI-Tool wird mit "wpa_gui" aufgerufen und macht einen ganz guten Eindruck. Da hier aber alle relevanten WLAN-Netze mit gleichen SSID und Passwörtern versehen sind beschränke ich mich auf statische Konfiguration mittels Config-Files.


Konfiguration

  • Es sollte nach der Installation der Pakete erst einmal der Rechner neu gestartet werden.
     
  • Bevor wir jetzt Konfigurations-Dateien ändern bitte erst auf einer root-Shell "/sbin/ipw3945d" testen und wenn das einwandfrei funktioniert den Dienst zukünftig automatisch starten lassen.
     
  • Der Dienst "wpa_supplicant" sollte mittels "system-config-services" deaktiviert werden da er ohnehin nicht startet weil der Aufruf des ipw3945-Services dafür zu spät kommt.
     
  • Wenn der Test geklappt hat können wir nun in der "/etc/rc.local" mit folgenden 3 Zeilen sowohl den "ipw3945d" als auch den "wpa_supplicant" in der richtigen Reihenfolge starten.

    /sbin/ipw3945d --quiet
    sleep 3
    /sbin/service wpa_supplicant start

  • Die Datei "/etc/modprobe.conf" erhält 3 zusätzliche Zeilen, dies entstammt diversen HowTos,wobei sich mir derzeit nicht erschliesst warum damit der Eintrag in der "/etc/rc.local" nicht hinfällig ist.

    alias eth1 ipw3945

    install ipw3945 /sbin/modprobe --ignore-install ipw3945 ; sleep 0.5 ; /sbin/ipw3945d --quiet

    remove ipw3945 /sbin/ipw3945d --kill ; /sbin/modprobe -r --ignore-remove ipw3945

    Karte mittels "system-config-network" einrichten

    • Neu
       
    • Wireless-Verbindung wähl

       

      en » Vor
       
    • Intel Corporation

      PRO/Wireless 3945ABG

      Network Connection wählen » Vor
       
    • Modus: Verwaltet
       
    • Netzwerkname: Angegeben + Eingabe der SSID
       
    • Als Schlüssel habe ich hier das WPA-Passwort eingegeben, wobei das hier noch keine Rolle spielt aber ggf. wenn man die Verbindung erst einmal ohne Verschlüsselung testen will zumindest nicht schadet.
       
    • Im nächsten Dialog die Netzwerkeinstellungen vornehmen, statische Konfiguration ist hier DHCP vorzuziehen um eine zusätzliche Fehlerquelle auszuschliessen.
       
    • Desweiteren habe ich hier die Ethernetkarte komplett deaktiviert und aus dem Profil per Checkbox ausgenommen, da nach der WPA-Konfiguration zwar die Funkverbindung offenbar OK war, die WLAN-IP aus dem Netzwerk angesprochen werden konnte aber nach Abziehen des Netzwerkkabels trotzdem keine Pings mehr funktioniert haben. Mal sehen ob sich das im Laufe der Zeit klären lässt bzw. es sogar soweit justierbar ist dass man zwischen WLAN und Ethernet im Betrieb wechseln kann.
       

    wpa_supplicant einrichten

    • Der grösste Stolperstein hier war die falsche Annahme das am AP vergebene Passwort direkt in die Konfiguration einzutragen, hierfür existiert das Tool "wpa_passphrase" dessen Ausgabe direkt in das File umzuleiten ist. (Copy/Paste aus der Shell hatte nicht nachvollziehbare Fehler bei der Passphrase -Länge)
       
    • wpa_passphrase [ssid] [passwort] >> /etc/wpa_supplicant/wpa_supplicant.conf

      Die Datei "/etc/wpa_supplicant/wpa_supplicant.conf" sollte danach in etwa so aussehen:

      ctrl_interface=/var/run/wpa_supplicant
      ctrl_interface_group=wheel

      network={
      ssid="lounge-warrior"
      proto=WPA key_mgmt=WPA-PSK pairwise=CCMP TKIP #psk="eingegebenes ap-passwort"
      psk=generierte passphrase
      }

    • In der Datei "/etc/sudoers" sind laut diversen anderen, leider meist unvollständigen HowTos folgende Zeilen zu aktivieren. Meiner Interpretation nach damit Änderungen an der WLAN-Konfiguration über GUIs auch als User erfolgen kann (Man möge aber Vorsichtig sein welche ggf. vorhandenen User der Gruppe "wheel" angehören).

      %wheel ALL=(ALL) ALL
      %wheel ALL=(ALL) NOPASSWD: ALL

    • "/etc/sysconfig/wpa_supplicant"

      INTERFACES="-ieth1"
      DRIVERS="-Dwext"

wpa_supplicant für mehrere Netzwerke Konfigurieren

Es lassen sich problemlos mehrere Netzwerke in der "wpa_supplicant.conf" eintragen, jedes davon erhält einen eigenen network-Block wobei man hier noch zusätzlich den Parameter "priority=[wert]" angeben kann um ggf. je nach Verfügbarkeit eine bestimmte Reihenfolge festzulegen.

WPA2

Neben dem obigen Beispiel für WPA unterstützt wpa_supplicant auch WPA2 bzw. funktioniert es in der Regel auch die Angaben "proto", "key_mgmt" und "pairwise" wegzulassen worauf sich wpa_supplicant die verwendete Methode mit dem Accesspoint ausmacht, im Zwiefelsfall aber besser angeben.

proto=WPA2
key_mgmt=WPA2-PSK
pairwise=CCMP TKIP


Offene Punkte

  • Warum muss SSID-Broadcast aktiviert sein?
    Theoretisch sollte "scan_ssid=1", im network-Block reichen, sonderlich stabil funktionierte das bei mir bis jetzt nicht.
  • Warum legt "system-config-network" immer ungefragt Channel 1 fest?

Weitere Beispiele wpa_supplicant.conf

Quelle: http://www.gentoo.org/doc/de/handbook/handbook-x86.xml?part=4&chap=4

Einfacher Fall: WPA-PSK, wobei PSK eine ASCII Passphrase ist, erlauben aller gülten Chiffre

network={
ssid="einfach"
psk="sehr geheime Passphrase"
# Je höher die Priorität, desto schneller werden wir verknüpft
priority=5
}

Dasselbe wie zuvor, jedoch mit SSID-spezifischem scannen (für APs, die SSID Broadcast ablehnen)

network={ ssid="zweite ssid"
scan_ssid=1
psk="sehr geheime Passphrase"
priority=2
}

Nur WPA-PSK wird verwendet. Jede gültige Chiffre-Kombination wird akzeptiert

network={ ssid="Beispiel"
proto=WPA
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP WEP104 WEP40
psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb
priority=2 }

Klartext Verbindung (kein WPA, kein IEEE 802.1X)

network={
ssid="klartext-test"
key_mgmt=NONE
}

Verbindung mit gemeinsamen WEP Schlüssel (kein WPA, kein IEEE 802.1X)

network={
ssid="statischer-wep-test"
key_mgmt=NONE
wep_key0="abcde"
wep_key1=0102030405
wep_key2="1234567890123"
wep_tx_keyidx=0
priority=5
}

Verbindung mit gemeinsamen WEP Schlüssel (kein WPA, kein IEEE 802.1X) mit Shared Key IEEE 802.11 Authentifizierung

network={
ssid="statischer-wep-test2"
key_mgmt=NONE
wep_key0="abcde"
wep_key1=0102030405
wep_key2="1234567890123"
wep_tx_keyidx=0
priority=5
auth_alg=SHARED
}

IBSS/ad-hoc Netzwerk mit WPA-None/TKIP

network={
ssid="test adhoc"
mode=1
proto=WPA
key_mgmt=WPA-NONE
pairwise=NONE
group=TKIP
psk="geheime Passphrase"
}