私は現在、debian8.5を実行しているBeagleBoneBlackをWiFiアクセスポイントとして構成しようとしています。使用されるプログラムはhostapd
とdnsmasq
です。私は大きな進歩を遂げました。原則として、アクセスポイントは意図したとおりに機能しています(接続して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
の実行も機能します。
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