為多個位置配置無線介面
我想配置我
/etc/network/interfaces
以檢測不同的接入點並相應地連接到它們。這是此文件的目前狀態:source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 iface eth0 inet dhcp auto ra0 iface ra0 inet dhcp wpa-ssid MyNet wpa-psk 00d8f778e1e86be0961aa767564d7364ee44fcbd704e4e31ee6c4af0f855c32f
這會成功檢測到乙太網連接並在可用時連接到 MyNet。如何配置它以便它可以檢測多個接入點?
這似乎是答案,但我無法理解說明。
我嘗試了多種 GUI(nm、wicd 等),但它們似乎都不能在我的筆記型電腦上執行。無論如何,我更喜歡通過命令行來完成。
為了配置
/etc/network/interfaces
為使用多個位置,您必須了解邏輯介面和物理介面之間的區別。物理介面對應於您在系統中安裝的硬體設備,它們由特定的命名方案(wlan0、wlan1、eth0、ra0 等)標識。在您的
/etc/network/interfaces
中,您只能為每個物理介面指定一個配置,因此這就是邏輯介面發揮作用的地方。一個物理介面可以有多個邏輯介面。這稱為映射。要將邏輯介面映射到物理介面,請將其添加到/etc/network/interfaces
mapping ra0 # map physical interface ra0... map home work # ...to 'home' and 'work' logical interfaces
然後,為每個介面編寫配置:
iface home inet dhcp # configuration stanza for 'home' logical interface wpa-ssid Home wpa-psk 00d8f778e1e86be0961aa767564d7364ee44fcbd704e4e31ee6c4af0f855c32f iface work inet dhcp # configuration stanza for 'work' logical interface wpa-ssid Work wpa-psk 00d8f778e1e86be0961aa767564d7364ee44fcbd704e4e31ee6c4af0f855c32f
當然這樣是行不通的,因為系統不知道使用哪個介面,所以我們會用它
guessnet
來幫助系統選擇配置。sudo apt-get install guessnet
然後,我們
guessnet
在映射節中使用:mapping ra0 script /usr/sbin/guessnet-ifupdown # <-- We added this map home work
Guessnet
通過根據某些標準(IP、ESSID、MAC 地址)測試網路並選擇不會通過這些測試的配置來執行操作。在以下範例中,如果有一個 ESSID 為“Work”的網路可用,ra0
我們之前定義的介面將連接到它並應用此配置:iface work inet dhcp test wireless essid Work # We test if the ESSID of the network is 'Work' wpa-ssid Work wpa-psk 00d8f778e1e86be0961aa767564d7364ee44fcbd704e4e31ee6c4af0f855c32f
要解決多個 wifi 配置/ssid,您最好在該
wpa_supplicant
級別工作。只需將您的界面保留為:
auto ra0 iface ra0 inet dhcp
使用以下命令安裝 wpa_supplicant:
apt get install wpasupplicant
您可以在 中定義多個位置
wpa_supplicant.conf
,其中 SSID 確定將使用哪個配置。如:network={ ssid="ssid2" psk="ssid2 PASSWORD" } network={ ssid="ssid1" psk="ssid1 PASSWORD" }
每次為新 SSID 添加配置時重新啟動服務。
連接到 AP 時,根據 SSID 名稱,
wpa_supplicant
自動選擇相應的配置。