2016-12-07 1 views
0

Je voudrais configurer une adresse IP wlan0 statique et me connecter via ssh.Raspbian: Forcer une adresse IP wlan0 statique

Voici mon /etc/network/interfaces:

source-directory /etc/network/interfaces.d 
auto lo 
iface lo inet loopback 

auto eth0 
iface eth0 inet static 
adress 192.168.0.2 
netmask 255.255.255.0 

auto wlan0 
allow-hotplug wlan0 
iface wlan0 inet static 
address 192.168.100.102 
netmask 255.255.255.0 
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf 

Quand je fais ifconfig mes wlan0 et les interfaces eth0 sont correctement configurés:

Cependant, quand je veux ssh ma framboise par wifi, mon routeur Wifi donner à mon framboise l'ip: 192.168.100.116.

Comment puis-je forcer mon routeur Wifi à donner 192.168.100.102 à mon rapsberry pi? De plus, mon routeur Wifi donne à mes framboises parfois 192.168.100.102 et parfois 192.168.100.116

Je ne sais pas pourquoi

Répondre

1

Connectez-vous sur votre interface de gestion du routeur et (si elle dispose de cette fonctionnalité, la plupart ne l'avoir) réserver un DHCP adresse sur le routeur pour votre client sélectionné, de sorte que le client spécifique a toujours la même adresse IP. Voir this article pour plus d'informations.

2

J'ai rencontré des problèmes similaires lorsque je voulais connecter mon Rasperry Pi 2 avec Raspbian Jessie Lite dans une configuration sans tête pour l'accès en utilisant SSH à partir de mon PC Windows 10 avec PuTTY. Dans mon cas, il s'est avéré que le démon Ahavi (une implémentation de zeroconf) était en conflit avec les options DHCP et de serveur de noms de mon routeur.

Raspbian Jessie et Raspbian Jessie Lite sont préconfigurés avec un avahi et un client DHCP pour la configuration automatique du réseau. Dans la plupart des cas, cela fonctionnera probablement bien, mais si ce n'est pas le cas, les choses s'aggraveront avec des effets secondaires imprévisibles. Au lieu d'aller trop loin dans les détails (c'est vraiment une longue histoire), je vais juste résumer ici ce que j'ai fait et pourquoi. Il y a trop de problèmes possibles et je ne veux pas vous pousser dans la mauvaise direction. Essaye le. Si cela échoue, cherchez une autre approche ou laissez un commentaire pour clarification.

Maintenant, nous allons mouiller les pieds:

  1. Essayez d'abord sur une carte SD non productive avec une nouvelle copie de Jessie Raspbian (pour les serveurs sans tête, je préfère Raspbian Jessie Lite).

  2. Démarrez le Raspberry Pi avec un clavier et un moniteur connecté et connectez-vous avec pi utilisateur. Lancez raspi-config avec sudo raspi-config et assurez-vous d'avoir activé le serveur SSH (menu 7 Advanced Options -> A4 SSH). Obtenir votre adresse IP actuelle pour eth0 avec ifconfig.

  3. Essayez de vous connecter à cette adresse via ethernet en utilisant ssh. Si vous ne pouvez pas vous connecter, résolvez d'abord ce problème. Vous ne pouvez pas vous connecter via WLAN à ce stade. Si votre connexion réussit, vous pouvez effectuer le reste de votre configuration en utilisant cette connexion via ssh.

  4. Purger le avahi-daemon

    $ sudo apt-get purge avahi-daemon

Ne vous inquiétez pas sur le message d'erreur «rmdir: n'a pas réussi à enlever «/var/run/avahi-daemon »: Répertoire non vide. Ceci est lié à un socket vide et un fichier pid, qui ne peuvent actuellement pas être supprimés. Vous pouvez ignorer ce message ou supprimer le répertoire manuellement, mais cela ne vous fera pas de mal au cas où vous le quitteriez.

$ sudo rm -r /var/run/avahi-daemon 
  1. Configurer/etc/network/interfaces

