web-dev-qa-db-ja.com

dnsmasqでは、BeagleBone Black(Debian 8.5)でネットワークシステムを再起動する必要があります

私は現在、debian8.5を実行しているBeagleBoneBlackをWiFiアクセスポイントとして構成しようとしています。使用されるプログラムはhostapddnsmasqです。私は大きな進歩を遂げました。原則として、アクセスポイントは意図したとおりに機能しています(接続してLightyがホストするWebサイトにアクセスできます)が、少し問題があります。再起動後、dnsmasqがwlan0にアドレスがないことを訴えるため、接続できません。

/var/log/syslogからの抜粋:

Jun 24 12:01:03 arm dnsmasq[487]: warning: interface wlan0 does not currently exist
Jun 24 12:01:03 arm dnsmasq-dhcp[487]: DHCP, IP range 192.168.3.20 -- 192.168.3.200, lease time infinite
Jun 24 12:01:53 arm dnsmasq-dhcp[487]: DHCP packet received on wlan0 which has no address

/etc/init.d/networking restartを使用してネットワークシステムを再起動すると、上記のようにすべてが正常に機能しています。 dnsmasqを再起動するかifup wlan0を呼び出すと、問題は解決しません。ログに基づいて、何らかのタイミングの問題があると思います(つまり、dnsmasqの開始後にUSB WiFiスティックが認識されるなど)が、私は本当に克服する方法がわかりません。 allow-hotplug wlan0/etc/network/interfacesに追加しましたが、何も変更されませんでした。

/ etc/network/interfacesを除く:

auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
    address 192.168.3.1

私の/etc/dnsmasq.confは非常に基本的です:

# Disable DNS
port=0
interface=wlan0
no-dhcp-interface=eth0
dhcp-range=interface:wlan0,192.168.3.20,192.168.3.200,infinite

編集:

ifconfig wlan0 192.168.3.1の実行も機能します。

1
Paul K

Dnsmasqを再起動する必要があるかどうかを確認するif-upスクリプトを作成できます。

/etc/network/if-up.d/dnsmasq:

#!/bin/sh
[ "$IFACE" != "lo" ] || exit 0

restartDnsMasq() {
    if [ -d /run/systemd/system ]; then
        systemctl reload --no-block dnsmasq >/dev/null 2>&1 || true
    else
        invoke-rc.d dnsmasq restart >/dev/null 2>&1 || true
    fi
}

# Find out if dnsmasq is configured to run on a single interface
interface=$(cat /etc/dnsmasq.conf | grep interface | awk -F '=' '{print $2}')
if  [ "x${interface}" = "x" ]; then
    # all interfaces
    logger DnsMasq not configured for any particular interface, restarting because $IFACE came up.
    restartDnsMasq
else
    if [ "${interface}" = "$IFACE" ]; then
        # The interface that dnsmasq is running on is being brought up
        logger DnsMasq configured for interface ${interface}, restarting because $IFACE came up.
        restartDnsMasq
    else
        logger DnsMasq configured for interface ${interface}, not restarting because $IFACE came up.
    fi 
fi
0
Solar.gy