最近因為畢業設計,入手了一枚樹莓派。由於網上一些教程的可能是比較久遠了,而Debian系列的系統現在已經沒有/etc/wpa.conf
檔案了,配置這個檔案並不能生效還會照成網路卡無法使用,折騰了老半天才知道應該配置的是/etc/wpa_supplicant/wpa_supplicant.conf
,所以特地寫這篇文章總結。
本文主要介紹樹莓派無線網路卡的配置,當然不侷限於樹莓派。我裝的是RaspBian系統,其實其它的Linux系統,也是可以照這種方式配置的。
三種配置方式
- 靜態IP繫結設定
- 動態IP配置
- 多個無線連線配置
靜態IP繫結
命令列輸入 sudo vim /etc/network/interfaces
在檔案中輸入
# 第一個網路卡
auto wlan0
allow-hotplug wlan0 # 允許熱插拔(非必須配置)
iface wlan0 inet static # 採用靜態IP分配的方式
address 192.168.199.249 # 為樹莓派設定的ip (詳見下面介紹)
netmask 255.255.255.0 # 子網掩碼 (詳見下面介紹)
gateway 192.168.199.1 # 閘道器地址 (詳見下面介紹)
wpa-ssid yourssid # 你要連線的wifi名稱
wpa-psk yourpassword # 你要連線的wifi密碼
複製程式碼
- 閘道器地址
閘道器地址也就是你所要連線的路由器IP地址
- 子網掩碼
用來指明一個IP地址的哪些位標識的是主機所在的子網,最簡單的應用就是通過子網掩碼確定當前區域網允許連線的最大主機數
- 獲取方式
在已連入該區域網的裝置的CMD視窗中輸入
ipconfig -all
如圖 可獲得你所要連線的wifi的閘道器地址和子網掩碼
當然如果你是Linux系統可輸入 ifconfig -a
檢視
-
靜態IP設定 為樹莓派分配的靜態IP是隨意的,當然這個隨意有個前提就是設定當前區域網內允許的空閒IP。 哪些IP才是當前區域網中允許的,你可以通過閘道器地址和子網掩碼去計算,當然計算方式我在這裡就不作討論。一個簡單的方法就是取閘道器地址的前三組數,最後一組隨便寫一個。 比如閘道器地址是:
192.168.199.1
則你可設靜態IP為192.168.199.249
閘道器地址為192.168.2.1
則可設靜態IP為192.168.2.22
當然允許設定的IP不一定是空閒的,它有可能已經被區域網中的其他裝置佔用,你可以通過ping IP
指令來檢視所要設定的IP是否已經被佔用 -
重啟網路卡設定 配置完
如果還沒有可以嘗試輸入/etc/network/interfaces
檔案後可輸入sudo ifup wlan0
重啟一下網路卡。這時候 輸入ifconfig
可看到你的無線網路卡已經有對應的IP了sudo reboot
重啟系統
很多教程都比較推薦靜態IP設定,主要的優點是由於靜態IP是我們手動分配的,所以SSH遠端連線時,我們不用登陸路由器也可以知道樹莓派的IP地址。當然前提是你能記得你配置時填寫的IP地址?(反正我自己是記不住) 靜態IP繫結帶來的問題就是有些時候,會因為被先接入的IP佔用而無法上網
動態IP設定
其實我個人是比較動態IP設定的,為什麼呢。配置寫少了幾行,哈哈。
- 主要是用動態IP設定,IP由DHCP伺服器直接分配,你不要關心樹莓派要繫結的區域網IP是否被佔用呀,能否使用呀。
- 其次DHCP是有規律的為裝置分配IP的,所以大部分情況下,分配的IP和你上一次連入該區域網的IP是一樣的,除非的你上次使用的IP被佔用了(如果被佔用了,你靜態IP配置的使用也是不能使用的呀)。所以說靜態繫結你能知道IP,而動態不知道這種完全沒道理呀,你既然可以記住靜態配置時的IP,為啥就不能記住上一次動態分配的IP呢。
- 動態IP設定的另一個好處就是,就是不會因為IP衝突而無法上網,如果樹莓派這次連線進來時,上一次使用的IP已被佔用了,DHCP伺服器就會為樹莓派分配一個新的IP。當然這個時候你就不知道你的樹莓派IP地址是多少了。這個時候你就得去路由器檢視了。而靜態IP設定要是出現IP被佔用了,那就只能把佔用IP的裝置斷掉(很多時候不現實呀)或者是重新修改樹莓派的靜態IP設定。
所以,我個人是比較推薦用動態IP設定了,找不到樹莓派就上路由器看一下IP嘛,說得好像靜態設定就能記住IP似的,我不信呀。好了,廢話不多說,看一下動態IP設定方式吧
命令列輸入 sudo vim /etc/network/interfaces
在檔案中輸入
# 第一個網路卡
auto wlan0
allow-hotplug wlan0 # 允許熱插拔(非必須配置)
iface wlan0 inet dhcp # DHCP自動分配IP
wpa-ssid yourssid # 你要連線的wifi名稱
wpa-psk yourpassword # 你要連線的wifi密碼
複製程式碼
儲存退出,並執行sudo ifup wlan0
。
多個無線連線配置
上面的配置只是配置了一個無線連線,如果你要配置多個wifi連線怎麼辦。網上有很多教程都是讓你修改 /etc/wpa.conf
檔案,實際上現在已經很多Debian系列的Linux系統已經不是這個檔案了,所以如果你在/etc/network/interfaces
檔案中引入這個配置,可能會照成網路卡不可用。新的多個無線連線配置檔案 應該是/etc/wpa_supplicant/wpa_supplicant.conf
。 具體設定方式:
命令列輸入 sudo vim /etc/network/interfaces
在檔案中輸入
# 第一個網路卡
auto wlan0
allow-hotplug wlan0 # 允許熱插拔(非必須配置)
iface wlan0 inet dhcp # DHCP自動分配IP
wpa_conf /etc/wpa_supplicant/wpa_supplicant.conf # 多個無線連線配置檔案
複製程式碼
儲存退出,接著執行 sudo vim /etc/wpa_supplicant/wpa_supplicant.conf
在檔案中輸入
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=CN
# 第一個無線連線
network={
ssid="xxxx" # wifi 名稱
psk="xxxx" # wifi 密碼
key_mgmt=WPA-PSK # 加密方式
}
# 第二個無線連線
network={
ssid="xxxx"
psk="xxxx"
key_mgmt=WPA-PSK
}
複製程式碼
儲存退出,執行 sudo ifup wlan0
。多個無線連線的配置就完成了,樹莓派會按照network的配置順序查詢連線對應的無線wifi
其他一些特殊的配置
- 如果你的wifi沒有設定密碼
network={
ssid="xxx"
key_mgmt=NONE # 加密方式,不加密
}
複製程式碼
- 如果你的wifi使用wep加密
network={
ssid="xxxx"
key_mgmt=NONE
wep_key0="xxxx" # wep密碼
}
複製程式碼
- 如果你的wifi設定了不可見
network={
ssid="xxxx"
psk="xxxx"
key_mgmt=WPA-PSK
scan_ssid=1 # 如果你的無線接入點是隱藏的,該配置就是必須的
}
複製程式碼
- 設定優先順序
network={
ssid="xxxx"
psk="xxxx"
key_mgmt=WPA-PSK
priority=999 # priority指連線優先順序,數字越大優先順序越高(不可以是負數)
}
複製程式碼
建議為你的手機熱點配置一個最高的優先連線,當你進入一個新的區域網內時,你可以通過將樹莓派連線在你的手機熱點上,然後SSH連線配置新區域網的wifi名稱和密碼,這樣就避免了進入新區域網時,沒有螢幕而無法配置無線連線的尷尬。為你樹莓派配置你的手機熱點連線,可以讓你隨時隨地都有辦法ssh連線上你的樹莓派,不會因沒有螢幕而失去對樹莓派的控制。
- 更多network配置項介紹
其實樹莓派也就相當於一臺Linux主機,更多的時候我們不要侷限於搜尋樹莓派,而可以搜尋對應的Linux關鍵字,這樣看到的資料多一些。關於這方面的,感興趣可搜尋
Linux /wpa_supplicant.conf
。這裡我推薦兩篇介紹的比較詳細的教程: Linux無線網路設定(wpa_supplicant的使用)
Linux之wpa_supplicant.conf檔案詳解
另一種配置方法介紹
通過 wpa_cli
命令列配置
命令列輸入 sudo wpa_cli
調起wpa_cli的命令列介面
相關的 linux 指令介紹
-
重啟系統
sudo reboot
-
重啟網路
sudo /etc/init.d/networking restart
-
開啟無線網路卡
sudo ifup wlan0
-
關閉無線網路卡
sudo ifdown wlan0
-
檢視當前無線連線IP地址
ifconfig wlan0
-
檢視當前無線連線具體資訊
iwconfig
-
列出附近可連線的wifi
iwlist wlan0 scan
-
搜尋附近可連線的wifi 只返回wifi 名稱
iwlist wlan0 scan | grep ESSID
-
獲取加密後的psk配置
wpa_passphrase SSID password