我带着Pi从家里到学校来回旅行。昨晚我刚刚使用wpa.conf而不是wpa_supplicant.conf使WiFi能够在家里工作,因为我正在使用的书为此而行。我注意到很多东西似乎都在使用wpa_supplicant,但我不确定为什么...

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

对于网络,我只需在我的network={}文件中添加另一个wpa.conf?到学校网络?

评论

这个问题已经很久了,答案也差不多-大约5年,而最近的修改才3年。解决此问题的当前技术是什么?

#1 楼

编辑/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 static和iface 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年3月31日20:29在

我认为情况并非如此。

–les
2014年11月21日在1:24

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

–金属戈德温
16年7月14日在17:53

如果未提供id_str,则该值为默认值。

–猛禽
17年2月7日在13:35

@MetalGodwin您可以按照此处的建议使用wpa_cli:raspberrypi.org/forums/viewtopic.php?t=179387

–dsapalo
18-10-15在16:18

#2 楼

在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始终连接到上述文件中提到的可用网络列表。希望对您有所帮助。

评论


如果您指定id =,这似乎不起作用,但是如果您为每个参数指定一个priority =,则它确实起作用。

–伊恩·默瑟(Ian Mercer)
10月21日下午3:37

#3 楼

最近,我偶然发现了一个控制台应用程序,该应用程序将所有无线配置都整理了出来。您也可以使用此工具来配置LAN接口。

sudo apt-get install wicd-curses


它将安装许多其他软件包,但在后台运行其自己的守护程序。这样可以管理网络,并确保您连接到所需的网络。使用以下命令运行它: p)并在无线接口字段中输入wlan0,然后按F10保存。



P刷新列表。在列表中向上和向下导航
向右按以配置无线连接
向下按几次并选中“自动连接到此网络”
再次向下按几次并输入密码在键字段中
按F10保存
从1开始对其他任何网络再次执行此操作



您可能必须按R连接到接入点。如果通过电缆连接,很可能会杀死LAN接口并启用无线功能。

它还可以管理连接,因此如果由于任何原因而掉线,它将重新连接到任何已配置的无线访问点原因,但它也会尝试连接到任何可用的网络,就像在Windows,Macintosh或Linux桌面中一样。

希望它会有所帮助!

评论


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

–FoamyGuy
2014年5月24日在21:16

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

– SDsolar
17年3月16日在18:17

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

– SDsolar
17 Mar 16 '17 at 19:03

#4 楼

实际上,您可以添加优先级选项。像这样:

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
16年1月13日在17:17

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

–帕特里克·库克(Patrick Cook)
16 Mar 6 '16 at 5:37

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

– Michal
17 Mar 10 '17 at 10:50

@Michal是的,运行后台进程即可执行此操作。

–les
17-10-3在22:57



@les那是怎么工作的,哪个命令?

–luckydonald
17年12月18日在13:32