目錄
5.NetworkManager 無法自動重連問題排查及解決
前言:公司最近買了一臺win10的電腦來做服務器,現技術領導要求改裝成linux--CentOS系統,本人完成重裝之後要連接wifi,但出現無法重啓自動連接,斷網自動連接。找了相當多的博客,甚至到官網找資料都無法解決問題(樓主很無力~~)。最後憑系統日誌線索和自己的一些思考解決了這個問題。本文着重講解CentOS7 的無線網絡配置及自動重連的問題。
無線網絡配置
1.找到無線網卡
首先要找到無線網卡的名稱,才能操作它
iw dev
wlp3s0就是本機的無線網卡的名稱了。
2.掃描附近的WiFi
iw wlp3s0 scan|grep SSID
其中的SSID就是WiFi名字,找到你熟悉的名字然後開始連接
3.連接WiFi
這裏有兩款工具:wireless-tools和wpa_supplicant,由於我本機是自帶wpa_supplicant的,所以wireless-tools在這裏略過。
wpa_supplicant -B -i wlp3s0 -c <(wpa_passphrase "$SSID" "$password") //$SSID:WiFi名稱,$password:WiFi密碼
dhclient wlp3s0 //給無線網卡動態分配ip
iw wlp3s0 link //查看無線網絡連接狀態
看到connected to 說明已經連接成功!
wpa_supplicant介紹:
WPA是WiFi Protected Access的縮寫,中文含義爲“WiFi網絡安全存取”。wpa_supplicant是一個開源項目,已經被移植到Linux,Windows以及很多嵌入式系統上。它是WPA的應用層認證客戶端,負責完成認證相關的登錄、加密等工作。
wpa_supplicant help //查看wpa指令集
-B指的是使用守護進程在後臺執行這個是必須的選項。
-c(小寫)指定是使用配置文件:/etc/wpa_supplicant/wpa_supplicant.conf,如果不帶配置文件就用這條命令 <(wpa_passphrase "$SSID" "$password") ,把文件作爲命令輸入。
-i 指的是接口名稱,也就是wlp3s0無線網卡了。
在上面的操作中已經成功連接WiFi了,但是wpa_supplicant還沒有重啓、斷線自動連接能力。
4.配置自動連接
這裏自動連接就需要使用NetworkManager工具了。
NetworkManager介紹:
NetworkManager是RedHat(紅帽組織,傳送門:https://www.redhat.com/en)開發的一個項目,由一個管理系統網絡連接、並且將其狀態通過D-BUS(是一個提供簡單的應用程序 互相通訊的途徑的自由軟件項目,它是作爲freedesktoporg項目的一部分來開發的。)進行報告的後臺服務,以及一個允許用戶管理網絡連接的客戶端程序。優點是:帶有GUI工具界面,能大大簡化網絡連接。
1.安裝NetworkManager
yum -y install NetworkManager-wifi
2.啓動NetworkManager
systemctl start NetworkManager
systemctl enable NetworkManager //設置開機啓動
現在可以使用nmcli (NetworkManagerClient)命令啦
3.令NetworkManager管理起wifi
掃描WiFi
nmcli dev wifi //掃描WiFi
連接WiFi
這裏就有個問題,前面我們是通過wpa_supplicant連接的,這裏再用NetworkManager連接就會產生衝突,所以這裏我們先重啓下network,以便讓wap_supplicant的連接失效,然後再操作NetworkManager連接WiFi。
service network restart
nmcli dev wifi connect $SSID password $password //$SSID:WiFi名稱,$password:WiFi密碼
nmcli conn //查看已連接的WiFi
可以看到已連接WiFi,UUID:060c319f-3e24-4b57-976d-9a2705d2467b
根據UUID來管理WiFi
nmcli c down 060c319f-3e24-4b57-976d-9a2705d2467b //停用WiFi
nmcli c up 060c319f-3e24-4b57-976d-9a2705d2467b //啓用WiFi
nmcli c delete 060c319f-3e24-4b57-976d-9a2705d2467b //刪除WiFi
systemctl restart NetworkManager //重啓
5.NetworkManager 無法自動重連問題排查及解決
WiFi連接上了,樓主重啓了無數遍還是不能夠自動連接WiFi。網上找相關的博客都很水,根本就沒有排查過程,張口就來命令,什麼意思也不解釋。在這絕望的境地下,也只好自力更生了。
1.NetworkManager排查過程
首先要排查問題,那麼日誌分析是必不可少的,找到相關的日誌信息,有錯誤提示就能找到解決問題的線索。
less /var/log/messages //查看linxu內核及公共消息日誌
進去後按G跳到底部,輸入?NetworkManager回車找到NetworkManager的相關日誌,按n往上搜索,果然出了幾條關鍵的信息線索:
在紅色框裏可以看到,出現了三條warn信息,第一條意思是“取消p2p連接失敗:返回空的body信息”。第二條意思是“在wap_supplicant 設置WFD IES 失敗原因是GDBUS.Error.InvalidArgs沒有這個屬性” 。第三條意思是:"不能獲取請求掃描結果:返回錯誤的body("ss")"。
分析過程:
第二條信息很關鍵,因爲沒有相關屬性導致 第一條和第三條都出錯了。直接百度搜索 "GDBUS.Error.InvalidArgs: No such property" ,發現沒有答案。
其實從日誌信息可以知道,NetworkManager會向wpa_supplicant發送請求來獲取掃描信息,現在是請求wpa_supplicant時失敗了。那就可以初步猜測兩個工具之間的兼容問題!
解決問題
既然定位到問題了,兼容問題,那就從工具本身下手吧,下載wpa_supplicant最新版本,然後重啓NetworkManager.
yum -y install wpa_supplicant //下載最新版本
systemctl restart NetworkManager //重啓NetworkManager
果然,安裝最新版本之後,查看日誌,NetworkManager已經可以自動掃描WiFi信息連接了。