Falla de IP estática para wlan0

12

Actualmente estoy tratando de configurar mi Raspberry Pi como un punto de acceso hostapdusando las siguientes instrucciones:

Punto de acceso inalámbrico RPI

Desafortunadamente, mi dirección IP estática se niega a configurar al inicio. A continuación se muestra el contenido de mi /etc/network/interfaces:

auto lo

iface lo inet loopabck
iface eth0 inet dhcp

iface wlan0 inet static
address 192.168.42.1
broadcast 192.168.42.255
netmask 255.255.255.0

up iptables-restore < /etc/iptables.ipv4.nat

Curiosamente, si ejecuto el siguiente comando después del arranque, todo funciona bien:

sudo ifconfig wlan0 192.168.42.1

¿Alguien ve algún problema evidente que pueda estar perdiendo? Ha pasado tanto tiempo desde que trabajé con la configuración de Linux que siento que me falta algo fácil.

Justin Niessner
fuente
Como solución rápida, puede ejecutar ifconfig como secuencia de comandos de arranque después de conectar las interfaces o las últimas secuencias de comandos de arranque. ¿Actualizaste el firmware a la última versión? No es una actualización de aptitud, sino un script raspi para firmware. Eso soluciona algunos problemas de interfaz.
Piotr Kula
@ppumkin: sigo siendo un Raspberry Pi n00b. ¿Cuál es el comando para ejecutar el script raspi para actualizar el firmware?
Justin Niessner
44
github.com/Hexxeh/rpi-update Vaya allí y léalo . También después de reiniciar, haga una actualización de aptitudes también.
Piotr Kula
@ppumkin: ejecuté ambas actualizaciones y ninguna se ocupó del problema. Parece que voy a tener que ir con la solución por el momento.
Justin Niessner
El último recurso es tratar de quemar el Rasbpian de nuevo utilizando la última imagen. Realice las actualizaciones nuevamente y vea si eso ayuda. Eso ayudó con mis problemas de WiFi.
Piotr Kula

Respuestas:

4

Mi archivo de interfaces se ve un poco diferente pero funciona para mí todo el tiempo.

auto lo

iface lo inet loopback
iface eth0 inet dhcp

auto wlan0
allow-hotplug wlan0

iface wlan0 inet static
    address 192.168.1.123
    netmask 255.255.255.0
    network 192.168.1.1
    broadcast 255.255.255.255
    gateway 192.168.1.1
    wpa-ssid "SSID"
    wpa-psk "PASSWORD"

Quizás esto pueda ayudar

karan
fuente
La IP de transmisión no debería verse así: 192.168.1.255el 255 está en el último lugar porque de lo contrario no se transmitirá en todos los dispositivos de su enrutador.
XandruCea
Creo que la pieza faltante de la pregunta original era la línea anterior "auto wlan0". También puede agregar un "dns-nameservers 8.8.8.8" (como ejemplo) después de la línea de transmisión.
Joat
2

Deshabilite ifplugd, entonces la dirección IP estática debería funcionar.

Lawrence
fuente
¡funciona para mi! / etc / default / ifupd, change auto / all => eth0
flotto
2

Sospecho que hostapd reinicializa la interfaz, que es lo que hace que esto falle. Puede agregar manualmente el comando ifconfig al archivo /etc/rc.local que lo ejecutará automáticamente en el arranque.

Fred
fuente
2

Definitivamente es una condición de carrera en el raspbian jessie, que ha dejado de usar init basado en el nivel de ejecución a favor de un enfoque basado en el árbol de paquetes "iniciar todo al mismo tiempo". Creo que podría haberlo superado poniendo estas líneas en /etc/rc.local:

/sbin/ifdown wlan0
/sbin/ifup wlan0
/sbin/ifconfig wlan0 192.168.42.1
/usr/sbin/service isc-dhcp-server start

El tiempo lo dirá, supongo.

Colin Wray
fuente
OK, Unix ciertamente tenía niveles de ejecución y telinit cuando trabajé en él desde 1984 hasta 1992, pero lamentablemente solo regresé recientemente. Tal vez si pasamos por todas las cosas que no son, alguien explicará lo que realmente es . (Mi solución aún funciona, pero no me gusta).
Colin Wray
Decidí que era una condición de carrera porque hay dos posibles resultados de la secuencia de arranque, y ocurren al azar.
Colin Wray
Yikes Pido disculpas por haber leído mal esta respuesta al revés: que era un problema causado por SysV init fijo con systemd. En cualquier caso, ninguno de los dos puede prevenir una condición de carrera, ya que por naturaleza muchos de los servicios comienzan y se mantienen. La configuración incorrecta de cualquier cosa puede causar un problema y lo que sí objeto aquí es la implicación de que systemd es el culpable por naturaleza (podría argumentarse que tiene una mejor metodología para resolver dependencias, y no simplemente "comienza todo al mismo tiempo" willy-nilly - pero esto va por una tangente) ...
Ricitos de Oro
En general, tengo una actitud poco ortodoxa hacia las redes en las cajas de Linux, lo que me deja con poca perspectiva sobre problemas como este, y si tiene una solución que funcione para usted, excelente, pero su diagnóstico parece muy conjetural (parece una condición de carrera, camina como una condición de carrera ... pero la sombra de un pato no es un pato ... etc).
Ricitos de oro
1
Al leer mi OP, puedo ver por qué pensaste que estaba culpando al sistema directamente, y por qué disparó a un defensor acérrimo como tú. No, creo que el problema debe estar en el árbol de dependencia de paquetes que dicen seguir y del que no sé nada. De alguna manera debe reconocer el choque entre ifup y hostapd.
Colin Wray el
1

