Как настроить несколько сетей WiFi?

113

Я иду туда и обратно из дома в школу с моим Пи. Я только вчера включил WiFi, работая дома, wpa.confа не wpa_supplicant.confкак книга, которую я использовал. Я заметил, что многие, кажется, используют, wpa_supplicantно я не уверен, почему ...

В любом случае, я знаю, как сделать IP-адрес Wi-Fi статичным для моей домашней сети, но как мне настроить автоматическое подключение к школьному Wi-Fi и использовать другой статический IP-адрес для этой сети?

Для сети я просто добавить еще один network={}в моем wpa.confфайле? Для второго статического IP-адреса, как мне связать это со школьной сетью?

Шеф-повар Фламбе
источник

Ответы:

106

Отредактируйте /etc/wpa_supplicant/wpa_supplicant.conf и добавьте id_str = "school" под информацией wpa школ и id_str = "home" под информацией wpa ваших домов. Ваш файл должен выглядеть примерно так:

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

Затем установите / и т.д. / сеть / интерфейсы с IFACE школы инет статические и IFACE дома инет статические в это так выглядит следующим образом :

Это относится к Raspbian Wheezy до 2015-05-05 и позже (и Джесси). См. Как настроить сеть / WiFi / Статический 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>
11chubby11
источник
Возможно, стоит отметить: если я правильно понимаю документацию, для использования этого подхода у вас должно быть свойство id_str для КАЖДОЙ сети в вашем файле wpa_supplicant.conf. В противном случае это не сработает. Можешь подтвердить?
PICyourBrain
Я не верю, что это так.
Les
3
Этот подход работает, однако возможно ли переключить WiFi без перезагрузки Pi?
MetalGodwin
2
Если нет id_strданных, значение будет default.
Raptor
1
@MetalGodwin Вы можете использовать, wpa_cliкак предлагается здесь: raspberrypi.org/forums/viewtopic.php?t=179387
iwillnot
34

Недавно я наткнулся на консольное приложение, которое разбирает все настройки беспроводной сети. Вы также можете использовать этот инструмент для настройки интерфейса локальной сети.

sudo apt-get install wicd-curses

Он установит довольно много других пакетов, но в фоновом режиме запускает своего собственного демона. Это управляет сетями и обеспечивает подключение к тем, которые вы хотите. Запустите это с:

sudo wicd-curses

Скриншот вик-проклятий

Если вы получили сообщение о том, что сети не обнаружены, нажмите P(должно быть заглавной, поэтому используйте [SHIFT] p) и введите wlan0 в поле беспроводного интерфейса и нажмите F10 для сохранения.

  1. R обновить список.
  2. Используйте курсоры на клавиатуре для перемещения вверх и вниз по списку
  3. Нажмите вправо, чтобы настроить беспроводное соединение
  4. Нажмите несколько раз и установите флажок «Автоматически подключаться к этой сети».
  5. Нажмите несколько раз еще раз и введите свой пароль в поле ключа.
  6. Нажмите F10, чтобы сохранить
  7. Начните с 1, чтобы сделать это снова для любых других сетей

введите описание изображения здесь

Возможно, вам придется нажать, Cчтобы подключиться к точке доступа. Если вы были подключены через кабель, это, скорее всего, убьет интерфейс локальной сети и вызовет беспроводную связь.

Он также управляет соединением, поэтому он будет повторно подключаться к любым настроенным точкам беспроводного доступа, если он по какой-либо причине выпадет, но он также попытается подключиться к любым доступным сетям, как в Windows, Macintosh или Linux Desktops.

Надеюсь, это поможет!

Петр Кула
источник
2
этот тип инструмента - именно то, что я искал. вся гибкость, предлагаемая графическим интерфейсом, но вместо терминала. Спасибо!
FoamyGuy
Upvote: После запуска я сделал Advanced IP Scan для двух подсетей, и мой Rpi3 обнаружился в обеих. Интересно, что когда я пошел, чтобы установить это изначально, он сказал мне, что у меня уже была последняя версия.
SDsolar
Одна небольшая деталь: для получения дополнительного диапазона я использую wlan1 с внешней антенной, поэтому в проклятиях мне пришлось указывать этот адаптер в prefs. Не было необходимости отключать wlan0, но я все равно сделал это с помощью sudo ifcongig wlan0 down.
SDsolar
32

С Jessieвыпуском Raspbian вам не нужно редактировать interfaceфайл. Достаточно просто обновить wpa_supplicantфайл несколькими сетями. Вот как это выглядит -

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

Это сработало для меня, и мой Wi-Fi всегда подключен к списку доступных сетей, упомянутых в приведенном выше файле. Надеюсь, это поможет.

Гириш Сортур
источник
23

На самом деле вы можете добавить приоритетную опцию. Вот так:

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
}

приоритет: если одновременно доступно несколько сетей, выбирается сеть с наивысшим значением приоритета.

id_str: для каждой сети вы можете присвоить этому параметру определенное значение (строку). Если ничего не указано, в качестве текстовой строки используется «default». Эта строка используется в / etc / network / interfaces в качестве идентификатора виртуального интерфейса. Это позволяет создавать определенные блоки конфигурации для каждой сети. Единственное требование - наличие физического интерфейса с использованием метода «inet manual» (это ОБЯЗАТЕЛЬНО).

ле
источник
Просто дважды проверьте здесь, приоритет заключен в звездочки? Из того, что я прочитал, они не должны быть заключены в двойные звездочки, но я могу ошибаться здесь.
ericmjl
@ericmjl Он попытался выделить код, я его отредактирую.
Патрик Кук
Есть ли способ сделать так, чтобы он автоматически повторно сканировал и видел, доступна ли сеть с более высоким приоритетом и переключался?
Михал
@Michal Да, есть фоновый процесс, который делает именно это.
Les
@les Как это будет работать, какая команда?
luckydonald