如何设置多个WiFi网络?


113

我带着Pi从家里到学校来回旅行。昨晚我刚在家里使用WiFi,wpa.conf而不是wpa_supplicant.conf使用我正在使用的那本书作为替代。我注意到似乎有很多用处,wpa_supplicant但我不确定为什么...

无论如何,我知道如何使我的家庭网络的WiFi IP成为静态,但如何设置自动连接到学校WiFi的东西,并为该网络使用其他静态IP?

对于网络,是否仅network={}wpa.conf文件中添加另一个?对于第二个静态IP,我如何将其绑定到学校网络?

Answers:


106

编辑/etc/wpa_supplicant/wpa_supplicant.conf并在学校wpa信息下添加id_str =“ school”,并在您的住所wpa信息下添加id_str =“ home”。您的文件现在应类似于以下内容:

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 school inet staticiface home inet static设置/ etc / network / interfaces,如下所示:

这适用于2015-05-05之前的Raspbian Wheezy,以供以后使用(和Jessie)请参阅如何设置网络/ 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>

可能值得注意:如果我正确地理解了文档,为了使用这种方法,您的wpa_supplicant.conf文件中的每个网络都必须具有and id_str属性。否则,这将无法工作。你确定吗?
PICyourBrain 2014年

我认为情况并非如此。
les

3
但是,这种方法可行,是否可以在无需重新启动Pi的情况下切换WiFi?
MetalGodwin

2
如果未id_str给出,则值为default
猛禽

1
@MetalGodwin您可以使用wpa_cli:这里建议raspberrypi.org/forums/viewtopic.php?t=179387
iwillnot

34

最近,我偶然发现了一个控制台应用程序,该控制台应用程序对所有无线配置进行了分类。您也可以使用此工具来配置LAN接口。

sudo apt-get install wicd-curses

它将安装许多其他软件包,但它将在后台运行自己的守护程序。这样可以管理网络,并确保您连接到所需的网络。使用以下命令运行它:

sudo wicd-curses

wicd-curses的屏幕截图

如果收到未检测到网络的消息,请按P(必须为大写字母,因此请使用[SHIFT] p),然后在无线接口字段中键入wlan0,然后按F10保存。

  1. R 刷新列表。
  2. 使用键盘上的光标在列表中向上和向下导航
  3. 按右键配置无线连接
  4. 按下几次,然后选中“自动连接到该网络”
  5. 再次按下几次,然后在关键字段中输入密码
  6. 按F10保存
  7. 从1开始,对其他任何网络再次执行此操作

在此处输入图片说明

您可能需要按C才能连接到接入点。如果通过电缆连接,则很可能会杀死LAN接口并启用无线功能。

它还管理连接,因此如果由于某种原因掉线,它将重新连接到任何已配置的无线访问点,但是它也将尝试连接到任何可用的网络,例如Windows,Macintosh或Linux桌面。

希望能帮助到你!


2
这种工具正是我在寻找的工具。GUI提供的所有灵活性,但可以使用终端。谢谢!
FoamyGuy 2014年

Upvote:运行此命令后,我对两个子网进行了高级IP扫描,我的Rpi3出现在两个子网中。有趣的是,当我最初安装此软件时,它告诉我我已经拥有最新版本。
SDsolar

一个较小的细节:为了获得更大的范围,我将wlan1与外部天线配合使用,因此在诅咒中,我不得不进入prefs来指定该适配器。不需要关闭wlan0,但是无论如何我都是通过sudo ifcongig wlan0 down来完成的。
SDsolar

32

在Raspbian Jessie发行版中,您无需编辑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"
}

这对我有用,我的wifi始终连接到上述文件中提到的可用网络列表。希望能帮助到你。


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:对于每个网络,您都可以为该参数指定一个特定值(字符串)。如果未提供任何内容,则将“默认”用作文本字符串。该字符串在/ etc / network / interfaces中用作虚拟接口标识符。这允许为每个网络创建特定的配置块。唯一的要求是使用“ inet manual”方法使用物理接口(这是必须的)。


只是在这里仔细检查,优先级是否包含在星号中?根据我的阅读,不应将它们括在双星号中,但是我在这里可能是错误的。
ericmjl

@ericmjl他试图加粗代码,我将对其进行编辑。
Patrick Cook

有没有一种方法可以使其自动重新扫描,并查看是否有更高优先级的网络可用并进行切换?
米歇尔

@Michal是的,运行后台进程即可完成该任务。
LES

@les那是怎么工作的,哪个命令?
luckydonald
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.