.png)
Actualmente estoy intentando configurar un BeagleBone Black con Debian 8.5 como punto de acceso WiFi. Los programas utilizados son hostapd
y dnsmasq
. He logrado un gran progreso, en principio el punto de acceso funciona según lo previsto (puedo conectarme a él y acceder al sitio web alojado en Lighty), pero con un pequeño problema. Después de reiniciar no puedo conectarme, ya que dnsmasq
me quejo de que wlan0 no tiene una dirección.
Extracto de /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
Cuando reinicio el sistema de red, /etc/init.d/networking restart
todo funciona bien, como se describe anteriormente. Reiniciar dnsmasq
o llamar ifup wlan0
no ayuda con el problema. Según el registro, supongo que hay algún tipo de problema de sincronización (es decir, la memoria USB WiFi se reconoce después de que se haya iniciado dnsmasq, o algo similar), pero realmente no sé cómo solucionarlo. He añadido allow-hotplug wlan0
pero /etc/network/interfaces
no cambió nada.
Excepto desde /etc/network/interfaces:
auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.3.1
Mi /etc/dnsmasq.conf
es bastante básico:
# Disable DNS
port=0
interface=wlan0
no-dhcp-interface=eth0
dhcp-range=interface:wlan0,192.168.3.20,192.168.3.200,infinite
Editar:
Correr ifconfig wlan0 192.168.3.1
también funciona.
Respuesta1
Puede crear un script if-up que comprobará si dnsmasq debe reiniciarse.
/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