IP statique échouant pour wlan0

12

J'essaie actuellement de configurer mon Raspberry Pi en tant que point d'accès en hostapdutilisant les instructions suivantes:

Point d'accès sans fil RPI

Malheureusement, mon adresse IP statique refuse de se définir au démarrage. Voici le contenu de mon /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

Curieusement, si j'exécute la commande suivante après le démarrage, tout fonctionne bien:

sudo ifconfig wlan0 192.168.42.1

Quelqu'un voit-il des problèmes flagrants que je pourrais manquer? Cela fait si longtemps que je n'ai pas travaillé avec la configuration Linux que j'ai l'impression qu'il me manque quelque chose de facile.

Justin Niessner
la source
Comme solution rapide, vous pouvez simplement exécuter ifconfig en tant que script de démarrage après la connexion des interfaces ou les derniers scripts de démarrage. Avez-vous mis à jour le micrologiciel? Pas une mise à jour d'aptitude mais un script raspi pour le firmware. Cela corrige quelques problèmes d'interface.
Piotr Kula
@ppumkin - Je suis toujours un Raspberry Pi n00b. Quelle est la commande pour exécuter le script raspi pour mettre à jour le firmware?
Justin Niessner
4
github.com/Hexxeh/rpi-update Allez-y et lisez-le. Après le redémarrage, effectuez également une mise à jour d'aptitude.
Piotr Kula
@ppumkin - J'ai exécuté les deux mises à jour et aucun n'a pris soin du problème. On dirait que je vais devoir suivre la solution de contournement pour l'instant.
Justin Niessner
Le dernier recours essaie de graver le Rasbpian à partir de frais en utilisant la dernière image. Effectuez à nouveau les mises à jour et voyez si cela aide. Cela a aidé avec des problèmes de mi WiFi.
Piotr Kula

Réponses:

4

Mon fichier d' interfaces est un peu différent mais fonctionne pour moi tout le temps.

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"

Peut-être que cela pourrait aider

Karan
la source
L'IP de diffusion ne devrait-elle pas ressembler à ceci: 192.168.1.255le 255 est juste à la dernière place car sinon vous ne diffusez pas sur tous les appareils de votre routeur.
XandruCea
Je crois que la pièce manquante de la question d'origine était la ligne "auto wlan0" ci-dessus. Vous pouvez également ajouter un "dns-nameservers 8.8.8.8" (à titre d'exemple) après la ligne de diffusion.
joat
2

Désactivez ifplugd, alors l'adresse IP statique devrait fonctionner.

Lawrence
la source
travaille pour moi! / etc / default / ifupd, changez auto / all => eth0
flotto
2

Je soupçonne que hostapd réinitialise l'interface, ce qui provoque l'échec de cela. Vous pouvez ajouter manuellement la commande ifconfig au fichier /etc/rc.local qui l'exécutera automatiquement au démarrage.

Fred
la source
2

Il s'agit certainement d'une condition de concurrence dans jaspie raspbian, qui a cessé d'utiliser init basé sur le niveau d'exécution au profit d'une approche basée sur l'arborescence des packages "tout démarrer en même temps". Je pense que j'aurais pu contourner cela en mettant ces lignes dans /etc/rc.local:

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

Le temps nous le dira, je suppose.

