Errore IP statico per wlan0


12

Attualmente sto cercando di configurare il mio Raspberry Pi come punto di accesso hostapdutilizzando le seguenti indicazioni:

Hotspot wireless RPI

Sfortunatamente, il mio indirizzo IP statico si rifiuta di impostare all'avvio. Di seguito è riportato il contenuto del mio /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

Stranamente, se eseguo il seguente comando dopo l'avvio, tutto funziona bene:

sudo ifconfig wlan0 192.168.42.1

Qualcuno vede problemi evidenti che potrei mancare? È passato così tanto tempo da quando ho lavorato con la configurazione di Linux che sento che mi manca qualcosa di facile.


Come soluzione rapida puoi semplicemente eseguire ifconfig come script di avvio dopo aver collegato le interfacce o gli ultimi script di avvio. Hai aggiornato il firmware alla versione più recente? Non aggiornamento aptitude ma script raspi per il firmware. Ciò risolve alcuni problemi di interfaccia.
Piotr Kula,

@ppumkin - Sono ancora un Raspberry Pi n00b. Qual è il comando per eseguire lo script raspi per aggiornare il firmware?
Justin Niessner,

4
github.com/Hexxeh/rpi-update Vai lì e leggilo. Anche dopo il riavvio eseguire anche un aggiornamento aptitude.
Piotr Kula,

@ppumkin: ho eseguito entrambi gli aggiornamenti e nessuno dei due si è occupato del problema. Sembra che dovrò andare con la soluzione alternativa per ora.
Justin Niessner,

L'ultima risorsa sta cercando di bruciare il Rasbpian da fresco usando l'immagine più recente. Ripeti gli aggiornamenti e vedi se aiuta. Ciò ha aiutato con i miei problemi WiFi.
Piotr Kula,

Risposte:


4

Il mio file di interfacce ha un aspetto leggermente diverso ma funziona sempre con me.

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"

Forse questo potrebbe aiutare


L'IP di trasmissione non dovrebbe apparire così: 192.168.1.255il 255 è solo all'ultimo posto perché altrimenti non trasmetti su tutti i dispositivi del router.
XandruCea,

Credo che il pezzo mancante della domanda originale fosse la riga "auto wlan0" sopra. Potresti anche voler aggiungere un "dns-nameservers 8.8.8.8" (come esempio) dopo la linea di trasmissione.
joat

2

Disabilita ifplugd, quindi l'indirizzo IP statico dovrebbe funzionare.


per me va bene! / etc / default / ifupd, cambia auto / all => eth0
flotto

2

Ho il sospetto che hostapd reinizializzi l'interfaccia che è ciò che causa questo fallire. È possibile aggiungere manualmente il comando ifconfig al file /etc/rc.local che lo eseguirà automaticamente all'avvio.


2

È sicuramente una condizione di competizione in raspbian jessie, che ha smesso di usare init basato su runlevel a favore di un approccio "avvia tutto allo stesso tempo" basato sull'albero dei pacchetti. Penso che avrei potuto aggirarlo inserendo queste righe /etc/rc.local:

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

Il tempo dirà che suppongo.


OK, unix aveva certamente runlevel e telinit quando ci ho lavorato dal 1984 al 1992, ma sono rimpianto solo di recente. Forse se andiamo attraverso tutte le cose che non lo è, qualcuno spiegherà ciò che effettivamente è . (La mia correzione funziona ancora, ma non mi piace).
Colin Wray,

Ho deciso che era una condizione di gara perché ci sono due possibili esiti della sequenza di avvio e si verificano in modo casuale.
Colin Wray,