Il est important de savoir que nous avons besoin qu'un seul changement dans ce fichier. Ouvrez/etc/network/interfaces pour les modifications avec l'éditeur de votre choix (remarque: si vous avez suivi cette procédure, vim étendu 1: 1 n'est pas encore installé).

$ sudo nano /etc/network/interfaces 

Ajouter la ligne auto eth0 juste avant la ligne existante iface eth0 inet manual. C'est tout ce que nous avons à faire ici est ici. Après les changements le fichier devrait ressembler à ceci:

# interfaces(5) file used by ifup(8) and ifdown(8) 

# Please note that this file is written to be used with dhcpcd 
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf' 

# Include files from /etc/network/interfaces.d: 
source-directory /etc/network/interfaces.d 

auto lo 
iface lo inet loopback 

auto eth0 
iface eth0 inet manual 

allow-hotplug wlan0 
iface wlan0 inet manual 
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf 

allow-hotplug wlan1 
iface wlan1 inet manual 
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf 

Note: assurez-vous de lire et de comprendre les commentaires sur le dessus du fichier!

  1. Configurer le démon client DHCP

Ensuite, comme indiqué dans les commentaires du fichier édité précédemment, ajoutez la configuration IP statique à la fin du fichier de configuration le démon client DHCP.

Il peut sembler idiot d'utiliser un client DHCP si nous allons utiliser des adresses IP statiques de toute façon. Toutefois, lorsque j'ai essayé de supprimer le démon client DHCP, j'ai rencontré de nouveaux problèmes de configuration et/ou de dépendance. Finalement, j'ai décidé de rester aussi proche de la configuration standard que possible et de la laisser telle quelle.

La configuration est effectuée à la toute fin dans le fichier /etc/dhcpcd.conf (vérifiez l'orthographe correcte). La dernière ligne du fichier devrait indiquer: 'nohook lookup-hostname'. Alors ouvrons le fichier dans l'éditeur et descendons au bas du fichier.

$ sudo nano /etc/dhcpcd.conf 

Ajoutez ici la définition IP statique. Dans mon cas, les définitions au /etc/dhcpcd.conf de ressemblent à ceci:

nohook lookup-hostname 

# static ip configuration for eth0 and wlan0 
interface eth0 
static ip_address=192.168.1.61/24 
static routers=192.168.1.1 
static domain_name_servers=192.168.1.1 8.8.8.8 

interface wlan0 
static ip_address=192.168.1.62/24 
static routers=192.168.1.1 
static domain_name_servers=192.168.1.1 8.8.8.8 

Notez que la syntaxe est différente de la syntaxe utilisée dans /etc/network/interfaces. Pour un réseau de classe C complet, le masque de réseau doit être fourni sous la forme d'un/24 à la fin de l'adresse IP. Pour plus de détails, consultez le man dhcpcd.conf.

  1. Reboot et tester votre configuration avec eth0

Après le prochain redémarrage, vous devriez avoir une configuration de réseau fiable avec des adresses IP statiques. Mais rappelez-vous, nous ne sommes pas encore finis et seulement eth0 travaillera.À ce stade, même aucune adresse IPv4 ne sera affichée pour wlan0 si ifconfig est émise

En cas d'échec et si vous n'avez rien fait de mal jusqu'ici (vérifiez soigneusement les fautes de frappe), vous avez un autre problème à résoudre premier; Dans ce cas, cette solution n'est probablement pas pour vous.

  1. Configurer WLAN

Pour configurer WLAN, nous devons modifier /etc/wpa_supplicant/wpa_supplicant.conf et ajouter une configuration de réseau à elle.

Dans mon cas, j'utilise WPA/PSK pour un accès sécurisé et après avoir modifié le code du pays et en ajoutant l'entrée du réseau, le contenu du fichier ressemble à ceci:

country=CH 
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev 
update_config=1 

# home network; allow all valid ciphers 
network={ 
    ssid="home" 
    scan_ssid=1 
    key_mgmt=WPA-PSK 
    psk="very secret passphrase" 
} 

ssid = "home "est le nom du réseau WLAN (SSID) du routeur WLAN ou du point d'accès.

scan_ssid = 1 analyse les SSID cachés. Ceci est une pratique habituelle mais peut ralentir le processus d'analyse.

key_mgmt = WPA-PSK définit que le protocole de gestion de clés pré-partagées WPA sera utilisé. Psk = "phrase secrète très secrète" définit votre mot de passe pour accéder au routeur.

Remplacez les valeurs attribuées à ssid et psk par les valeurs réelles de votre accès WLAN sécurisé. Il existe plusieurs protocoles pris en charge, certains nécessitant d'autres options et plus.

Pour plus d'informations, veuillez consulter le man wpa_supplicant.conf.

  1. Reboot et tester votre configuration avec wlan0

Maintenant, il est temps de redémarrer et wlan0 test. L'adresse IP configurée pour wlan0 devrait maintenant apparaître si ifconfig est émise.

Si tel est le cas, vous devriez pouvoir accéder au Rasperry Pi en utilisant ssh avec l'adresse IP configurée pour wlan0.

J'espère que vous êtes heureux et tout fonctionne bien pour vous jusqu'à présent. Si c'est le cas, je pourrais arrêter d'écrire ici et vous laisser seul. Mais attendez, il y a plus!

  1. Deux connexions réseau, est-ce logique?

Si vous vous connectez au Raspberry Pi à partir du même réseau sur les deux, eth0 et wlan0 et émettre un ifconfig de jeter un oeil sur les paquets transmis et reçus ou octets, vous reconnaîtrez que même vous connecté à la IP pour wlan0 la plupart du trafic passe par eth0.

Je ne peux pas expliquer pourquoi c'est le cas, mais évidemment, d'une certaine manière, les paquets sont routés le long du chemin le plus rapide qui semble bon jusqu'à présent.

Cependant, j'ai vu des situations rares où ce comportement était indésirable et ralenti mes connexions.Puisque j'utilise mon Raspberry Pi soit près de mon routeur en utilisant une connexion filaire à eth0 ou plus éloignée du routeur sans accès à un câble en utilisant wlan0, j'ai décidé d'arrêter wlan0 si un câble avec une connexion active au routeur est attaché à eth0.

Pour ce faire, je créé le script /home/pi/ifdown-wlan-if-not-needed.sh

#!/bin/sh 
#### Shutdown wlan0 
# Test eth0 for a cable attached and 
# shutdown wlan0 if this is the case. 
### 
sleep 30 
cable=$(cat /sys/class/net/eth0/carrier) 
echo $cable 
if [ "$cable" = "1" ]; then 
    sudo ifdown wlan0 
fi 
exit 0 

J'ai mis le script exécutable

$ chmod +x /home/pi/ifdown-wlan-if-not-needed.sh 

Et ajouté pour l'exécution après le redémarrage avec crontab -e à la crontab de l'utilisateur pi.

@reboot /home/pi/ifdown-wlan-if-not-needed.sh 
  1. Nom à la résolution d'adresse IP

Jusqu'à présent, je n'ai pas encore abordé le nom de problème de résolution d'adresse IP. La meilleure façon de faire cela dépend de votre équipement réseau et de votre cas d'utilisation.

Mon routeur permet de lier les noms aux adresses MAC, noms d'hôtes et adresses IPv4. Cependant, pour une raison quelconque, aucune de ces options ne fonctionne vraiment. Parfois, cela fonctionne en utilisant simplement le nom donné, d'autres fois le suffixe .home est nécessaire. Parfois, les noms disparaissent de la liste ou aucune résolution de nom n'a lieu, même si tout semble correct.

J'ai finalement défini les adresses dans le fichier C: \ Windows \ System32 \ drivers \ etc \ hosts de mon PC Windows et de mon Notebook. Ce n'est certainement pas l'état de l'art mais fonctionne de manière fiable et sans tracas.

Cependant, je ne peux pas garantir que ce que j'ai fait fonctionne pour vous aussi, mais j'espère que cela vous met sur la bonne voie pour résoudre votre problème. J'utilise ma configuration depuis la sortie de Raspbian Jessie il y a environ un an. Il a survécu à toutes les mises à jour sans tracas jusqu'à présent.

Bonne chance!