Erro de WiFi wpa_supplicant

14

Eu tenho um problema com o wpa_supplicantprograma.

Meu problema é sobre o uso de wpa_cliquais necessidades wpa_supplicant. Erro ao executar sudo wpa_cli:

Could not connect to wpa_supplicant

O início manual de wpa_supplicantme dá alguns erros:

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

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

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

Config 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

Resultados de 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

Como posso iniciar wpa_supplicantsem erros e me wpa_cliconectar?

Val
fonte

Respostas:

8

Os erros wpa_supplicantproduzidos não estão necessariamente relacionados ao seu wpa_cliproblema de conexão. O problema aqui é que wpa_clinão é possível estabelecer conexão com wpa_supplicant- não é possível abrir o soquete de controle. Isso pode ter várias causas:

  1. O usuário em execução wpa_clinão pode acessar o soquete fornecido, por exemplo wpa_supplicant.conf:

    ctrl_interface=DIR=/var/run/wpa_supplicant
    

    Você precisa verificar se os arquivos nesse diretório estão acessíveis ao usuário sob o qual wpa_clié executado. Isso significa que não são apenas os soquetes rw- todos os diretórios acima devem ter pelo menos x, o último provavelmente também, rpara que wpa_cliepossa listar todos os soquetes disponíveis.

  2. Ao contrário wpa_supplicant, o wpa_cliDBus não é capaz. Verifique se wpa_supplicantnão está ouvindo apenas via DBus. A julgar pelos arquivos de configuração, esse provavelmente não é o seu caso.

  3. wpa_supplicantnão está em execução (conforme comentários abaixo). Isso indicaria que de fato pode haver uma conexão entre as mensagens de erro emitidas wpa_supplicante a impossibilidade de conectar-se a ela. Para ter certeza de executá-lo no modo detalhado ( -dou mesmo -dd) e não daemonizing (que é o padrão - apenas verifique se você não está usando a -Bopção). Você também pode tomar cuidado com o soquete de controle, por exemplo:

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

    Lembre-se de que a maioria desses comandos precisa ser executada com privilégios de root; portanto, para a depuração, pode ser mais fácil su - rootpermanecer permanentemente, em vez de prefixar cada comando sudo.

peterph
fonte
Obrigado pela sua resposta. Sobre o seu primeiro ponto, devo lhe dizer que o arquivo /var/run/wpa_supplicantnão existe. Você acha que esse é o problema?
Val
1
É criado wpa_supplicantquando necessário. Se não existir enquanto estiver em execução, a opção 2 subitamente se tornará mais provável. :)
peterph
Ok, mas eu realmente não sei como aplicar sua opção 2. Você está falando sobre um "aplicativo principal", mas estou apenas usando os comandos sobre os quais falei wpa_clie wpa_supplicantnão sei como evitar somente dbus .. Eu tive que lhe dizer que também rfkill listestá me dando erros (se estiver relacionado) "Não é possível abrir o dispositivo RFKILL: esse arquivo ou diretório não existe" .. Estou realmente perdido
Val
1
applicatin principal = wpa_supplicant- Eu consertei, era um pouco enganador mesmo. Soquete: verifique lsof | grep wpa_supplicant(quando você o estiver executando) - deve mostrar o soquete aberto. Quanto a rfkill- é /dev/rfkillacessível para o usuário em execução rfkill?
Peterph
Eu tentei o lsof | grep wpa_supplicantcomando, mas ele não retorna um resultado. Aliás, acho que meu problema é que wpa_supplicantnão está iniciando .. Tentei um ps -e | grep wpae também está vazio. Sobre rfkill, /dev/rfkillnão existe para mim ..
Val
5

Finalmente, os erros escritos não afetaram o sistema.

Meu /etc/network/interfacesarquivo se parece (apenas parte 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

Com esta configuração, eu posso usar o sudo wpa_clicomando sem erros!
Graças a Peter de qualquer maneira :)!

Val
fonte
Eu estava procurando isso por horas. A última linha resolveu meu problema. Obrigado.
mehrmoudi