Lange Zeit schien das WLAN hier hervorragend zu funktionieren. Im Netz waren nur ein paar Smartphones und Tablets eingebucht. Kurze Verbindungsabbrüche fallen bei diesen Geräten wenig auf, da sie es schon vom Mobilfunknetz aus verstehen, mit kurzen Unterbrechungen klar zu kommen. Ganz anders sieht das mit Geräten aus, die eine konstante Kommunikation benötigen, wie z.B. Drucker oder Scanner.
Hier steht ein HP DeskJet 3520, welcher drucken und scannen kann. Verbindungssabbrüche führen dann zum Ausdruck halber Seiten. Glücklicherweise ist CUPS (der Linux-Druckerspooler) großzügig, wenn ein Auftrag mal nicht komplett ausgeführt wird. Anders verhält es sich mit Scanprogrammen, die sich bei ausbleibender Kommunikation einfach aufhängen.
In der hier eingesetzten ALIX-2D13-Box mit NanoBSD-Image ist eine TP-LINK TL-WN861N WLAN N Mini-PCI-Adapter mit Atheros-Chipsatz verbaut. Und genau dieser konnte als Problem ausgemacht werden.
Heutzutage wird zur WLAN-Verschlüsselung WPA2 vorzugsweise das Verschlüsselungsprotokoll AES verwendet, welches auch die von pfSense empfohlene Einstellung für das WLAN ist. Es stellte sich heraus, dass entweder die Implementierung von AES in pfSense oder dem Atheros-Treiber sich nicht mit dem verträgt, was der HP-Drucker so erwartet oder auch dessen Implementierung fehlerhaft ist. Immer nach einem Rekeying ging die Verbindung kurz verloren. Im WLAN-Protokoll von pfSense sieht das dann so aus:
ath0_wlan0: WPA rekeying GTK ath0_wlan0: STA xx:xx:xx:xx:xx:xx WPA: sending 1/2 msg of Group Key Handshake ath0_wlan0: STA xx:xx:xx:xx:xx:xx WPA: EAPOL-Key timeout ath0_wlan0: STA xx:xx:xx:xx:xx:xx WPA: sending 1/2 msg of Group Key Handshake ath0_wlan0: STA xx:xx:xx:xx:xx:xx WPA: EAPOL-Key timeout ath0_wlan0: STA xx:xx:xx:xx:xx:xx WPA: sending 1/2 msg of Group Key Handshake ath0_wlan0: STA xx:xx:xx:xx:xx:xx WPA: EAPOL-Key timeout ath0_wlan0: STA xx:xx:xx:xx:xx:xx WPA: sending 1/2 msg of Group Key Handshake ath0_wlan0: STA xx:xx:xx:xx:xx:xx WPA: EAPOL-Key timeout ath0_wlan0: STA xx:xx:xx:xx:xx:xx WPA: WPA_PTK: sm->Disconnect ath0_wlan0: STA xx:xx:xx:xx:xx:xx WPA: event 3 notification ath0_wlan0: STA xx:xx:xx:xx:xx:xx IEEE 802.1X: unauthorizing port ath0_wlan0: STA xx:xx:xx:xx:xx:xx MLME: MLME-DEAUTHENTICATE.indication(xx:xx:xx:xx:xx:xx, 2) ath0_wlan0: STA xx:xx:xx:xx:xx:xx MLME: MLME-DELETEKEYS.request(xx:xx:xx:xx:xx:xx) ath0_wlan0: STA xx:xx:xx:xx:xx:xx IEEE 802.11: disassociated ath0_wlan0: STA xx:xx:xx:xx:xx:xx WPA: event 2 notification ath0_wlan0: STA xx:xx:xx:xx:xx:xx IEEE 802.1X: unauthorizing port
Ergebnis waren dann die oben schon erwähnten halb ausgedruckte Seiten oder hängengebliebene Scanprogramme.
Abhilfe brachte die Umstellung auf TKIP. Die ebenfalls mit pfSense mögliche Einstellung "Both" führte nicht zum Erfolg, da beide Geräte zuerst AES aushandeln, sich anschließend aber wieder nicht verstehen. Ein korrektes WLAN-Rekeying sieht nach der Umstellung auf TKIP dann wie folgt aus:
ath0_wlan0: WPA rekeying GTK ath0_wlan0: STA xx:xx:xx:xx:xx:xx WPA: sending 1/2 msg of Group Key Handshake ath0_wlan0: STA xx:xx:xx:xx:xx:xx WPA: received EAPOL-Key frame (2/2 Group) ath0_wlan0: STA xx:xx:xx:xx:xx:xx WPA: group key handshake completed (RSN)
Verbindungsabbrüche gehörten ab nun der Vergangenheit an. Eventuell muss ich nun meine Amazon-Bewertung des HP-Druckers überarbeiten ;)