Comment configurer plusieurs réseaux WiFi?

113

Je vais et viens de la maison à l'école avec mon Pi. Je viens juste de travailler avec le WiFi hier soir à la maison, à la wpa.confplace du wpa_supplicant.conflivre que j’utilisais. J'ai remarqué que beaucoup semblent utiliser, wpa_supplicantmais je ne sais pas pourquoi ...

Quoi qu'il en soit, je sais comment rendre l'IP Wi-Fi statique pour mon réseau domestique, mais comment puis-je configurer l'automatisation de la connexion au Wi-Fi de mon école et utiliser une adresse IP statique différente pour ce réseau?

Pour le réseau, est-ce que j'en ajoute simplement un autre network={}dans mon wpa.conffichier? Pour la deuxième adresse IP statique, comment lier cela au réseau de l’école?

Chef Flambe
la source

Réponses:

106

Modifiez /etc/wpa_supplicant/wpa_supplicant.conf et ajoutez id_str = "école" sous les informations wpa des écoles et id_str = "maison" sous les informations wpa de votre domicile. Votre fichier devrait maintenant ressembler à ceci:

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

network={
    ssid="SCHOOLS NETWORK NAME"
    psk="SCHOOLS PASSWORD"
    id_str="school"
}

network={
    ssid="HOME NETWORK NAME"
    psk="HOME PASSWORD"
    id_str="home"
}

Ensuite, configurez / etc / network / interfaces avec iface school inet static et iface home inet static , afin que le résultat soit le suivant:

Ceci s'applique à Raspbian Wheezy avant le 15/05/2015 pour plus tard (et Jessie). Voir Comment configurer un réseau / WiFi / IP statique

auto lo

iface lo inet loopback
iface eth0 inet dhcp

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

iface school inet static
address <school address>
gateway <school gateway>
netmask <school netmask>

iface home inet static
address <home address>
gateway <home gateway>
netmask <home netmask>
11chubby11
la source
Il convient de noter que si je comprends bien la documentation, pour utiliser cette approche, vous devez avoir la propriété id_str pour TOUS les réseaux dans votre fichier wpa_supplicant.conf. Sinon, ça ne marchera pas. Pouvez-vous confirmer?
PICyourBrain
Je ne crois pas que ce soit le cas.
les
3
Cette approche fonctionne-t-elle, cependant, est-il possible de changer de WiFi sans avoir à redémarrer le Pi?
MetalGodwin
2
Si non id_strdonné, la valeur sera default.
Raptor
1
@ MetalGodwin Vous pouvez utiliser ce wpa_cliqui est suggéré ici: raspberrypi.org/forums/viewtopic.php?t=179387
iwillnot
34

Je suis récemment tombé sur une application console qui trie toute la configuration sans fil. Vous pouvez également utiliser cet outil pour configurer l'interface LAN.

sudo apt-get install wicd-curses

Il installera de nombreux autres packages, mais il exécute son propre démon en arrière-plan. Cela gère les réseaux et garantit que vous vous connectez à ceux que vous souhaitez. Exécutez-le avec:

sudo wicd-curses

Capture d'écran de wicd-curses

Si vous recevez un message indiquant qu'aucun réseau n'est détecté, appuyez sur P(il doit être majuscule, utilisez [SHIFT] p) et tapez wlan0 dans le champ d'interface sans fil, puis appuyez sur F10 pour enregistrer.

  1. R pour rafraîchir la liste.
  2. Utilisez les curseurs du clavier pour parcourir la liste.
  3. Appuyez à droite pour configurer la connexion sans fil
  4. Appuyez plusieurs fois et cochez la case "Se connecter automatiquement à ce réseau"
  5. Appuyez à nouveau plusieurs fois et tapez votre mot de passe dans le champ de clé
  6. Appuyez sur F10 pour enregistrer
  7. Recommencez à partir de 1 pour tous les autres réseaux.

entrez la description de l'image ici

Vous devrez peut-être appuyer sur Cpour vous connecter au point d'accès. Si vous étiez connecté par câble, cela risquerait de tuer l’interface LAN et d’activer le sans fil.

