hostapd não será iniciado via "serviço" - mas será iniciado diretamente

16

Estou tendo problemas para obter o hostapd como um serviço. Ele falha quando tento iniciá-lo:

$ sudo service hostapd start
[FAIL] Starting advanced IEEE 802.11 management: hostapd failed!

Pelo que entendi, isso usa a configuração em /etc/default/hostapd :

$ cat /etc/default/hostapd 
# Defaults for hostapd initscript
#
# See /usr/share/doc/hostapd/README.Debian for information about alternative
# methods of managing hostapd.
#
# Uncomment and set DAEMON_CONF to the absolute path of a hostapd configuration
# file and hostapd will be started during system boot. An example configuration
# file can be found at /usr/share/doc/hostapd/examples/hostapd.conf.gz
#
#DAEMON_CONF=""
DAEMON_CONF=”/etc/hostapd/hostapd.conf”

# Additional daemon options to be appended to hostapd command:-
#   -d   show more debug messages (-dd for even more)
#   -K   include key data in debug messages
#   -t   include timestamps in some debug messages
#
# Note that -B (daemon mode) and -P (pidfile) options are automatically
# configured by the init.d script and must not be added to DAEMON_OPTS.
#
DAEMON_OPTS="-d"

Meu arquivo de configuração do daemon é o seguinte:

$ cat /etc/hostapd/hostapd.conf
interface=wlan0
bridge=br0
driver=rtl871xdrv
country_code=USA
ctrl_interface=wlan0
ctrl_interface_group=0
ssid=KITT
hw_mode=g
channel=1
wpa=3
wpa_passphrase=georgeisyourfriend
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
beacon_int=100
auth_algs=3
macaddr_acl=0
wmm_enabled=1
eap_reauth_period=360000000

Apesar do serviço não iniciar, posso iniciá-lo diretamente sem erros:

$ sudo hostapd -d /etc/hostapd/hostapd.conf
random: Trying to read entropy from /dev/random
Configuration file: /etc/hostapd/hostapd.conf
ctrl_interface_group=0
drv->ifindex=3
Configure bridge br0 for EAPOL traffic.
BSS count 1, BSSID mask 00:00:00:00:00:00 (0 bits)
Completing interface initialization
Mode: IEEE 802.11g  Channel: 1  Frequency: 2412 MHz
RATE[0] rate=10 flags=0x1
RATE[1] rate=20 flags=0x1
RATE[2] rate=55 flags=0x1
RATE[3] rate=110 flags=0x1
RATE[4] rate=60 flags=0x0
RATE[5] rate=90 flags=0x0
RATE[6] rate=120 flags=0x0
RATE[7] rate=180 flags=0x0
RATE[8] rate=240 flags=0x0
RATE[9] rate=360 flags=0x0
RATE[10] rate=480 flags=0x0
RATE[11] rate=540 flags=0x0
Flushing old station entries
Deauthenticate all stations
+rtl871x_sta_deauth_ops, ff:ff:ff:ff:ff:ff is deauth, reason=2
rtl871x_set_key_ops
rtl871x_set_key_ops
rtl871x_set_key_ops
rtl871x_set_key_ops
Using interface wlan0 with hwaddr 80:1f:02:d3:cb:b8 and ssid 'KITT'
Deriving WPA PSK based on passphrase
SSID - hexdump_ascii(len=4):
     4b 49 54 54                                       KITT
PSK (ASCII passphrase) - hexdump_ascii(len=18): [REMOVED]
PSK (from passphrase) - hexdump(len=32): [REMOVED]
rtl871x_set_wps_assoc_resp_ie
rtl871x_set_wps_beacon_ie
rtl871x_set_wps_probe_resp_ie
urandom: Got 20/20 bytes from /dev/urandom
GMK - hexdump(len=32): [REMOVED]
Key Counter - hexdump(len=32): [REMOVED]
WPA: group state machine entering state GTK_INIT (VLAN-ID 0)
GTK - hexdump(len=32): [REMOVED]
WPA: group state machine entering state SETKEYSDONE (VLAN-ID 0)
rtl871x_set_key_ops
rtl871x_set_beacon_ops
rtl871x_set_hidden_ssid ignore_broadcast_ssid:0, KITT,4
rtl871x_set_acl
wlan0: Setup of interface done.
    
por gnychis 11.03.2014 / 22:36

8 respostas

11

você precisa configurar:

sudo nano /etc/default/hostapd

DAEMON_CONF="/etc/hostapd/hostapd.conf"

Encontre a linha acima e diga a configuração defaul onde está a sua.

    
por 20.07.2014 / 00:07
10

Tudo o que você precisa fazer é escrever este comando:

sudo hostapd -d /etc/hostapd/hostapd.conf

listará todos os erros, você poderá corrigi-los em hostapd.conf file

sudo nano /etc/hostapd/hostapd.conf
    
por 07.04.2014 / 13:12
10

Este foi um problema para mim também e, obviamente, ainda existe. Corrigi os erros removendo o hostapd de /etc/rc2.d / e /etc/networking/if-pre-up.d /

/ etc / network / interfaces controla o hostapd agora.

iface wlan0 inet static
         post-up /usr/sbin/hostapd -B /etc/hostapd/hostapd.conf
         post-up service isc-dhcp-server restart
         address 192.168.10.1
         netmask 255.255.255.0

Uma reinicialização confirmou a interface; e estações conectam bem. Anteriormente eu tive que ssh e parar isc e hostapd e fazer o que o post-up faz agora (nessa ordem)

    
por 27.07.2015 / 22:52
3

