Jak skonfigurować wiele sieci WiFi?

113

Chodzę tam iz powrotem z domu do szkoły z moim Pi. Właśnie wczoraj wieczorem uruchomiłem WiFi w domu, wpa.confzamiast tego, wpa_supplicant.confże książka, z której korzystałem, miała w zamian za to przejście. Zauważyłem, że wiele z nich korzysta, wpa_supplicantale nie jestem pewien, dlaczego ...

W każdym razie wiem, jak ustawić statyczny adres IP Wi-Fi dla mojej sieci domowej, ale jak skonfigurować automatyczne łączenie się z moją szkolną siecią Wi-Fi i użyć innego statycznego adresu IP dla tej sieci?

Czy dla sieci po prostu dodaję inny plik do network={}mojego wpa.confpliku? W przypadku drugiego statycznego adresu IP jak powiązać to z siecią szkolną?

Szef kuchni Flambe
źródło

Odpowiedzi:

106

Edytuj /etc/wpa_supplicant/wpa_supplicant.conf i dodaj id_str = "szkoła" w ramach informacji o szkołach wpa i id_str = "home" w obszarze informacji o wpa swoich domów. Twój plik powinien teraz wyglądać podobnie do tego:

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

Następnie skonfiguruj / etc / network / interfaces z iface school inet static i iface home inet static w nim, aby wyglądało to tak:

Dotyczy to Raspbian Wheezy przed 2015-05-05 dla późniejszych (i Jessie) Zobacz Jak skonfigurować sieć / WiFi / Statyczne IP

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>
11 grube 11
źródło
Warto zauważyć: jeśli dobrze rozumiem dokumentację, aby skorzystać z tego podejścia, musisz mieć właściwość i id_str KAŻDEJ sieci w pliku wpa_supplicant.conf. W przeciwnym razie to nie zadziała. Czy możesz potwierdzić?
PICyourBrain
Nie sądzę, żeby tak było.
les
3
To podejście działa jednak, czy można przełączyć WiFi bez konieczności restartowania Pi?
MetalGodwin
2
Jeśli nie id_strpodano, wartość będzie default.
Raptor
1
@MetalGodwin Możesz używać wpa_clizgodnie z sugestią tutaj: raspberrypi.org/forums/viewtopic.php?t=179387
iwillnot
34

Niedawno natknąłem się na aplikację konsolową, która rozwiązuje całą konfigurację bezprzewodową. Możesz także użyć tego narzędzia do skonfigurowania interfejsu LAN.

sudo apt-get install wicd-curses

Zainstaluje jeszcze kilka innych pakietów, ale w tle uruchamia własnego demona. To zarządza sieciami i zapewnia połączenie z tymi, które chcesz. Uruchom z:

sudo wicd-curses

Zrzut ekranu przekleństw wicd

Jeśli pojawi się komunikat informujący, że nie wykryto sieci, naciśnij P(musi być duże, więc użyj [SHIFT] p) i wpisz wlan0 w polu interfejsu bezprzewodowego i naciśnij F10, aby zapisać.

  1. R aby odświeżyć listę.
  2. Użyj kursorów na klawiaturze, aby poruszać się w górę i w dół listy
  3. Naciśnij w prawo, aby skonfigurować połączenie bezprzewodowe
  4. Naciśnij kilka razy i zaznacz „Automatycznie połącz z tą siecią”
  5. Naciśnij jeszcze kilka razy i wpisz hasło w polu klucza
  6. Naciśnij F10, aby zapisać
  7. Zacznij od 1, aby zrobić to ponownie dla innych sieci

wprowadź opis zdjęcia tutaj

Być może trzeba będzie nacisnąć, Caby połączyć się z punktem dostępu. Jeśli byłeś podłączony kablem, najprawdopodobniej zabije to interfejs LAN i przyniesie połączenie bezprzewodowe.

Zarządza także połączeniem, więc połączy się z dowolnym skonfigurowanym punktem dostępu bezprzewodowego, jeśli z jakiegokolwiek powodu przestanie działać, ale spróbuje także połączyć się z dowolną dostępną siecią, tak jak w Windows, Macintosh lub Linux Desktop.

Mam nadzieję, że to pomoże!

Piotr Kula
źródło
2
tego typu narzędzie było dokładnie tym, czego szukałem. cała elastyczność oferowana przez GUI, ale zamiast tego terminal. Dziękuję Ci!
FoamyGuy
Upvote: Po uruchomieniu tego zrobiłem Zaawansowane skanowanie IP dwóch podsieci i moje Rpi3 pokazuje się na obu z nich. Co ciekawe, kiedy początkowo zdecydowałem się na zainstalowanie tego, powiedział mi, że mam już najnowszą wersję.
SDsolar
Jeden drobny szczegół: Aby uzyskać dodatkowy zasięg, używam wlan1 z anteną zewnętrzną, więc w przekleństwach musiałem przejść do prefs, aby określić ten adapter. Nie trzeba było wyłączać wlan0, ale i tak zrobiłem z sudo ifcongig wlan0.
SDsolar
32

W Jessiewersji Raspbian nie musisz edytować interfacepliku. Wystarczy aktualizacja wpa_supplicantpliku w wielu sieciach. Oto jak to wygląda -

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

To działało dla mnie, a moje wifi jest zawsze podłączone do listy dostępnych sieci wymienionych w powyższym pliku. Mam nadzieję, że to pomoże.

Girish Sortur
źródło
23

W rzeczywistości możesz dodać opcję priorytetu. Tak jak:

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
}

priorytet: gdy dostępnych jest wiele sieci jednocześnie, wybierana jest ta o najwyższym priorytecie.

id_str: dla każdej sieci możesz nadać temu parametrowi określoną wartość (ciąg znaków). Jeśli nie zostanie podany żaden, jako ciąg tekstowy zostanie użyty „default”. Ten ciąg jest używany w / etc / network / interfaces jako identyfikator interfejsu wirtualnego. Umożliwia to tworzenie określonych bloków konfiguracji dla każdej sieci. Jedynym wymogiem jest posiadanie interfejsu fizycznego przy użyciu metody „inet manual” (jest to MUSI).

les
źródło
Wystarczy podwójnie sprawdzić tutaj, czy priorytet jest ujęty w gwiazdki? Z tego, co przeczytałem, nie powinny być ujęte w podwójne gwiazdki, ale mogę się tutaj mylić.
ericmjl
@ericmjl Próbował pogrubić kod, zmodyfikuję go.
Patrick Cook
Czy istnieje sposób na automatyczne ponowne skanowanie i sprawdzenie, czy dostępna jest sieć o wyższym priorytecie i zmiana?
Michał
@Michal Tak, uruchom proces w tle, który właśnie to robi.
les
@les Jak to by działało, które polecenie?
luckydonald