我之前曾发布过一个关于如何在rpi上设置静态IP地址的问题,并最终与其他一些问题一起得出了答案,即指向wpa-roam时将wpa-conf更改为/etc/wpa_supplicant/wpa_supplicant.conf,但是为什么这样做有效?

即当我在/etc/network/interfaces文件中有此文件时:

auto lo
iface lo inet loopback

auto wlan0
iface wlan0 inet static
    address 192.168.0.3
    netmask 255.255.255.0
    gateway 192.168.0.1
    broadcast 192.168.0.255
    network 192.168.0.0
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf


假定/etc/wpa_supplicant/wpa_supplicant.conf已正确配置,则此方法无效。

这是iwconfig的相关输出:

wlan0     unassociated  Nickname:"<WIFI@REALTEK>"
          Mode:Managed  Frequency=2.437 GHz  Access Point: Not-Associated   
          Sensitivity:0/0  
          Retry:off   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0


以及ifconfig的相关输出:

wlan0     Link encap:Ethernet  HWaddr ec:1a:59:64:3a:36  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:847 errors:0 dropped:1029 overruns:0 frame:0
          TX packets:759 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:677394 (661.5 KiB)  TX bytes:133345 (130.2 KiB)


但是,一旦将wpa-roam更改为wpa-conf并运行sudo /etc/init.d/networking restart,一切都会神奇地开始工作。什么时候使用wpa-roam?什么时候使用wpa-conf

#1 楼

wpa-roaming是一种可以浏览并连接到无线网络的方法。或到可用的开放无线网络或预定的无线网络。如果连接以太网电缆,则有线网络连接会立即关闭WiFi接入,然后eth0将您连接到有线网络。通过拔下网络电缆,无线连接将立即再次可用。

来源:http://manual.aptosid.com/en/inet-setup-en.htm

我假定wpa-conf是静态配置,不需要通过网络接口漫游。我找不到与此相关的任何详细文档。

我的WiFi配置也有同样的问题。拔出有线以太网时,我的WiFi无法正常工作。所以我像您一样将wpa-roam更改为wpa-conf,它起作用了。

评论


我怀疑如果要使用wpa-roam,则需要将wlan0设置为manual,而不是dhcp或static。不过那只是一个理论。

–劳伦斯
13年8月27日在8:16

对,那是正确的。漫游意味着您允许无线接口尝试“漫游”并连接到其他接入点-但是,如果您只有1台,这意味着如果出现问题,它将尝试“重新连接”。使用wpa-conf,它将不会在下降时重新连接。

– Piotr Kula
13年8月27日在8:34

@劳伦斯,的确如此。虽然不只是理论:它在运行sudo /etc/init.d/networking restart时报告

– Jochem Schulenklopper
2015年1月2日于13:52

@jschulenklopper啊。甚至没有意识到这一点。我根本不使用/etc/init.d/networking restart。

–劳伦斯
2015年1月9日在2:42

要注意的另一个区别是,对于wpa-roam,当插入eth0时,ifplugd会断开wlan0的连接。这是可配置的行为,可能是RaspberryPI特有的。

–domen
15年9月24日在20:15

#2 楼

您还可以在本地安装的文档文件中找到wpa_supplicant的两种操作模式(托管和漫游)的完整说明-可以查看(在线版本为[旧版?],请查看):

zless /usr/share/doc/wpa_supplicant/README.modes.gz


它解释说,虽然“托管”模式仅允许连接到单个已配置的WiFi网络,但是“漫游”模式允许连接到具有潜在不同网络配置的多个WiFi网络,这可以通过添加特殊功能来控制选项id_str,然后将其与网络配置文件中相应的条目匹配-在/etc/network/interfaces文件中指定。例如:

allow-hotplug eth1
iface eth1 inet manual
    wpa-driver wext
    wpa-roam /etc/wpa_supplicant/wpa_roam.conf

# id_str="uni"
iface uni inet dhcp

# id_str="home_static"
iface home_static inet static
        address 192.168.0.20
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1


wpa-roam文件中指定了相应的WiFi网络。例如/etc/wpa_supplicant/wpa_roam.conf

network={
        ssid="foo"
        key_mgmt=NONE
        # this id_str will notify /sbin/wpa_action to 'ifup uni'
        id_str="uni"
}

network={
        ssid="bar"
        psk=123456789...
        # this id_str will notify /sbin/wpa_action to 'ifup home_static'
        id_str="home_static"
}


因此,“ uni”网络将使用DHCP,而“ home_static”网络将使用静态IP地址192.168.0.20。尽管不必使用id_str选项,但设备将仅使用默认值(请参阅doc文件)。