Wie richte ich mehrere WiFi-Netzwerke ein?

113

Ich gehe mit meinem Pi von zu Hause zur Schule. Ich habe gerade das WiFi benutzt, das letzte Nacht zu Hause funktioniert hat, wpa.confanstatt, wpa_supplicant.confweil das Buch, das ich benutzte, dafür den Durchgang hatte. Mir ist aufgefallen, dass scheinbar viele verwendet werden, wpa_supplicantaber ich weiß nicht, warum ...

Wie auch immer, ich weiß, wie ich die WLAN-IP für mein Heimnetzwerk statisch machen kann, aber wie richte ich die automatische Verbindung zu meinem Schul-WLAN ein und verwende eine andere statische IP für dieses Netzwerk?

Füge ich für das Netzwerk einfach einen weiteren network={}in meine wpa.confDatei ein? Wie binde ich die zweite statische IP an das Schulnetzwerk?

Küchenchef Flambe
quelle

Antworten:

106

Bearbeiten Sie /etc/wpa_supplicant/wpa_supplicant.conf und fügen Sie id_str = "school" unter den WPA-Informationen der Schule und id_str = "home" unter den WPA-Informationen Ihrer Wohnung hinzu. Ihre Datei sollte jetzt ungefähr so ​​aussehen:

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"
}

Dann richten Sie / etc / network / interfaces mit iface school inet static und iface home inet static so ein, dass es wie folgt aussieht:

Dies gilt für Raspbian Wheezy vor dem 05.05.2015 für später (und Jessie). Siehe Wie richte ich das Netzwerk / WLAN / statische IP ein ?

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
quelle
Beachten Sie Folgendes: Wenn ich die Dokumentation richtig verstehe, müssen Sie in Ihrer Datei wpa_supplicant.conf die Eigenschaft id_str für JEDES Netzwerk haben, um diesen Ansatz zu verwenden. Andernfalls funktioniert das nicht. Kannst du bestätigen?
PICyourBrain
Ich glaube nicht, dass dies der Fall ist.
Les
3
Dieser Ansatz funktioniert, ist es jedoch möglich, WLAN zu wechseln, ohne den Pi neu starten zu müssen?
MetalGodwin
2
Wenn nicht id_strangegeben, wird der Wert sein default.
Raptor
1
@ MetalGodwin Sie können wpa_cliwie hier vorgeschlagen verwenden: raspberrypi.org/forums/viewtopic.php?t=179387
Ich werde nicht
34

Ich bin vor kurzem auf eine Konsolenanwendung gestoßen, die die gesamte drahtlose Konfiguration außer Kontrolle bringt. Mit diesem Tool können Sie auch die LAN-Schnittstelle konfigurieren.

sudo apt-get install wicd-curses

Es wird einige andere Pakete installieren, aber es läuft ein eigener Daemon im Hintergrund. Dies verwaltet die Netzwerke und stellt sicher, dass Sie eine Verbindung zu den gewünschten herstellen. Führen Sie es mit:

sudo wicd-curses

Screenshot von wicd-curses

Wenn Sie die Meldung erhalten, dass keine Netzwerke erkannt wurden, drücken Sie P(muss ein Großbuchstabe sein, verwenden Sie [UMSCHALTTASTE] p), geben Sie wlan0 in das Feld für die drahtlose Schnittstelle ein und drücken Sie zum Speichern F10.

  1. R um die Liste zu aktualisieren.
  2. Verwenden Sie die Cursor auf der Tastatur, um in der Liste nach oben und unten zu navigieren
  3. Drücken Sie rechts, um die drahtlose Verbindung zu konfigurieren
  4. Drücken Sie einige Male und aktivieren Sie "Automatisch mit diesem Netzwerk verbinden"
  5. Drücken Sie erneut einige Male und geben Sie Ihr Passwort in das Schlüsselfeld ein
  6. Drücken Sie zum Speichern F10
  7. Beginnen Sie bei 1, um dies für alle anderen Netzwerke erneut auszuführen

