%20%E4%B8%8A%E3%81%AE%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%20%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%81%AE%E5%86%8D%E8%B5%B7%E5%8B%95%E3%82%92%E5%BF%85%E8%A6%81%E3%81%A8%E3%81%97%E3%81%BE%E3%81%99%E3%80%82.png)
現在、Debian 8.5 を実行している BeagleBone Black を 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
問題は解決しません。ログに基づいて、何らかのタイミングの問題があると思われます (つまり、USB WiFi スティックが dnsmasq の起動後に認識されるなど) が、解決方法がわかりません。追加しました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
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