LINUX.ORG.RU
ФорумAdmin

Настройка NetworkManager и определение статуса сети

 , ,


0

1

У меня возникла такая проблема, что USB Wi-Fi адаптер странно себя ведет: то-есть сеть поднимается не всегда. Также возникает проблема, что если сеть подключена и в этот момент отключить адаптер, то заново сеть скорее всего не поднимется. Я пробовал по разному и вручную через wpa_supplicant и через NetworkManager; итог один - сеть то, поднимается то нет. При этом в NetworkManagere висит статус «подключение (получение конфигурации IP)», а в лог сыплются ошибки:

wpa_supplicant[1245]: wlan0: WPA: EAPOL-Key Replay Counter did not increase - dropping packet

Я долго пробовал разные варианты и нашел приемлемое решение, что делать если подключение не устанавливается:

1. Остановить NetworkManager

2. убить процесс wpa_supplicant

3. перезагрузить модули ядра cfg80211 и rndis_wlan

4. заново запустить NetworkManager

И у меня возник вопрос, можно-ли это как-то автоматизировать, то есть определить при загрузке, или при подключении адаптера, что процесс подключения к сети завис и выполнить эти команды? А может можно решить эту проблему как-то по другому?.. (Debian 8)


Решение в лоб

Например, как-то так:

#!/bin/bash

MARKER="WPA: EAPOL-Key Replay Counter did not increase - dropping packet"

while :; do
    journalctl -f -n0 wpa_supplicant | grep -q "$MARKER"
    systemctl stop NetworkManager wpa_supplicant
    modprobe -r -a rndis_wlan cfg80211
    modprobe -a rndis_wlan
    systemctl start NetworkManager
done

Засовываешь скрипт куда-нибудь, ну и пишешь юнит с Type=simple для него.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: Решение в лоб от intelfx

Ой, я ошибся, а время на редактирование истекло. Там должно быть journalctl -f -n0 -u wpa_supplicant.

intelfx ★★★★★ ()
Ответ на: Решение в лоб от intelfx

Спасибо за идею, интересное решение. Честно говоря, я не очень понял скрипт, скорее это должно выглядеть как-то так?:

journalctl -f -n0 | ( while :; do grep -m1 -q "$MARKER"; здесь_все_делаем; done; )

И еще вопрос, а можно сделать так, чтобы эти модули ядра не загружались при загрузке системы даже если вставлен wi-fi адаптер, а чтобы они загружались в какой-то другой момент?

iving ()
Ответ на: комментарий от iving

У тебя в лог прилетит пачка этих ошибок и в итоге твой скрипт рестартнёт NM двадцать раз подряд. Идея в том, чтобы после рестарта сети отбросить все логи с момента первой ошибки до момента окончания рестарта.

Чтобы модули не загружались автоматически — допиши в /etc/modprobe.d/чтоугодно.conf строчки вида blacklist имямодуля.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.