Colin Wray
la source
OK, unix avait certainement des niveaux d'exécution et de Telinit lorsque j'y ai travaillé de 1984 à 1992, mais je ne suis malheureusement revenu que récemment. Peut - être que si nous passons par toutes les choses que ce n'est pas, quelqu'un va expliquer ce qu'il fait est . (Ma solution fonctionne toujours, mais je ne l'aime pas).
Colin Wray
J'ai décidé que c'était une condition de course car il y avait deux résultats possibles de la séquence de démarrage, et ils se produisent au hasard.
Colin Wray
Oui. Je m'excuse d'avoir mal lu cette réponse à l'envers - qu'il s'agissait d'un problème causé par SysV init fixed w / systemd. Dans tous les cas, aucun d'eux ne peut empêcher une condition de concurrence, car, par nature, la plupart des services qu'ils lancent commencent et persistent. Une mauvaise configuration de quoi que ce soit peut causer un problème et ce à quoi je m'oppose ici est l'implication que systemd est par nature à blâmer (on pourrait dire qu'il a une meilleure méthodologie pour résoudre les dépendances, et il ne se contente pas de "tout démarrer en même temps" bon gré mal gré - mais cela se déroule sur une tangente) ...
goldilocks
J'ai une attitude légèrement peu orthodoxe envers la mise en réseau sur les boîtiers Linux en général, ce qui me laisse peu de perspective sur des problèmes comme celui-ci, et si vous avez une solution qui fonctionne pour vous, parfait, mais votre diagnostic semble très conjectural (ressemble à une condition de course, à des promenades comme une condition de course ... mais l'ombre d'un canard n'est pas un canard ... etc).
goldilocks
1
En lisant mon OP, je peux voir pourquoi vous pensiez que je blâmais directement le système, et pourquoi il a mis le feu à un défenseur convaincu comme vous. Non, je pense que le problème doit résider dans l'arborescence de dépendances des packages qu'ils professent suivre et dont je ne connais rien. D'une manière ou d'une autre, il doit reconnaître le conflit entre ifup et hostapd.
Colin Wray
1

J'essaierais d'ajouter les lignes suivantes juste au-dessus de votre configuration d'interface sans fil actuelle:

auto wlan0
allow-hotplug wlan0

Cela indique à votre configuration d'interface de démarrer automatiquement l'interface wlan0 et qu'elle peut être insérée ultérieurement (hotplug).

Vous devrez peut-être également ajouter une gateway <IP Address>ligne pour que le routage fonctionne.

Hurgh
la source
C'est la chose qui a fait l'affaire pour moi! Merci.
johnboiles
0

Pas nécessairement une excellente solution, mais comme j'ai eu des problèmes avec ma statistique lors de l'utilisation de / etc / network / interfaces, je suis passé à l'utilisation d'une adresse IP statique via mon routeur? L'avez-vous essayé de cette façon comme alternative?

gray_fox
la source
0

Je suis le même tutoriel pour configurer le WAP sur mon Pi.

Malheureusement, le service DHCP ne démarre pas au démarrage. Après le démarrage, la vérification du service montre qu'il ne fonctionne pas: service isc-dhcp-server status Statut du serveur DHCP ISC: dhcpd n'est pas en cours d'exécution

En fait, l'interface wlan0 n'obtient pas d'adresse IP et c'est pourquoi le serveur DHCP ne démarre pas.

Je suis les instructions dans le lien ci-dessous, mais cela ne résout pas le problème: http://sirlagz.net/2013/02/10/how-to-use-the-raspberry-pi-as-a-wireless- access-pointrouter-part-3b /

Ensuite, je suis les instructions de cet article: 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

Après le redémarrage, le serveur DHCP est en cours d'exécution.

Également une autre solution possible que je ne teste pas: oups, je n'ai pas assez de réputation pour poster plus de 2 liens.

esa1966
la source
0

J'ai eu le même problème. wlan0 perd en quelque sorte son adresse IP statique au démarrage du serveur DHCP. Editez / etc / default / ifplugd et changez ceci:

INTERFACES="eth0"
HOTPLUG_INTERFACES="eth0"
Stef
la source
Cette réponse est correcte! Je ne sais pas pourquoi a voté contre
flotto
J'avais le démarrage pi, et parfois il se retrouvait avec une adresse 169.xx.xx.xx, et parfois l'adresse statique que je voulais. Cela a été fait pour obtenir de manière fiable l'adresse statique. Merci @Stef!
Peter Bagnall
0

Alternativement, vous pouvez créer un mini-service qui redémarre le wlan0, en vous assurant qu'il démarre au démarrage avant hostapd et isc-dhcp-server.

Créez le nouveau script /etc/init.d/wlan0-restart

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

avec le contenu suivant:

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

Exécutez ensuite les commandes suivantes:

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

Redémarrez et vérifiez que wlan0 a son adresse IP statique et que le serveur isc-dhcpd est en cours d'exécution:

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
la source