web-dev-qa-db-ja.com

udhcpd.serviceは開始されましたが、udhcpdプロセスが実行されていません

Wlan0にhostapdudhcpdを設定しました。起動後、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

/etc/init.d/udhcpdスタートアップにsleepを入れようとしましたが(別の投稿で私が見つけたようです)、役に立たなかったようです。

3
Philippos

Systemdとudhcpdのどちらにも対応できないほどの速度でAtheros wifiカードが搭載されているシステムでこの問題が発生しました。関係する抽象化にはいくつかの層があるため、診断は非常にイライラします。これを修正するために私がしたことは次のとおりです:

LSBヘッダーの後のexport _SYSTEMCTL_SKIP_REDIRECT=1の上部近くに/etc/init.d/udhcpdを追加します。これにより、systemd抽象化の1つのレイヤーが無効になり、sysv起動スクリプトがより正常に機能できるようになります。

sleep 30start)セクションの先頭に/etc/init.d/udhcpdを追加します。これにより、DHCPサーバーを起動する前に、wifiインターフェースが起動するまでの時間を確保できます。それ以外の場合は、静かに終了します。

機能したら、スリープ時間を下方に調整できます。

1
benjamindees

ブリッジに関連付けられているatheros wifiカードにも同じ問題がありました。udhcpdサーバーはbr0で実行されています。 udhcpdは、br0が登場する前に起動するようです。私の解決策は、/ etc/default/udhcpd DHCPD_ENABLEDを "no"にして、次のネットワーク構成をbr0の/ etc/network/interfacesに追加することでした。

    post-up /usr/sbin/udhcpd -S /etc/udhcpd.conf
0
Simon Tropée