Intentaría agregar las siguientes líneas justo encima de la configuración actual de su interfaz inalámbrica:

auto wlan0
allow-hotplug wlan0

Esto le indica a la configuración de su interfaz que inicie la interfaz wlan0 automáticamente, y que puede insertarse más tarde (hotplug).

Es posible que también deba agregar una gateway <IP Address>línea para que el enrutamiento funcione.

Hurgh
fuente
¡Esto fue lo que hizo el truco para mí! Gracias.
johnboiles
0

No necesariamente es una gran solución, pero dado que tuve problemas con mi staticip al usar / etc / network / interfaces, ¿cambié a una ip estática a través de mi enrutador? ¿Lo has probado de esta manera como alternativa?

zorro gris
fuente
0

Sigo el mismo tutorial para configurar el WAP en mi Pi.

Desafortunadamente, el servicio dhcp no se inicia en el arranque. Después del arranque, la comprobación del servicio muestra que no se está ejecutando: service isc-dhcp-server status Estado del servidor ISC DHCP: dhcpd no se está ejecutando

En realidad, la interfaz wlan0 no obtiene una dirección IP y es por eso que el servidor dhcp no se inicia.

Sigo las instrucciones en el siguiente enlace, pero no resuelve el problema: http://sirlagz.net/2013/02/10/how-to-use-the-raspberry-pi-as-a-wireless- acceso-pointrouter-part-3b /

Luego, sigo las instrucciones en esta publicación: http://www.novitiate.co.uk/?p=183

nano /etc/rc.local

#!/bin/sh -e
# rc.local
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
# In order to enable or disable this script just change the execution
# bits.
# By default this script does nothing.

# Print the IP address
sleep 5
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi
      sudo ifup wlan0                           #start wlan0 with ip adress in  /etc/network/interfaces
#      sudo service hostapd start               #not necessary if you already start hostapd as a service
      sudo service isc-dhcp-server start        #start dhcp server
exit 0

Después del reinicio, el servidor DHCP se está ejecutando.

También es otra posible solución que no pruebo: vaya, no tengo suficiente reputación para publicar más de 2 enlaces.

esa1966
fuente
0

He tenido el mismo problema. wlan0 pierde su dirección IP estática de alguna manera cuando se inicia el servidor dhcp. Edite / etc / default / ifplugd y cambie a esto:

INTERFACES="eth0"
HOTPLUG_INTERFACES="eth0"
Stef
fuente
Esta respuesta es corrent! no sé por qué votó en contra
flotto
Estaba teniendo el arranque pi, y a veces terminaba con una dirección 169.xx.xx.xx, y a veces la dirección estática que quería. Esto se hizo para obtener de manera confiable la dirección estática. Gracias @Stef!
Peter Bagnall
0

Alternativamente, puede crear un mini servicio que reinicie el wlan0, asegurándose de que se inicie en el arranque antes de hostapd e isc-dhcp-server.

Cree el nuevo script /etc/init.d/wlan0-restart

sudo vi /etc/init.d/wlan0-restart

con el siguiente contenido:

#!/bin/sh
#
#

### BEGIN INIT INFO
# Provides:          wlan0-restart
# Required-Start:    $network
# Required-Stop:     $network
# Should-Start:
# Should-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Restarts wlan0 interface
# Description:       Restarts wlan0 interface to fix problem with static address in WiFi AP
# X-Start-Before:    hostapd isc-dhcp-server
### END INIT INFO

PATH=/sbin:/usr/sbin:$PATH

do_start() {
  ifdown wlan0
  ifup wlan0
}

case "$1" in
  start)
    do_start
    ;;
  restart|reload|force-reload)
    echo "Error: argument '$1' not supported" >&2
    exit 3
    ;;
  stop)
    ;;
  status)
    ;;
  *)
    echo "Usage: $0 start|stop" >&2
    exit 3
    ;;
esac
exit 0

Luego ejecute los siguientes comandos:

sudo chmod 755 /etc/init.d/wlan0-restart
sudo update-rc.d –f hostapd remove
sudo update-rc.d –f isc-dhcp-server remove
sudo update-rc.d wlan0-restart defaults
sudo update-rc.d hostapd defaults
sudo update-rc.d isc-dhcp-server defaults

Reinicie y verifique que wlan0 tenga su dirección IP estática y que isc-dhcpd-server se esté ejecutando:

pi@raspberrypi:~$ ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr e8:de:27:07:92:6a  
          inet addr:192.168.10.1  Bcast:192.168.10.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

pi@raspberrypi:~$ pgrep -l dhcpd
2315 dhcpd
PJ_Finnegan
fuente