Come configurare più reti WiFi?


113

Vado avanti e indietro da casa a scuola con il mio Pi. Ho appena fatto funzionare il WiFi la scorsa notte a casa usando wpa.confinvece che wpa_supplicant.confcome libro che stavo usando aveva invece la possibilità di farlo. Ho notato che molti sembrano usare wpa_supplicantma non so perché ...

Ad ogni modo, so come rendere l'IP WiFi statico per la mia rete domestica, ma come posso impostare le cose per l'auto-connessione al mio WiFi scolastico e usare un IP statico diverso per quella rete?

Per la rete ne devo aggiungere un altro network={}nel mio wpa.conffile? Per il secondo IP statico come posso collegarlo alla rete scolastica?

Risposte:


106

Modifica /etc/wpa_supplicant/wpa_supplicant.conf e aggiungi id_str = "scuola" sotto le informazioni di scuola wpa e id_str = "casa" sotto le tue informazioni di casa wpa. Il file ora dovrebbe essere simile al seguente:

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

Quindi imposta / etc / network / interfaces con iface school inet static e iface home inet static in esso in modo che assomigli a quanto segue:

Questo vale per Raspbian Wheezy prima del 05-05-2015 per le versioni successive (e Jessie) Vedi Come si imposta la rete / WiFi / IP statico

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>

Vale la pena notare: se ho compreso correttamente la documentazione, per utilizzare questo approccio, è necessario disporre della proprietà id_str per OGNI rete nel file wpa_supplicant.conf. Altrimenti non funzionerà. Puoi confermare?
PICyourBrain

Non credo che sia così.
les

3
Questo approccio funziona, tuttavia, è possibile cambiare WiFi senza dover riavviare il Pi?
MetalGodwin,

2
Se non id_strspecificato, il valore sarà default.
Raptor

1
@MetalGodwin Puoi usare wpa_clicome suggerito qui: raspberrypi.org/forums/viewtopic.php?t=179387
iwillnot

34

Di recente mi sono imbattuto in un'applicazione console che ordina tutta la configurazione wireless. È inoltre possibile utilizzare questo strumento per configurare l'interfaccia LAN.

sudo apt-get install wicd-curses

Installerà molti altri pacchetti ma esegue il proprio demone in background. Questo gestisce le reti e si assicura che ti colleghi a quelli che desideri. Eseguilo con:

sudo wicd-curses

Schermata di maledizioni di Wicd

Se ricevi un messaggio che dice che non sono state rilevate reti, premi P(deve essere maiuscola, quindi usa [SHIFT] p) e digita wlan0 nel campo dell'interfaccia wireless e premi F10 per salvare.

  1. R per aggiornare l'elenco.
  2. Utilizzare i cursori sulla tastiera per spostarsi in alto e in basso nell'elenco
  3. Premi il pulsante destro per configurare la connessione wireless
  4. Premi alcune volte verso il basso e seleziona "Connetti automaticamente a questa rete"
  5. Premere di nuovo alcune volte verso il basso e digitare la password nel campo chiave
  6. Premere F10 per salvare
  7. Inizia da 1 per farlo di nuovo per qualsiasi altra rete

inserisci qui la descrizione dell'immagine

Potrebbe essere necessario premere Cper connettersi al punto di accesso. Se sei stato collegato via cavo, molto probabilmente ucciderà l'interfaccia LAN e visualizzerai il wireless.

Gestisce anche la connessione, quindi si riconnetterà a tutti i punti di accesso wireless configurati se si interrompe per qualsiasi motivo, ma proverà anche a connettersi a tutte le reti disponibili, proprio come nei desktop Windows, Macintosh o Linux.

Spero che sia d'aiuto!


2
questo tipo di strumento è esattamente quello che stavo cercando. tutta la flessibilità offerta dalla GUI, ma invece il terminale. Grazie!
FoamyGuy

Upvote: Dopo aver eseguito questo ho fatto una scansione IP avanzata delle due sottoreti e il mio Rpi3 si presenta su entrambi. È interessante notare che quando sono andato a installarlo inizialmente, mi ha detto che avevo già l'ultima versione.
SDsolar

Un dettaglio minore: per ottenere una portata extra sto usando wlan1 con un'antenna esterna, quindi in maledizioni ho dovuto andare in prefs per specificare quell'adattatore. Non è stato necessario chiudere wlan0 ma l'ho fatto comunque con sudo ifcongig wlan0 down.
SDsolar

32

Con la Jessieversione di Raspbian , non è necessario modificare il interfacefile. Basta aggiornare il wpa_supplicantfile con più reti. Ecco come appare -

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

Questo ha funzionato per me e il mio wifi è sempre collegato all'elenco delle reti disponibili menzionato nel file sopra. Spero che sia d'aiuto.


23

In realtà è possibile aggiungere l'opzione di priorità. Così:

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à: quando sono disponibili più reti contemporaneamente, viene selezionata quella con il valore di priorità più alto.

id_str: per ogni rete, puoi assegnare a questo parametro un valore specifico (una stringa). Se non viene fornito nessuno, "default" viene utilizzato come stringa di testo. Questa stringa è usata in / etc / network / interfaces come identificatore di interfaccia virtuale. Ciò consente di creare blocchi di configurazione specifici per ciascuna rete. L'unico requisito è avere l'interfaccia fisica usando il metodo "inet manual" (questo è DEVE).


Basta ricontrollare qui, la priorità è racchiusa tra asterischi? Da quello che ho letto, non dovrebbero essere racchiusi tra doppi asterischi, ma potrei sbagliarmi qui.
ericmjl,

@ericmjl Ha provato a mettere in grassetto il codice, lo modificherò.
Patrick Cook,

C'è un modo per farlo automaticamente scansionare e vedere se è disponibile una rete con priorità più alta e passare?
Michal

@Michal Sì, hai un processo in background che fa proprio questo.
les

@les Come funzionerebbe, quale comando?
luckydonald,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.