您好,登錄后才能下訂單哦!
本篇內容介紹了“Linux中WIFI功能介紹”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
使用系統wifi功能的第一步是確定設備wifi模塊的型號并安裝相應的驅動程序。在嵌入式開發中,一般是需要獲取到wifi模塊的驅動源碼,然后進行交叉編譯來構建驅動模塊并使用insmod命令進行安裝。
一般而言,WIFI模塊具有兩種工作模式:
Station Mode: 工作站模式,用來接入路由器等AP
AP Mode: 接入點模式,用來被接入使用
不同模式的wifi驅動代碼可能不一樣,所以也許會需要安裝兩個驅動模塊,分別來支持這兩種模式功能,具體請參考對應wifi模塊的手冊與指南文檔。
Linux系統中主要使用的wifi配置工具有兩種:
wireless tools: 包含iwconfig,iwlist,iwspy,iwpriv等工具,主要配置wep加密wifi
wpa_supplicant:包含wpa_cli,wpa_supplicant等工具,主要配置wpa加密wifi
因為目前常用的wifi網絡大部分都是使用的wpa協議進行加密,所以wpa_supplicant工具使用的比較多,但是在wifi接口的管理方面,wireless tools工具依然還是很有用的。
該工具包是Linux Wireless Extensions(LWE)的用戶層配置工具之一。LWE是Linux下對無線網絡配置的工具,包括內核的支持、用戶層配置工具和驅動接口的支持三部分。目前很多無線網卡都支持LWE,而且主流的Linux發布版本,比如Redhat Linux、Ubuntu Linux都已經帶了這個配置工具。
編譯構建之后會生成命令:iwconfg,iwlist,iwspy,iwpriv等,這些命令的使用依賴于生成的動態庫文件:libiw.so.29,因此拷貝這些命令到目標機器上時,記得將該庫文件一起拷貝到系統的lib目錄下面,否則會提示找不到庫文件。
iwconfig是LWE最主要的工具,可以對無線網卡的大部分參數進行配置。具體的命令參數與選項可以通過help命令來查看了解。其中一些參數的解釋如下:
essid:設置無線網卡的ESSID(Extension Service Set ID)。通過ESSID來區分不同的無線網絡,正常情況下只有相同ESSID的無線站點才可以互相通訊,除非想監聽無線網絡。其后的參數為雙引號括起的ESSID字符串,或者是any/on/off,如果ESSID字符串中包含any/no/off,則需要在前面加"--"。
mode:設置無線網卡的工作模式,可以是
Ad-hoc:不帶AP的點對點無線網絡
Managed:通過多個AP組成的網絡,無線設備可以在這個網絡中漫游
Master:設置該無線網卡為一個AP
Repeater:設置為無線網絡中繼設備,可以轉發網絡包
Secondary:設置為備份的AP/Repeater
Monitor:監聽模式
Auto:由無線網卡自動選擇工作模式
freq/channel:設置無線網卡的工作頻率或者頻道,小于1000的參數被認為是頻道,大于10000的參數被認為是頻率。頻率單位為Hz,可以在數字后面附帶k, M, G來改變數量級,比如2.4G。頻道從1開始。使用iwlist工具可以查看無線網卡支持的頻率和頻道。參數off/auto指示無線網絡自動挑選頻率。 注意:如果是Managed模式,AP會指示無線網卡的工作頻率,因此該設置的參數會被忽略。Ad-hoc模式下只使用該設定的頻率初始無線網絡,如果加入已經存在的Ad-hoc網絡則會忽略該設置的頻率參數。
ap:連接到指定的AP或者無線網絡,后面的參數可以是AP的MAC地址,也可以是iwlist scan出來的標識符。如果是Ad-hoc,則連接到一個已經存在的Ad-hoc網絡。使用off參數讓無線網卡不改變當前已連接的AP下進入自動模式。any/auto參數,無線網卡自動選擇最好的AP。 注意:如果無線信號低到一定程度,無線網絡會進入自動選擇AP模式。
rate/bit:如果無線網卡支持多速率,則可以通過該命令設置工作的速率。小于1000的參數由具體的無線網卡驅動定義,一般是傳輸速率的索引值,大于1000的為速率,單位bps,可以在數字后面附帶k, M, G來指定數量級。auto參數讓無線網卡自動選擇速率fixed參數讓無線網卡不使用自動速率模式。
txpower:如果無線網卡支持多發射功率設定,則使用該參數設定發射,單位為dBm,如果指定為W(毫瓦),則轉換公式為: dBm=30+log(W)。參數on/off可以打開和關閉發射單元,auto和fixed指定無線是否自動選擇發射功率。
sens:設置接收靈敏度的下限,在該下限之下,無線網卡認為該無線網絡信號太差,不同的網卡會采取不同的措施,一些現代的無線網卡會自動選擇新的AP。正的參數為raw data,直接傳給無線網卡驅動處理,一般認為是百分比。負值表示dBm值。
retry:設置無線網卡的重傳機制。limit ‘value’ 指定最大重傳次數;lifetime ‘value’指定最長重試時間,單位為秒,可以附帶m和u來指定單位為毫秒和微秒。如果無線網卡支持自動模式,則在limit和lifetime之前還可以附加min和max來指定上下限值。
rts:指定RTS/CTS握手方式,使用RTS/CTS握手會增加額外開銷,但如果無線網絡中有隱藏無線節點或者有很多無線節點時可以提高性能。 后面的參數指定一個使用該機制的最小包的大小,如果該值等于最大包大小,則相當于禁止使用該機制。可以使用auto/off/fixed參數。
frag:設置發送數據包的分片大小。設置分片會增加額外開銷,但在噪聲環境下可以提高數據包的到達率。一般情況下該參數小于最大包大小,有些支持Burst模式的無線網卡可以設置大于最大包大小的值來允許Burst模式。還可以使用auto/fixed/off參數。
key/enc[ryption]:設置無線網卡使用的加密密鑰,此處為設置WEP模式的加密key,如果要使用WPA,需要wpa_supplicant工具包。 密鑰參數可以是 XXXX-XXXX-XXXX-XXXX 或者 XXXXXXXX 格式的十六進制數值,也可以是s:xxxxxx的ASCII字符。如果在密鑰參數之前加了[index],則只是設置該索引值對應的密鑰,并不改變當前的密鑰。直接指定[index]值可以設置當前使用哪一個密鑰。指定on/off可以控制是否使用加密模式。open/restricted指定加密模式,取決于不同的無線網卡,大多數無線網卡的open模式不使用加密且允許接收沒有加密的數據包,restricted模式使用加密。可以使用多個key參數,但只有最后一個生效。 WEP密鑰可以是40bit,用10個十六進制數字或者5個ASCII字符表示,也可以是128bit,用26個十六進制數字或者13個ASCII字符表。
power:設置無線網卡的電源管理模式。period ‘value’ 指定喚醒的周期,timeout ‘value’指定進入休眠的等待時間,這兩個參數之前可以 加min和max修飾,這些值的單位為秒,可以附加m和u來指定毫秒和微秒。off/on參數指定是否允許電源管理,all/unicast/multicast指定允許喚醒的數據包類型。
commit:提交所有的參數修改給無線網卡驅動。有些無線網卡驅動會先緩存無線網卡參數修,使用這個命令來讓無線網卡的參數修改生效。不過一般不需要使用該命令,因為無線網卡驅動最終都會是參數的修改生效,一般在debug時會用到。
這些工具命令的常用使用示例:
掃描可用的無線網絡
iwlist [wifi-name] scanning
其中wifi-name為無線網卡的名字,比如網卡eth0就是系統默認的網卡名字, wifi-name可以用ifconfig查看,一般為ra0(無線網卡),不過需要ifconfig ra0 up。
掃描網絡信息
iwlist ra0 scan ===<rt_ioctl_giwscan.11(11) BSS returned, data-<length = 1427 ra0 Scan completed : Cell 01 - Address:C4:CA:D9:1D:9E:A0 Protocol:802.11b/g/n ESSID:"" Mode:Managed Frequency:2.412 GHz(Channel 1) Quality=7/100 Signal level=-87 dBm Noise level=-82 dBm Encryption key:off Bit Rates:54 Mb/s
如上:ESSID項的值即為無線網絡的名字,如上的“TXJ”等。如果值為空,說明在無線路由勾選了隱藏ESSID的選項。ESSID是很關鍵的,如果被隱藏了,也不是不能連接,而是需要破解,用到其他的工具,非常麻煩。
設置要連接的網絡類型
iwpriv ra0 set NetworkType=Infra
設置要連接的無線網絡的安全模式
iwpriv ra0 set AuthMode=WPA2PSK
設置網絡加密方式:(CCMP即為AES)
iwpriv ra0 set EncrypType=TKIP
設置連接時的密碼
iwprivra0 set WPAPSK=******* //********為加密網絡的密碼
連接該網絡:有兩種方式:
iwpriv ra0 set SSID=TXJ iwconfig ra0 essid TXJ
至此,如果密碼正確,就可以連接上網絡TXJ了。
查看狀態
iwpriv ra0 connStatus
當然,你也可以用iwconfig命令查看狀態。
wpa_supplicant是目前常用的工具之一,但缺點是它不支持所有的驅動。請瀏覽wpa_supplicant網站獲得它所支持的驅動列表。wpa_supplicant目前只能連接到那些你已經配置好ESSID的無線網絡。wireless-tools支持幾乎所有的無線網卡和驅動,但它不能連接到那些只支持WPA的AP。
經過編譯后的wpa_supplicant源程序可以看到兩個主要的可執行工具:wpa_supplicant和wpa_cli。wpa_supplicant是核心程序,它和wpa_cli的關系就是服務端和客戶端的關系:后臺運行wpa_supplicant,使用wpa_cli來搜索、設置、和連接網絡。
使用wpa_supplicant來連接wifi的具體步驟主要是:
啟動wpa_supplicant后臺服務程序:
/sbin/wpa_supplicant -d -Dwext -iwlan0 -c /etc/wpa_supplicant.conf
其中:
-d :增加調試信息 -Dwext :wext,驅動名稱 -iwlan0 :wlan0,網絡接口名稱 /etc/wpa_supplicant.conf :配置文件
配置文件的內容大致如下:
ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=wheel update_config=1 network={ ssid="test-ap" scan_ssid=1 psk=37bca5cf24a345f514d319211822f568bba28f8f0b74c894e7644 proto=RSN key_mgmt=WPA-PSK pairwise=CCMP auth_alg=OPEN }
network里面的內容就是接入AP的配置,wpa_supplicant啟動時會以該配置去連接wifi。幾個選項的介紹如下,更多的解釋可以參考官方的配置文件注釋。
關于psk加密的生成,使用wpa_passphrase命令如下:
$ wpa_passphrase TPLINK 12345678 network={ ssid="TPLINK" #psk="12345678" psk=992194d7a6158009bfa25773108291642f28a0c32a31ab2556a15dee97ef0dbb }
這里表示名為TPLINK的接入點,密碼是12345678,輸出就是該接入點在wpa_supplicant.conf里面的配置內容。
ssid 接入點名稱
scan_ssid=1 如果你的無線接入點是隱藏的,那么這個就是必須的。
psk=xx 是加密后的密碼,用wpa_passphrase自動生成的
proto=RSN WPA2只是RSN的一個別名,支持WPA和WPA2
執行wpa_cli工具進行搜索和連接
wpa_cli -i wlan0
wlan0是wifi接口名稱,以上名列會進入交互模式,然后進行具體的動作。具體支持的命令可以通過help命令來查看,以下進介紹常用的幾個命令。
一些交互連接的示例:
連接無加密的AP
add_network set_network 0 ssid "ap1" set_network 0 key_mgmt NONE enable_network 0 quit
連接WEP加密AP
add_network set_network 1 ssid "ap2" set_network 1 key_mgmt NONE set_network 1 wep_key0 "your ap password" enable_network 1
連接WPA-PSK/WPA2-PSK加密的AP
add_network set_network 2 ssid "ap3" set_network 2 psk "your pre-shared key" enable_network 2
scan 掃描當前可以的WiFi列表
scan_result 查看上次scan的掃描結果
add_network 添加一個AP連接網絡
set_network 設置連接網絡的相關參數
get_network 獲取連接網絡的參數
remove_network 刪除一個連接網絡
enable_network 連接到指定的AP
disable_network 禁止一個網絡
disconnet 端口當前的AP連接
status 查看當前的連接狀態信息
save_config 保存配置
“Linux中WIFI功能介紹”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。