Il gère également la connexion afin de se reconnecter à tous les points d’accès sans fil configurés s’il se déconnecte pour une raison quelconque, mais il tente également de se connecter aux réseaux disponibles, comme dans les postes de travail Windows, Macintosh ou Linux.

J'espère que ça aide!

Piotr Kula
la source
2
Ce type d’outil correspond exactement à ce que je recherchais. toute la flexibilité offerte par l'interface graphique, mais terminal à la place. Je vous remercie!
FoamyGuy
Upvote: Après avoir exécuté ceci, j'ai effectué un scan IP avancé des deux sous-réseaux et mon Rpi3 apparaît sur les deux. Fait intéressant, lorsque je suis allé installer cela au début, cela m'a dit que j'avais déjà la dernière version.
SDsolar
Un détail mineur: pour obtenir une portée supplémentaire, j'utilise wlan1 avec une antenne externe. Il a donc fallu entrer dans les préférences pour spécifier cet adaptateur. Il n'y avait pas besoin de couper wlan0 mais je l'ai quand même fait avec sudo ifcongig wlan0.
SDsolar
32

Avec la Jessieversion Raspbian , vous n’avez pas à modifier le interfacefichier. Il suffit de mettre à jour le wpa_supplicantfichier avec plusieurs réseaux. Voici à quoi ça ressemble -

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

network={
    ssid="SCHOOLS NETWORK NAME"
    psk="SCHOOLS PASSWORD"
    id_str="school"
}

network={
    ssid="HOME NETWORK NAME"
    psk="HOME PASSWORD"
    id_str="home"
}

Cela a fonctionné pour moi et mon wifi est toujours connecté à la liste des réseaux disponibles mentionnés dans le fichier ci-dessus. J'espère que ça aide.

Girish Sortur
la source
23

En fait, vous pouvez ajouter l'option de priorité. Ainsi:

network={
      ssid="open"
      key_mgmt=NONE
      id_str="open"
      priority=3
}

network={
        ssid="secure"
        key_mgmt=WPA-EAP
        proto=WPA2
        group=CCMP
        pairwise=CCMP
        eap=TLS
        ca_cert="/etc/certs/cacert.pem"
        client_cert="/etc/certs/client.pem"
        private_key="/etc/certs/client.key"
        private_key_passwd="somepwd"
        identity="me"
        priority=5
}

network={
        ssid="AndroidAP"
        key_mgmt=WPA-PSK
        proto=WPA2
        pairwise=CCMP
        group=CCMP
        psk="SomeP4ssw0rd"
        priority=4
}


network={
        ssid="Spooky"
        key_mgmt=NONE
        group=WEP104
        psk="A4ABC2FC27412D4D23CAEBCA23"
        priority=2
}

network={
        ssid="another"
        key_mgmt=WPA-PSK
        proto=WPA2
        pairwise=CCMP
        group=CCMP
        psk="A very long and secret passphrase here"
        priority=1
}

priorité: lorsque plusieurs réseaux sont disponibles simultanément, celui avec la valeur de priorité la plus élevée est sélectionné.

id_str: pour chaque réseau, vous pouvez attribuer à ce paramètre une valeur spécifique (une chaîne). Si aucun n'est fourni, "default" est utilisé comme chaîne de texte. Cette chaîne est utilisée dans / etc / network / interfaces en tant qu'identificateur d'interface virtuelle. Cela permet de créer des blocs de configuration spécifiques pour chaque réseau. La seule exigence est que l'interface physique utilise la méthode "inet manual" (c'est un MUST).

les
la source
Juste une double vérification ici, la priorité est entre astérisques? D'après ce que j'ai lu, ils ne sont pas censés être placés entre doubles astérisques, mais je me trompe peut-être ici.
ericmjl
@ericmjl Il a essayé de mettre le code en gras, je vais le modifier.
Patrick Cook
Existe-t-il un moyen d'effectuer une nouvelle analyse automatique et de voir si un réseau de priorité supérieure est disponible et commuté?
Michal
@ Michal Oui, il existe un processus d'arrière-plan en cours d'exécution.
les
@les Comment cela fonctionnerait-il, quelle commande?
luckydonald