Como configurar várias redes WiFi?

113

Eu vou e volto de casa para a escola com o meu Pi. Acabei de fazer o WiFi funcionar ontem à noite em casa usando, em wpa.confvez de wpa_supplicant.confcomo o livro que eu estava usando teve a caminhada por isso. Notei que muitos parecem usar, wpa_supplicantmas não sei por que ...

De qualquer forma, sei como tornar o IP do WiFi estático para minha rede doméstica, mas como faço para configurar a conexão automática ao WiFi da minha escola e usar um IP estático diferente para essa rede?

Para a rede, apenas adiciono outro network={}no meu wpa.confarquivo? Para o segundo IP estático, como vinculo isso à rede da escola?

Chef Flambe
fonte

Respostas:

106

Edite /etc/wpa_supplicant/wpa_supplicant.conf e adicione id_str = "school" nas escolas wpa info e id_str = "home" nas suas casas wpa info. Seu arquivo agora deve ser semelhante a este:

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

Em seguida, configure / etc / network / interfaces com o iface school inet static e o iface home inet static nele, para que se pareça com o seguinte:

Isso se aplica ao Raspbian Wheezy antes de 05/05/2015 para mais tarde (e Jessie) Consulte Como configurar redes / WiFi / IP estático

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
fonte
Vale a pena notar: Se eu entendi a documentação corretamente, para usar essa abordagem, você deve ter uma propriedade id_str para TODAS as redes no seu arquivo wpa_supplicant.conf. Caso contrário, isso não funcionará. Você pode confirmar?
PICyourBrain
Não acredito que seja esse o caso.
les
3
Essa abordagem funciona, no entanto, é possível alternar o WiFi sem precisar reiniciar o Pi?
MetalGodwin
2
Se não for id_strdado, o valor será default.
Raptor
1
@MetalGodwin Você pode usar wpa_clicomo sugerido aqui: raspberrypi.org/forums/viewtopic.php?t=179387
iwillnot
34

Recentemente, deparei com um aplicativo de console que classifica toda a configuração sem fio. Você também pode usar esta ferramenta para configurar a interface da LAN.

sudo apt-get install wicd-curses

Ele instalará muitos outros pacotes, mas executa seu próprio daemon em segundo plano. Isso gerencia as redes e garante a conexão com as que você deseja. Execute-o com:

sudo wicd-curses

Tela capturada de wicd-maldições

Se você receber uma mensagem dizendo que nenhuma rede foi detectada, pressione P(deve ser maiúsculo), digite [SHIFT] p), digite wlan0 no campo da interface sem fio e pressione F10 para salvar.

  1. R para atualizar a lista.
  2. Use os cursores do teclado para navegar para cima e para baixo na lista
  3. Pressione para a direita para configurar a conexão sem fio
  4. Pressione algumas vezes e marque "Conectar automaticamente a esta rede"
  5. Pressione algumas vezes novamente e digite sua senha no campo chave
  6. Pressione F10 para salvar
  7. Comece de 1 para fazer isso novamente para outras redes

insira a descrição da imagem aqui

Pode ser necessário pressionar Cpara conectar-se ao ponto de acesso. Se você estava conectado via cabo, isso provavelmente matará a interface da LAN e ativará a conexão sem fio.

Ele também gerencia a conexão para se reconectar a qualquer ponto de acesso sem fio configurado, se cair por qualquer motivo, mas também tentará se conectar a qualquer rede disponível, como nos Windows, Macintosh ou Linux Desktops.

Espero que ajude!

Piotr Kula
fonte
2
esse tipo de ferramenta é exatamente o que eu estava procurando. toda a flexibilidade oferecida pela GUI, mas terminal. Obrigado!
FoamyGuy
Upvote: Depois de executar isso, fiz uma varredura avançada de IP das duas sub-redes e meu Rpi3 aparece nas duas. Curiosamente, quando fui instalar isso inicialmente, ele me disse que já tinha a versão mais recente.
SDsolar
Um detalhe menor: para obter um alcance extra, estou usando wlan1 com uma antena externa; portanto, em maldições, tive que entrar em prefs para especificar esse adaptador. Não havia necessidade de desligar o wlan0, mas eu fiz assim mesmo com o sudo ifcongig wlan0 desativado.
SDsolar 16/03/19
32

Com a Jessieversão Raspbian , você não precisa editar o interfacearquivo. Apenas atualizar o wpa_supplicantarquivo com várias redes seria suficiente. Aqui está como fica -

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

Isso funcionou para mim e meu wifi está sempre conectado à lista de redes disponíveis mencionadas no arquivo acima. Espero que ajude.

Girish Sortur
fonte
23

Na verdade, você pode adicionar a opção de prioridade. Igual a:

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
}

prioridade: quando várias redes estão disponíveis simultaneamente, a rede com o maior valor de prioridade é selecionada.

id_str: para cada rede, você pode atribuir a esse parâmetro um valor específico (uma string). Se nenhum for fornecido, "padrão" será usado como sequência de texto. Essa cadeia é usada em / etc / network / interfaces como um identificador de interface virtual. Isso permite a criação de blocos de configuração específicos para cada rede. O único requisito é ter a interface física usando o método "inet manual" (este é um DEVE).

les
fonte
Apenas checando aqui, a prioridade está entre asteriscos? Pelo que li, eles não devem estar entre asteriscos duplos, mas posso estar errado aqui.
ericmjl
@ericmjl Ele tentou colocar o código em negrito, eu vou editá-lo.
Patrick Cook
Existe uma maneira de fazer a varredura automática automaticamente e verificar se uma rede de prioridade mais alta está disponível e comuta?
Michal
@ Michael Sim, tem um processo em segundo plano em execução que faz exatamente isso.
les
@les Como isso funcionaria, qual comando?
luckydonald