udhcpd.service iniciado, mas o processo udhcpd não está em execução

4

Eu configurei hostapd e udhcpd para minha wlan0. Após a inicialização, o hostapd está em execução e vejo o ssid com outro dispositivo, mas não recebo um endereço dhcp. Bem, não posso, porque o udhcpd não está em execução e systemctl status udhcpd.service afirma:

● udhcpd.service - LSB: Start busybox udhcpd at boot time
   Loaded: loaded (/etc/init.d/udhcpd)
   Active: active (exited) since Thu 2017-03-16 14:24:06 CET; 7min ago
  Process: 611 ExecStart=/etc/init.d/udhcpd start (code=exited, status=0/SUCCESS)

Mar 16 14:24:06 testo-mx6 systemd[1]: Starting LSB: Start busybox udhcpd at boot time...
Mar 16 14:24:06 testo-mx6 systemd[1]: Started LSB: Start busybox udhcpd at boot time.
Mar 16 14:24:06 testo-mx6 udhcpd[611]: Starting very small Busybox based DHCP server: udhcpd.

Ativo, mas saiu? E por que saiu? Eu tentei um monte de reinicializações e reinicializações de interface e finalmente encontrei este script para ser confiável:

#!/bin/sh
systemctl stop udhcpd.service
systemctl stop hostapd.service
ifdown wlan0
ifup wlan0
sleep 1
systemctl start udhcpd.service

Agora tudo está funcionando conforme o esperado. Mas usar esse script é uma solução desagradável. Eu quero que os serviços sejam iniciados como supostos.

Meu /etc/udhcpd.conf parece

start           192.168.42.20   #default: 192.168.0.20
end             192.168.42.254  #default: 192.168.0.254
interface       wlan0           #default: eth0
max_leases      2               #default: 254
siaddr          192.168.42.42   #default: 0.0.0.0
sname           foobar          #default: (none)
option  domain  local
option  lease   864000          # 10 days of seconds

e /etc/network/interfaces

auto wlan0
iface wlan0 inet static
    hostapd /etc/hostapd/hostapd.conf
    address 192.168.42.42
    netmask 255.255.255.0

E, caso seja relevante, também o /etc/hostapd/hostapd.conf :

interface=wlan0
driver=nl80211
channel=1
hw_mode=g
wmm_enabled=0
max_num_sta=1
ssid=foobar

Eu tentei colocar um sleep na inicialização /etc/init.d/udhcpd (parecia ter ajudado em outra postagem que encontrei), mas sem sucesso.

    
por Philippos 16.03.2017 / 14:46

2 respostas

1

Eu tive esse problema em um sistema com uma placa wifi Atheros que não surgiu rápido o suficiente para systemd ou udhcpd. É extremamente frustrante diagnosticar, pois há várias camadas de abstração envolvidas. Veja o que fiz para corrigir isso:

Adicione export _SYSTEMCTL_SKIP_REDIRECT=1 perto do topo de /etc/init.d/udhcpd , após o cabeçalho LSB. Isso desativa uma camada de abstração systemd e permite que o script de inicialização do sysv funcione normalmente.

Adicione sleep 30 ao início da seção start) de /etc/init.d/udhcpd . Isso dá algum tempo para a interface wifi aparecer antes de iniciar o servidor DHCP. Caso contrário, apenas sairá silenciosamente.

Quando estiver funcionando, você poderá ajustar o tempo de espera para baixo.

    
por 20.08.2017 / 04:16
0

Eu tive o mesmo problema com o cartão wi-fi atheros associado a uma bridge, o servidor udhcpd rodando em br0. O udhcpd parece começar antes que o br0 apareça. Minha solução foi deixar o / etc / default / udhcpd DHCPD_ENABLED para "não" e adicionar a seguinte configuração de rede a / etc / network / interfaces para br0:

    post-up /usr/sbin/udhcpd -S /etc/udhcpd.conf
    
por 20.07.2018 / 10:25