вторник, 3 мая 2022 г.

 wpa_supplicant 2.10 + WPA TKIP + gentoo + reject

Обновил одну из систем линуксовых, наткнулся на занятное: пропал wi-fi.

Доступ был организован при помощи старого усб-свистка DLink DWA-140. Драйвера по прежнему подгружались, интерфейс wlan0 отображался в ифконфиге, iw dev wlan0 scan отрабатывал. Но подключение к роутеру не работало, счетчики пакетов интерфейса не менялись, никакой настройки типа назначения адреса и тп не выполнялось.

Как выяснилось запуском wpa_supplicant с отладкой -d, не проходила авторизация, ибо проваливалось согласование протоколов. 

Выглядит это примерно так:

~#  wpa_supplicant  -d  -iwlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf 

 

 ...
wlan0: Selecting BSS from priority group 0
...
wpa_parse_wpa_ie_rsn: invalid group cipher 0x8 (000fac02)
wpa_parse_wpa_ie_rsn: invalid group cipher 0x8 (000fac02)
wlan0:    skip RSN IE - parse failed
wlan0:    skip WPA IE - GTK cipher mismatch

wlan0:    reject due to mismatch with WPA/WPA2
wlan0: 1: 62:ce:86:a0:61:f9 ssid='' wpa_ie_len=26 rsn_ie_len=24 caps=0x1031 level=-41 freq=5180
wlan0:    skip - SSID not known
 
 рецепт в случае генты прост: активация флага  tkip для пакета wpa_supplicant, ну и пересборкой оного пакета. Добавляем флаг:
~# cat /etc/portage/package.use/wpa_supplicant 

 net-wireless/wpa_supplicant tkip

 
И пересобираем пакет:
~# emerge wpa_supplicant

Флаг tkip меняет ключи сборки, на других дистрибутивах надо будет глянуть ./configure --help на что-то вроде --enable-tkip.
Данная проблема воспроизвелась и на ноутбуке, при подключении к той же точке доступа. Дело в поддержке устаревших методов шифрования:
https://wiki.gentoo.org/wiki/Wpa_supplicant