Statische IP schlägt für wlan0 fehl

12

Ich versuche derzeit, meinen Raspberry Pi hostapdmit den folgenden Anweisungen als Access Point einzurichten :

RPI Wireless Hotspot

Leider lässt sich meine statische IP-Adresse beim Start nicht einstellen. Unten ist der Inhalt von meinem /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

Seltsamerweise funktioniert alles einwandfrei, wenn ich nach dem Booten den folgenden Befehl ausführe:

sudo ifconfig wlan0 192.168.42.1

Sieht jemand irgendwelche krassen Probleme, die mir fehlen könnten? Es ist so lange her, dass ich mit der Linux-Konfiguration gearbeitet habe, dass ich das Gefühl habe, etwas Leichtes zu vermissen.

Justin Niessner
quelle
Als schnelle Umgehung können Sie das ifconfig einfach als Boot-Skript ausführen, nachdem die Schnittstellen verbunden wurden, oder als letztes Boot-Skript. Haben Sie die Firmware auf den neuesten Stand gebracht? Kein Aptitude-Update, sondern Raspi-Skript für Firmware. Das behebt ein paar Schnittstellenprobleme.
Piotr Kula
@ppumkin - Ich bin immer noch ein Raspberry Pi n00b. Wie lautet der Befehl zum Ausführen des Raspi-Skripts zum Aktualisieren der Firmware?
Justin Niessner
4
github.com/Hexxeh/rpi-update Gehen Sie dorthin und lesen Sie es. Führen Sie auch nach dem Neustart ein Aptitude-Update durch.
Piotr Kula
@ppumkin - Ich habe beide Updates ausgeführt und mich auch nicht um das Problem gekümmert. Sieht so aus, als müsste ich erst einmal mit der Problemumgehung beginnen.
Justin Niessner
Der letzte Ausweg ist der Versuch, den Rasbpian mit dem neuesten Image frisch zu verbrennen. Führen Sie die Aktualisierungen erneut durch und prüfen Sie, ob dies hilfreich ist. Das hat mir bei WLAN-Problemen geholfen.
Piotr Kula

Antworten:

4

Meine Interface- Datei sieht ein bisschen anders aus, funktioniert aber immer für mich.

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"

Vielleicht könnte das helfen

Karan
quelle
Sollte die Broadcast-IP nicht so aussehen: 192.168.1.255Der 255 befindet sich nur auf dem letzten Platz, da Sie sonst nicht auf allen Geräten Ihres Routers Broadcast senden.
XandruCea
Ich glaube, das fehlende Teil der ursprünglichen Frage war die obige Zeile "auto wlan0". Sie können auch einen "DNS-Nameserver 8.8.8.8" (als Beispiel) nach der Broadcast-Zeile einfügen.
Joat
2

Wenn Sie ifplugd deaktivieren, sollte die statische IP-Adresse funktionieren.

Lawrence
quelle
funktioniert bei mir! / etc / default / ifupd, ändere auto / all => eth0
flotto
2

Ich vermute, dass hostapd die Schnittstelle neu initialisiert, was dazu führt, dass dies fehlschlägt. Sie können den Befehl ifconfig manuell zur Datei /etc/rc.local hinzufügen, die ihn beim Start automatisch ausführt.

Fred
quelle
2

Es ist definitiv eine Racebedingung in raspbian jessie, die die Verwendung von runlevel-basiertem init zugunsten eines paketbaumbasierten Ansatzes "Alles zur gleichen Zeit starten" eingestellt hat. Ich glaube, ich hätte es umgehen können, indem ich diese Zeilen einfügte /etc/rc.local:

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

Die Zeit wird es zeigen, nehme ich an.