Yikes. Mi scuso per aver letto erroneamente questa risposta all'indietro - che si trattava di un problema causato da init SysV risolto con systemd. In ogni caso, nessuno dei due può impedire una condizione di gara, poiché per natura molti dei servizi iniziano a biforcarsi e persistono. Configurare erroneamente qualsiasi cosa può causare un problema e ciò a cui mi oppongo qui è l'implicazione che systemd è per natura responsabile (si potrebbe sostenere che abbia una metodologia migliore per risolvere le dipendenze e non semplicemente "avvia tutto allo stesso tempo" volenti o nolenti - ma questo si sta verificando in modo tangente) ...
riccioli d'oro

Ho un atteggiamento leggermente non ortodosso nei confronti del networking su scatole Linux in generale, il che mi lascia con poca prospettiva su problemi come questo, e se hai una soluzione che funziona per te, grande, ma la tua diagnosi sembra molto congetturale (assomiglia a una condizione di razza, cammina come una condizione di razza ... ma l'ombra di un'anatra non è un'anatra ... ecc.).
Riccioli d'oro

1
Leggendo il mio PO vedo perché pensavi di incolpare direttamente il sistema e perché ha acceso un difensore convinto come te. No, penso che il problema debba risiedere nell'albero delle dipendenze dei pacchetti che professano di seguire e di cui non so nulla. In qualche modo deve riconoscere lo scontro tra ifup e hostapd.
Colin Wray,

1

Vorrei provare ad aggiungere le seguenti righe appena sopra la tua attuale configurazione dell'interfaccia wirless:

auto wlan0
allow-hotplug wlan0

Questo dice alla tua interfaccia di configurazione di avviare automaticamente l'interfaccia wlan0 e che può essere inserita in seguito (hotplug).

Potrebbe anche essere necessario aggiungere una gateway <IP Address>linea per far funzionare il routing.


Questa è stata la cosa che ha fatto il trucco per me! Grazie.
johnboiles,

0

Non necessariamente un'ottima soluzione, ma dato che ho avuto problemi con il mio staticip quando ho usato / etc / network / interfaces sono passato a usare un ip statico tramite il mio router? Hai provato in questo modo in alternativa?


0

Seguo lo stesso tutorial per configurare il WAP sul mio Pi.

Sfortunatamente, il servizio dhcp non si avvia all'avvio. Dopo l'avvio, il controllo del servizio indica che non è in esecuzione: servizio isc-dhcp-server status Stato del server DHCP ISC: dhcpd non è in esecuzione

In realtà, l'interfaccia wlan0 non ottiene un indirizzo IP ed è per questo che il server DHCP non si avvia.

Seguo le istruzioni nel link qui sotto, ma non risolve il problema: http://sirlagz.net/2013/02/10/how-to-use-the-raspberry-pi-as-a-wireless- access-pointrouter-part-3b /

Quindi, seguo le istruzioni in questo post: 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

Dopo il riavvio, il server DHCP è in esecuzione.

Anche una possibile altra soluzione che non collaudo: oops, non ho abbastanza reputazione per pubblicare più di 2 link.


0

Ho avuto lo stesso problema. wlan0 perde in qualche modo il suo indirizzo IP statico all'avvio del server DHCP. Modifica / etc / default / ifplugd e cambia in questo:

INTERFACES="eth0"
HOTPLUG_INTERFACES="eth0"

Questa risposta è corretta! non so perché votato verso il basso
flotto

Avevo il pi boot, e a volte finiva con un indirizzo 169.xx.xx.xx, e talvolta l'indirizzo statico che volevo. Questo è stato fatto per ottenere in modo affidabile l'indirizzo statico. Grazie @Stef!
Peter Bagnall,

0

In alternativa, è possibile creare un mini-servizio che riavvia wlan0, assicurandosi che si avvii all'avvio prima di hostapd e isc-dhcp-server.

Crea il nuovo script /etc/init.d/wlan0-restart

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

con il seguente contenuto:

#!/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

Quindi eseguire i seguenti comandi:

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

Riavvia e verifica che wlan0 abbia il suo indirizzo IP statico e che isc-dhcpd-server sia in esecuzione:

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.