udhcpd.service 已启动,但 udhcpd 进程未运行

udhcpd.service 已启动,但 udhcpd 进程未运行

我为我的 wlan0 进行了hostapd设置udhcpd。启动后,hostapd正在运行,我看到另一个设备的 ssid,但没有收到 dhcp 地址。好吧,我不能,因为 udhcpd 没有运行,并且systemctl status udhcpd.service声称:

● 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.

活动,但退出?又为何退出?我尝试了一系列重新启动和界面重置,最终发现这个脚本是可靠的:

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

现在一切都按预期进行。但使用这个脚本是一个令人讨厌的解决方法。我希望服务按预期启动。

我的/etc/udhcpd.conf样子

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

/etc/network/interfaces

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

如果它也相关/etc/hostapd/hostapd.conf

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

我尝试在启动项sleep中添加一个/etc/init.d/udhcpd(似乎对我发现的另一篇文章有​​所帮助),但无济于事。

答案1

我在带有 Atheros wifi 卡的系统上遇到了这个问题,该卡对于 systemd 或 udhcpd 来说都不够快。诊断起来非常令人沮丧,因为涉及多个抽象层。这是我修复它的方法:

在 LSB 标头之后添加到export _SYSTEMCTL_SKIP_REDIRECT=1的顶部附近。/etc/init.d/udhcpd这会禁用一层 systemd 抽象,并允许 sysv 启动脚本更正常地运行。

添加到部分的sleep 30开头。这会在启动 DHCP 服务器之前为 wifi 接口提供一些时间。否则,它就会悄悄退出。start)/etc/init.d/udhcpd

一旦它起作用,您可以向下调整睡眠时间。

答案2

我对与网桥关联的 atheros wifi 卡也有同样的问题,udhcpd 服务器在 br0 上运行。 udhcpd 似乎在 br0 出现之前启动。我的解决方案是让 /etc/default/udhcpdDHCPD_启用更改为“no”并将以下网络配置添加到 br0 的 /etc/network/interfaces 中:

    post-up /usr/sbin/udhcpd -S /etc/udhcpd.conf

相关内容