.png)
Ich versuche gerade, einen BeagleBone Black mit Debian 8.5 als WLAN-Zugangspunkt zu konfigurieren. Die verwendeten Programme sind hostapd
und dnsmasq
. Ich habe große Fortschritte gemacht, im Prinzip funktioniert der Zugangspunkt wie vorgesehen (ich kann mich damit verbinden und auf die von Lighty gehostete Website zugreifen), aber es gibt ein kleines Problem. Nach einem Neustart kann ich keine Verbindung herstellen, da dnsmasq
sich beschwert, dass wlan0 keine Adresse hat.
Ausschnitt aus /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
Wenn ich das Netzwerksystem neu starte, /etc/init.d/networking restart
funktioniert alles einwandfrei, wie oben beschrieben. Neustart dnsmasq
oder Aufrufen ifup wlan0
hilft bei dem Problem nicht. Basierend auf dem Protokoll würde ich vermuten, dass es eine Art Timing-Problem gibt (d. h. der USB-WLAN-Stick wird erkannt, nachdem dnsmasq gestartet wurde oder ähnliches), aber ich weiß nicht wirklich, wie ich das lösen kann. Ich habe allow-hotplug wlan0
etwas hinzugefügt /etc/network/interfaces
, aber es hat nichts geändert.
Ausgenommen von /etc/network/interfaces:
auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.3.1
Meins /etc/dnsmasq.conf
ist ganz einfach:
# Disable DNS
port=0
interface=wlan0
no-dhcp-interface=eth0
dhcp-range=interface:wlan0,192.168.3.20,192.168.3.200,infinite
Bearbeiten:
Laufen ifconfig wlan0 192.168.3.1
geht auch.
Antwort1
Sie können ein If-Up-Skript erstellen, das prüft, ob dnsmasq neu gestartet werden muss.
/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