Acabei de me deparar com este problema. Por padrão, instalar no meu raspian wheezy, hostapd é iniciado como S01 em serviços. Isso faz com que seja iniciado antes de ifplugd , que configura eth0 e wlan0. A razão para isso é que S01h[ostapd] < S01i[fplugd] , pois os scripts são classificados em ordem alfabética para execução.

Eu acho que a ponte fica difícil de configurar antes de todo o resto. Movê-lo para S05 também não ajudou, então mudei para rc.local, que é executado "um tempo" depois de todo o resto. Também removi todos os links do rc [2-5] .d para hostapd . Eu acho que o S05 ainda é muito cedo para o dhclient terminar corretamente. Não tenho certeza se isso está de acordo com as melhores práticas. O que parece acontecer agora é que ifplugd falha em trazer br0 para cima, mas eth0 é mais cooperativo. Não tenho certeza porque wpa_supplicant falha aqui, provavelmente porque wlan0 já está prometido para br0 . Precisa ser desativado de qualquer maneira. Mais tarde, o hostapd tenta trazer br0 novamente e é bem-sucedido, pois eth0 está ok e ninguém assumiu o controle de wlan0 .

Há outra configuração possível na qual você pode especificar uma opção post-up / pre-down para br0 in /etc/network/interfaces (interfaces man). Você poderia iniciar / parar hostapd de lá. Eu não consegui fazê-lo funcionar no entanto, mas isso parece uma solução muito mais limpa.

    
por 25.05.2015 / 06:26
1

Você precisa definir DAEMON_CONF em /etc/init.d/hostpad .

É realmente óbvio se você olhar para /etc/init.d/hostapd , o padrão é assim:

...
14 PATH=/sbin:/bin:/usr/sbin:/usr/bin
15 DAEMON_SBIN=/usr/sbin/hostapd
16 DAEMON_DEFS=/etc/default/hostapd
17 DAEMON_CONF=
18 NAME=hostapd
19 DESC="advanced IEEE 802.11 management"
20 PIDFILE=/var/run/hostapd.pid
21
22 [ -x "$DAEMON_SBIN" ] || exit 0
23 [ -s "$DAEMON_DEFS" ] && . /etc/default/hostapd
24 [ -n "$DAEMON_CONF" ] || exit 0
...

porque DAEMON_CONF está vazio para começar, o script sai na linha 24. Pena que não há mensagem de erro nem nada. Alterando a linha 17 para

 DAEMON_CONF=/etc/hostapd/hostapd.conf

e colocar a configuração no arquivo especificado funcionou para mim.

    
por 21.10.2014 / 11:59
0

Eu acho que o problema é com suas citações na linha 11 de /etc/default/hostapd :

”/etc/hostapd/hostapd.conf”

Que deve ler:

"/etc/hostapd/hostapd.conf"

Seu post realmente me ajudou a resolver meu problema, então, obrigado!

    
por 21.08.2015 / 10:52
0

No Arch Linux, onde o systemd parece ser a norma sobre o rc / init.d eu tive um problema semelhante. Essa resposta difere das outras das seguintes maneiras:

  1. O arquivo de configuração não reside em /etc/init.d , mas em algum lugar abaixo de /etc/systemd/system/ . Especificamente /etc/systemd/system/multi-user.target.wants/hostapd , no meu caso, onde a linha ExecStart aponta para o arquivo de configuração usado.

  2. É importante destacar que esse arquivo de configuração também aponta para o binário usado, ou seja, /usr/bin/hostapd .

A correção é então verificar qual arquivo hostapd você está realmente executando. executar whereis dirá quais versões estão disponíveis e onde elas estão localizadas. Então

whereis hostapd

produz algo como

/sbin/hostapd /usr/bin/hostapd /usr/local/bin/hostapd

Testando cada um chamando sistematicamente PATH/hostapd /etc/hostapd/hostapd.conf para cada PATH identifica qual deles você está realmente invocando e qual deles o systemd está invocando. Novamente no meu caso, o último caminho é o que eu estava invocando quando eu digitei sudo hostapd /etc/hostapd/hostapd.conf . O segundo é o que o systemd estava invocando.

O truque é copiar o binário de /usr/bin/local para /usr/bin ou apontar systemd para o hostapd funcional. Eu acredito que o primeiro é a opção "mais segura".

sudo mv /usr/bin/hostapd /usr/bin hostapd.bkp     # delete later as necessary
sudo cp /usr/local/bin/hostapd /usr/bin
Novamente no meu caso, o binário abaixo de /usr/bin/local veio da compilação do driver Realtek a partir de sua fonte website conforme descrito aqui . Bem feito para a Realtek por apoiar o Linux.

Espero que isso ajude, não é específico para o meu sistema (Arch (Arm) Linux em um Raspberry Pi B) e qualifica como uma resposta adequada de acordo com as regras do UE.

    
por 30.04.2016 / 16:17
0

Adicionando 10 segundos de suspensão no arquivo /etc/init.d/hostapd corrigiu o problema para mim.

1) sudo nano /etc/init.d/hostapd 2) Adicione a seção sleep in start) como abaixo

case "$1" in
  start)
        log_daemon_msg "Starting $DESC" "$NAME"
        sleep 10
        start-stop-daemon --start --oknodo --quiet --exec "$DAEMON_SBIN" \
                --pidfile "$PIDFILE" -- $DAEMON_OPTS >/dev/null
        log_end_msg "$?"
        ;;
    
por 07.04.2018 / 11:45