嵌入式Linux系統網絡的配置


    wpa_supplicant被設計爲一個運行在後臺的守護進程,是一個控制無線連接的後臺組件。wpa_supplicant支持分離的前端程序,並且包含一個基於文本的前端程序wpa_client。wpa_supplicant應用比較廣泛,並且已經被Google引入Android系統。

1.啓動wpa_supplicant和udhcpc服務

ifconfig  wlan0  up
wpa_supplicant -B -D wext -i wlan0 -c /etc/wpa_supplicant.conf
sleep 3
udhcpc -i $NETIF

另外,通過udhcpc獲取本機ip地址的時候,可以通過-h參數設置客戶端的主機名。

2.wpa_cli的用法

首先運行wpa_supplicant服務,之後運行wpa_cli。
運行wpa_cli之後,會進入命令行交互模式,依次執行scan和scan_results可以顯示搜索到的周圍的AP信息。如下所示:

> bssid / frequency / signal level / flags / ssid
80:81:10:23:0e:60       2447    96      [WPA-PSK-TKIP+CCMP][WPA2-PSK-TKIP+CCMP][ESS]    treebear
d4:ee:07:0d:71:a6       2412    71      [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]       hello
d4:ee:07:0d:68:8c       2442    82      [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]       happy
d4:ee:07:0d:67:68       2427    45      [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]       xixi
bc:d1:77:b6:c6:08       2437    23      [WPA-PSK-CCMP][WPA2-PSK-CCMP][WPS][ESS]  zhaojin


從中可以得到AP的MAC地址、信號強度以及加密方式等信息。
按下面的順序依次執行指令,可以連接到加密方式爲WPA-PSK/WPA2-PSK的AP:
> add_network   (assume return 1)
> set_network  1  ssid  "happy"
> set_network  1  psk  "mypassword"
> enable_network  1
到此,wifi模塊就能連接上AP了。

3.獲取網絡信息命令

獲取網絡信息命令 get_network <network id> <key> ,其中key的含義及取值如下圖所示,

這些參數在wpa_supplicant.conf中也要用到。


4.wpa_supplicant.conf配置文件

以下是一個比較通用的配置文件的內容:

ctrl_interface=/var/run/wpa_supplicant

ap_scan=1

fast_reauth=1

network={

        ssid="test"

        scan_ssid=1

        key_mgmt=WPA-PSK WPA-EAP NONE

#        proto=WPA2

        pairwise=CCMP TKIP 

        group=CCMP TKIP WEP104 WEP40

        psk=123test

        priority=5

}

上面的配置信息指明瞭連接名稱爲test,密碼爲123testt的wifi,以及使用的加密模式等信息。

關於key_mgmt和pairwise:

無線網絡的安全性由認證和加密來保證。 
認證允許只有被許可的用戶才能連接到無線網絡; 加密的目的是提供數據的保密性和完整性(數據在傳輸過程中不會被篡改)。

如果非要用公式來表示 WPA/WPA2,那麼可以這樣:

WPA = (IEEE802.1X + EAP) + TKIP/AES + MIC 
WPA2 = (IEEE802.1X + EAP) + AES/CCMP + MIC 

其中 TKIP,AES,CCMP都只是WPA的加密規則,專業一點的叫法叫做 單播加密套件。在實際使用過程中,一方面路由器上可以讓用戶選擇使用哪種 WPA/WPA2的加密方式;另一方面,AP也可以根據STATION類型中單播加密套件的最低級別來決定加密套件(因爲有的加密方式可能STATION不支持)。
MIC(message integrality check):<span style="color: rgb(51, 51, 51); font-family: arial; font-size: 13px; line-height: 20.02px;">消息完整性檢查</span>

鏈接:http://www.zhihu.com/question/27614799/answer/46041457

5.DNS服務器

udhcpc服務在運行時,經常會打印出如下所示的信息:

adding dns 219.141.140.10
adding dns 219.141.136.10

執行命令cat /etc/resolv.conf,會打印出上面添加這兩個DNS服務器的地址,這兩個地址是北京市的DNS服務器地址。

國內通用的DNS服務器:114.114.114.114

國際通用的DNS服務器:8.8.8.8







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章