我有一个带有两个 USB 无线局域网适配器的 Raspberry Pi。 wlan0 配置有 DHCP,wlan1 配置有静态 IP 地址,并且 hostapd(接入点)在此接口上运行。适配器支持主模式。但 wlan1 启动后始终无法获取其 IP 地址,网络无法正常工作。有什么线索可以解释为什么吗?
/etc/network/interfaces 看起来像这样:
auto lo
iface lo inet loopback
iface default inet dhcp
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 192.168.2.201
netmask 255.255.255.0
auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
auto wlan1
iface wlan1 inet static
address 10.0.0.1
netmask 255.255.255.0
启动 RPi 后,如果配置返回以下内容:
eth0 Link encap:Ethernet HWaddr b8:27:eb:47:0d:a5
inet addr:192.168.2.201 Bcast:192.168.2.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:102 errors:0 dropped:1 overruns:0 frame:0
TX packets:91 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:11281 (11.0 KiB) TX bytes:15674 (15.3 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
mon.wlan1 Link encap:UNSPEC HWaddr 54-E6-FC-89-BE-4B-00-00-00-00-00-00-00-00-00-00
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2665 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:810921 (791.9 KiB) TX bytes:0 (0.0 B)
wlan0 Link encap:Ethernet HWaddr 80:1f:02:84:f8:3f
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:12 errors:0 dropped:14 overruns:0 frame:0
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3672 (3.5 KiB) TX bytes:1106 (1.0 KiB)
wlan1 Link encap:Ethernet HWaddr 54:e6:fc:89:be:4b
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
正如您所看到的,wlan1 没有分配预期的 10.0.0.1 地址。如果我发出 ifdown 然后 ifup 它将获得 IP 地址。
命令ip链接在执行 ifdown/ifup 之前显示此内容:
4: wlan1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000
之后:
4: wlan1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT qlen 1000
任何帮助表示赞赏。
答案1
我觉得你的/etc/network/interfaces
有点臃肿。
这里有几点需要提及:
- 为什么要定义
default
-interface?这对我来说没有意义,因为您已经彻底定义了每个接口。 - 因为您决定在事件和系统启动时
eth0
将其启动。hotplug
由于eth0
不可插入,您不必同时指定两者。 - 缩进给定界面的选项是一个很好的做法
但让我们回到主题:
我认为对于可插拔设备,始终建议指定allow-hotplug
并省略该auto
节。我会尝试以下操作/etc/network/interfaces
:
auto lo
auto eth0
allow-hotplug wlan0
allow-hotplug wlan1
# pattern of an interface definition
#
# iface [name of physical/logical interface] [name of address family] [method to configure the interface]
# [option 1]
# [option 2]
# ...
# [option n]
iface lo inet loopback
iface eth0 inet static
address 192.168.2.201
netmask 255.255.255.0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface wlan1 inet static
address 10.0.0.1
netmask 255.255.255.0
顺便问一下:您有什么令人信服的理由不使用像 wicd 或 networkmanager 这样的自动网络配置工具吗?