Bildbeschreibung hier eingeben

Möglicherweise müssen Sie drücken C, um eine Verbindung zum Zugangspunkt herzustellen. Wenn Sie über ein Kabel verbunden waren, wird dies höchstwahrscheinlich die LAN-Schnittstelle zerstören und die drahtlose Verbindung herstellen.

Es verwaltet auch die Verbindung, sodass die Verbindung zu konfigurierten drahtlosen Zugriffspunkten wiederhergestellt wird, wenn sie aus irgendeinem Grund unterbrochen wird. Es wird jedoch auch versucht, eine Verbindung zu verfügbaren Netzwerken herzustellen, z. B. auf Windows-, Macintosh- oder Linux-Desktops.

Ich hoffe es hilft!

Piotr Kula
quelle
2
Diese Art von Werkzeug ist genau das, wonach ich gesucht habe. Die ganze Flexibilität, die die GUI bietet, aber stattdessen das Terminal. Danke!
FoamyGuy
Positive Bewertung: Nachdem ich dies ausgeführt habe, habe ich einen erweiterten IP-Scan der beiden Subnetze durchgeführt und mein Rpi3 wird auf beiden angezeigt. Interessanterweise wurde mir bei der erstmaligen Installation mitgeteilt, dass ich bereits die neueste Version besitze.
SDsolar
Ein kleines Detail: Um die Reichweite zu erhöhen, verwende ich wlan1 mit einer externen Antenne. In Flüchen musste ich also die Einstellungen vornehmen, um diesen Adapter festzulegen. Es war nicht nötig, wlan0 auszuschalten, aber ich habe es trotzdem mit sudo ifcongig wlan0 down gemacht.
SDsolar
32

Mit der Raspbian- JessieVersion müssen Sie die interfaceDatei nicht mehr bearbeiten . Ein Update der wpa_supplicantDatei mit mehreren Netzwerken würde ausreichen. So sieht es aus -

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"
}

Dies hat bei mir funktioniert und mein WLAN ist immer mit der Liste der verfügbaren Netzwerke verbunden, die in der obigen Datei aufgeführt sind. Ich hoffe es hilft.

Girish Sortur
quelle
23

Tatsächlich können Sie die Prioritätsoption hinzufügen. Wie so:

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
}

priority: Wenn mehrere Netzwerke gleichzeitig verfügbar sind, wird das Netzwerk mit der höchsten Priorität ausgewählt.

id_str: Für jedes Netzwerk können Sie diesem Parameter einen bestimmten Wert (eine Zeichenfolge) zuweisen. Wenn keine angegeben ist, wird "default" als Textzeichenfolge verwendet. Diese Zeichenfolge wird in / etc / network / interfaces als virtuelle Schnittstellenkennung verwendet. Auf diese Weise können für jedes Netzwerk spezifische Konfigurationsblöcke erstellt werden. Die einzige Voraussetzung ist, dass die physikalische Schnittstelle mit der Methode "inet manual" erstellt wurde (dies ist ein MUSS).

les
quelle
Wenn Sie hier nur doppelt prüfen, ist die Priorität in Sternchen eingeschlossen? Nach dem, was ich gelesen habe, sollten sie nicht in Doppelsternchen eingeschlossen sein, aber ich könnte mich hier irren.
Ericmjl
@ericmjl Er hat versucht, den Code zu fetten, ich werde ihn bearbeiten.
Patrick Cook
Gibt es eine Möglichkeit, es automatisch erneut zu scannen und festzustellen, ob ein Netzwerk mit höherer Priorität verfügbar ist und zu wechseln?
Michal
@Michal Ja, es läuft ein Hintergrundprozess, der genau das tut.
Les
@les Wie würde das funktionieren, welcher Befehl?
Luckydonald