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