Błąd WiFi wpa_supplicant

14

Mam problem z wpa_supplicantprogramem.

Mój problem dotyczy wykorzystania wpa_clipotrzeb wpa_supplicant. Błąd podczas wykonywania sudo wpa_cli:

Could not connect to wpa_supplicant

Ręczne uruchomienie wpa_supplicantdaje mi kilka błędów:

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!!!

Skonfiguruj 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;
}

Skonfiguruj 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"
# }

Skonfiguruj 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

Wyniki 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

Jak mogę rozpocząć wpa_supplicantbez błędów i mieć wpa_clipołączenie?

Val
źródło

Odpowiedzi:

8

Błędy wpa_supplicantprodukuje nie są koniecznie związane z Twoim wpa_cliproblemem połączenia. Problem polega na tym, że wpa_clinie można nawiązać połączenia z wpa_supplicant- nie można otworzyć gniazda sterującego. Może to mieć kilka przyczyn:

  1. uruchomiony użytkownik wpa_clinie może uzyskać dostępu do gniazda podanego np. w wpa_supplicant.conf:

    ctrl_interface=DIR=/var/run/wpa_supplicant
    

    Musisz sprawdzić, czy pliki w tym katalogu są dostępne dla użytkownika, w ramach którego wpa_clidziała. Oznacza to, że nie tylko gniazda są rw- wszystkie powyższe katalogi muszą być przynajmniej xostatnim, prawdopodobnie także ostatnim r, aby wpa_cliemógł wyświetlić listę wszystkich dostępnych gniazd.

  2. W przeciwieństwie do wpa_supplicant, wpa_clinie obsługuje DBus. Upewnij się, że wpa_supplicantnie słuchasz tylko przez DBus. Sądząc po plikach konfiguracyjnych, prawdopodobnie nie jest to twój przypadek.

  3. wpa_supplicantnie działa (jak na komentarze poniżej). Oznaczałoby to, że rzeczywiście może istnieć połączenie między komunikatami o błędach emitowanymi przez wpa_supplicanti niemożnością połączenia się z nim. Aby upewnić się, że uruchom go w trybie pełnym ( -dlub nawet -dd) i nie demonizuj (co jest ustawieniem domyślnym - upewnij się, że nie korzystasz z tej -Bopcji). Możesz także uważać na gniazdo kontrolne, np .:

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

    Pamiętaj, że większość z tych poleceń musi być uruchamiana z uprawnieniami roota, więc w celu debugowania łatwiejsze może być po prostu su - rootpermanentne niż poprzedzanie każdego polecenia sudo.

Peter
źródło
Dziękuję za odpowiedź. Co do twojego pierwszego punktu, muszę ci powiedzieć, że plik /var/run/wpa_supplicantnie istnieje .. Czy uważasz, że to jest problem?
Val
1
Jest tworzony przez, wpa_supplicantgdy jest to potrzebne. Jeśli nie istnieje podczas działania, wówczas opcja 2 nagle staje się bardziej prawdopodobna. :)
peterph
Okej, ale tak naprawdę nie wiem, jak zastosować twoją opcję 2. Ty zastanawiasz się nad „główną aplikacją”, ale używam tylko poleceń, o których mówiłem wpa_clii wpa_supplicantnie wiem, jak tego uniknąć tylko dbus .. Musiałem powiedzieć, że również rfkill listdaje mi błędy (jeśli są powiązane) „Nie można otworzyć urządzenia RFKILL: Brak takiego pliku lub katalogu” .. Naprawdę się zgubiłem
Val
1
main applicationatin = wpa_supplicant- Naprawiłem to, to było trochę mylące. Socket: check lsof | grep wpa_supplicant(gdy masz uruchomiony) - powinien pokazywać otwarte gniazdo. Co do rfkill- czy jest /dev/rfkilldostępny dla uruchomionego użytkownika rfkill?
peterph
Próbowałem lsof | grep wpa_supplicantpolecenia, ale nie zwraca ono wyniku. Btw, myślę, że mój problem polega na tym, że wpa_supplicantsię nie uruchamia. Próbowałem ps -e | grep wpai też jest pusty. O rfkill, /dev/rfkillnie istnieje dla mnie ..
Val
5

Wreszcie błędy pisane nie wpłynęły na system.

Mój /etc/network/interfacesplik wygląda (tylko część 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

Dzięki tej konfiguracji mogę używać sudo wpa_clipolecenia bez błędu! W każdym razie
dzięki Peterowi :)!

Val
źródło
Szukałem tego przez wiele godzin. Ostatnia linia naprawiła mój problem. Dzięki.
mehrmoudi