Ошибка WiFi wpa_supplicant

14

У меня проблема с wpa_supplicantпрограммой.

Моя проблема заключается в использовании, wpa_cliкоторое необходимо wpa_supplicant. Ошибка при выполнении sudo wpa_cli:

Could not connect to wpa_supplicant

Ручной запуск wpa_supplicantдает мне несколько ошибок:

sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf

rfkill: Cannot open RFKILL control device
ioctl[SIOCSIWAP]: Operation not permitted
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument
wlan0: CTRL-EVENT-DISCONNECTED bssid=00:00:00:00:00:00 reason=0   ### NEW!!!

Конфиг dhcp

## /etc/dhcp/dhcpd.conf
subnet 192.168.2.0 netmask 255.255.255.0 {
   range 192.168.2.2 192.168.2.9;
   option domain-name-servers 192.168.1.1;
   option domain-name "home";
   option routers 192.168.2.1;
}

Конфиг wpa_supplicant

## /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
# network={
#   ssid="__SSID__"
#   key_mgmt=WPA-PSK
#   psk="__PASS__"
#   id_str="home"
# }

Конфиг hostapd

## /etc/hostapd/hostapd.conf
interface=wlan0
driver=rtl871xdrv
ieee80211n=1
ssid=__SSID__
hw_mode=g
channel=1
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=__PASS__
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

# EDIT
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0

Результаты ifconfig/iwconfig

wlan0   Link encap:Ethernet  HWaddr c0:4a:00:17:40:fd
          inet adr:192.168.2.1  Bcast:192.168.2.255  Masque:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:14 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

wlan0     IEEE 802.11bgn  ESSID:"__SSID__"  Nickname:"<WIFI@REALTEK>"
          Mode:Master  Frequency:2.412 GHz  Access Point: C0:4A:00:17:40:FD
          Sensitivity:0/0
          Retry:off   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality=100/100  Signal level=0 dBm  Noise level=0 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Как я могу начать wpa_supplicantбез ошибок и wpa_cliподключиться?

Val
источник

Ответы:

8

Возникающие ошибки wpa_supplicantне обязательно связаны с вашей wpa_cliпроблемой подключения. Проблема в том, что wpa_cliневозможно установить соединение с wpa_supplicant- невозможно открыть гнездо управления. Это может иметь несколько причин:

  1. Пользователь, выполняющий программу wpa_cli, не может получить доступ к сокету, указанному, например, в wpa_supplicant.conf:

    ctrl_interface=DIR=/var/run/wpa_supplicant
    

    Вы должны проверить, что файлы в этом каталоге доступны для пользователя, под которым wpa_cliвыполняется. Это означает, что не только сокеты rw- все вышеперечисленные каталоги должны быть как минимум x, последний, вероятно, также, rчтобы wpa_clieможно было перечислить все доступные сокеты.

  2. В отличие от wpa_supplicant, wpa_cliне может DBus. Убедитесь, что wpa_supplicantне слушаете только через DBus. Судя по вашим файлам конфигурации, это, вероятно, не ваш случай.

  3. wpa_supplicantне работает (согласно комментариям ниже). Это указывало бы на то, что действительно может быть связь между сообщениями об ошибках, генерируемыми wpa_supplicantи не способными соединиться с ним. Чтобы убедиться, что он запущен в подробном режиме ( -dили даже -dd) и не демонизируется (по умолчанию - просто убедитесь, что вы не используете эту -Bопцию). Вы также можете следить за разъемом управления, например:

    watch -n 0.1 "ls -al /var/run/wpa_supplicant"
    

    Помните, что большинство этих команд необходимо запускать с правами суперпользователя, поэтому для отладки может быть проще просто su - rootнавсегда, чем добавлять к каждой команде префикс sudo.

peterph
источник
Спасибо за Ваш ответ. Что касается вашего первого пункта, я должен сказать вам, что файл /var/run/wpa_supplicantне существует .. Как вы думаете, это проблема?
Val
1
Он создается wpa_supplicantпри необходимости. Если он не существует во время работы, вариант 2 внезапно становится более вероятным. :)
Петер
Хорошо, но я действительно не знаю, как применить ваш вариант 2. Вы говорите о «основном приложении», но я просто использую команды, о которых я говорил, wpa_cliи wpa_supplicant, и я не знаю, как избежать только dbus .. Я должен был сказать вам, что rfkill listэто тоже дает мне ошибки (если они связаны) "Не могу открыть устройство RFKILL: нет такого файла или каталога" .. Я действительно потерян
Val
1
Основное применение = wpa_supplicant- Я исправил это, это действительно немного вводило в заблуждение. Сокет: проверьте lsof | grep wpa_supplicant(когда он запущен) - он должен показать вам открытый сокет. Что касается rfkill- /dev/rfkillдоступно ли пользователю запущено rfkill?
Петер
Я попробовал lsof | grep wpa_supplicantкоманду, но она не возвращает результат. Кстати, я думаю, что моя проблема в том, что wpa_supplicantне запускается .. Я попробовал, ps -e | grep wpaи он тоже пуст. О rfkill, /dev/rfkillне существует для меня ..
Val
5

Наконец, письменные ошибки не повлияли на систему.

Мой /etc/network/interfacesфайл выглядит так (только часть WLAN):

iface wlan0 inet static
    address 192.168.2.1
    netmask 255.255.255.0
    pre-up wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B

С этим конфигом я могу использовать sudo wpa_cliкоманду без ошибок! Все равно
спасибо Петерфу :)!

Val
источник
Я искал это часами. Последняя строка исправила мою проблему. Благодарю.
mehrmoudi