Colin Wray
quelle
OK, Unix hatte sicherlich Runlevel und Telinit, als ich von 1984 bis 1992 daran arbeitete, aber ich bin leider erst vor kurzem zurückgekehrt. Wenn wir alle Dinge durchgehen, die es nicht ist, wird vielleicht jemand erklären, was es tatsächlich ist . (Mein Fix funktioniert immer noch, aber ich mag es nicht).
Colin Wray
Ich entschied, dass es sich um eine Rennbedingung handelte, da es zwei mögliche Ergebnisse der Startsequenz gibt, die zufällig auftreten.
Colin Wray
Huch. Ich entschuldige mich dafür, dass ich diese Antwort falsch verstanden habe - dass es ein Problem war, das durch SysV init verursacht wurde, das mit systemd behoben wurde. In jedem Fall kann keiner von ihnen eine Rennsituation verhindern , da von Natur aus viele der Dienste, die sie starten, gegabelt werden und bestehen bleiben. Eine falsche Konfiguration kann zu Problemen führen, und was ich hier ablehne, ist die Implikation, dass systemd von Natur aus die Schuld trägt (man könnte argumentieren, dass es eine bessere Methode zum Auflösen von Abhängigkeiten hat und nicht einfach "alles zur gleichen Zeit startet"). wohl oder übel - aber das geht auf eine Tangente) ...
Goldlöckchen
Ich habe eine etwas unorthodoxe Haltung gegenüber Netzwerken auf Linux-Boxen im Allgemeinen, die mir wenig Perspektive auf Probleme wie diese lässt, und wenn Sie eine Lösung haben, die für Sie funktioniert, großartig, aber Ihre Diagnose scheint sehr mutmaßlich zu sein (sieht aus wie eine Rassenbedingung, geht wie eine Rennbedingung ... aber der Schatten einer Ente ist keine Ente ... etc).
Goldlöckchen
1
Wenn ich meine OP lese, kann ich sehen, warum Sie dachten, ich hätte das System direkt beschuldigt und warum es einen starken Verteidiger wie Sie ausgelöst hat. Nein, ich denke, das Problem muss im Paketabhängigkeitsbaum liegen, dem sie zu folgen behaupten und von dem ich nichts weiß. Irgendwie muss es den Konflikt zwischen ifup und hostapd erkennen.
Colin Wray
1

Ich würde versuchen, die folgenden Zeilen direkt über Ihrer aktuellen drahtlosen Schnittstellenkonfiguration hinzuzufügen:

auto wlan0
allow-hotplug wlan0

Dadurch wird Ihre Schnittstellenkonfiguration angewiesen, die wlan0-Schnittstelle automatisch zu starten und später einzufügen (Hotplug).

Möglicherweise müssen Sie auch eine gateway <IP Address>Zeile hinzufügen , damit das Routing funktioniert.

Hurgh
quelle
Dies war das, was den Trick für mich getan hat! Vielen Dank.
Johnboiles
0

Nicht unbedingt eine großartige Lösung, aber da ich Probleme mit meiner Statistik bei der Verwendung von / etc / network / interfaces hatte, habe ich stattdessen über meinen Router auf die Verwendung einer statischen IP-Adresse umgestellt? Haben Sie es als Alternative so versucht?

grauer Fuchs
quelle
0

Ich folge demselben Tutorial, um den WAP auf meinem Pi einzurichten.

Leider startet der DHCP-Dienst nicht beim Booten. Nach dem Start zeigt die Überprüfung des Dienstes, dass er nicht ausgeführt wird: Dienst isc-dhcp-server status Status des ISC-DHCP-Servers: dhcpd wird nicht ausgeführt

Eigentlich bekommt die Schnittstelle wlan0 keine IP-Adresse und deshalb startet der DHCP-Server nicht.

Ich folge den Anweisungen im folgenden Link, aber das Problem wird dadurch nicht behoben: http://sirlagz.net/2013/02/10/how-to-use-the-raspberry-pi-as-a-wireless- zugang-pointrouter-teil-3b /

Dann folge ich den Anweisungen in diesem Beitrag: 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

Nach dem Neustart wird der DHCP-Server ausgeführt.

Auch eine mögliche andere Lösung, die ich nicht teste: Hoppla, ich habe nicht genug Reputation, um mehr als 2 Links zu posten.

esa1966
quelle
0

Ich hatte das gleiche problem wlan0 verliert irgendwie seine statische IP-Adresse, wenn der DHCP-Server gestartet wird. Bearbeite / etc / default / ifplugd und ändere dies:

INTERFACES="eth0"
HOTPLUG_INTERFACES="eth0"
Stef
quelle
Diese Antwort ist richtig!
Ich
Ich hatte den Pi-Boot, und manchmal hatte er eine 169.xx.xx.xx-Adresse und manchmal die statische Adresse, die ich haben wollte. Dies wurde gemacht, um zuverlässig die statische Adresse zu erhalten. Danke @Stef!
Peter Bagnall
0

Alternativ können Sie einen Minidienst erstellen, der das wlan0 neu startet und sicherstellt, dass es beim Booten vor hostapd und isc-dhcp-server gestartet wird.

Erstellen Sie das neue Skript /etc/init.d/wlan0-restart

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

mit folgendem Inhalt:

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

Führen Sie dann die folgenden Befehle aus:

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

Starten Sie den Computer neu und überprüfen Sie, ob wlan0 über eine statische IP-Adresse verfügt und der isc-dhcpd-Server ausgeführt wird:

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
quelle