溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Linux中WIFI功能介紹

發(fā)布時(shí)間:2021-08-19 18:29:28 來源:億速云 閱讀:252 作者:chen 欄目:互聯(lián)網(wǎng)科技

本篇內(nèi)容介紹了“Linux中WIFI功能介紹”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

wifi模塊驅(qū)動(dòng)

使用系統(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工具依然還是很有用的。

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ì)用到。

這些工具命令的常用使用示例:

  1. 掃描可用的無線網(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。

  2. 掃描網(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)鍵的,如果被隱藏了,也不是不能連接,而是需要破解,用到其他的工具,非常麻煩。

  3. 設(shè)置要連接的網(wǎng)絡(luò)類型

     iwpriv ra0 set NetworkType=Infra


  4. 設(shè)置要連接的無線網(wǎng)絡(luò)的安全模式

     iwpriv ra0 set AuthMode=WPA2PSK


  5. 設(shè)置網(wǎng)絡(luò)加密方式:(CCMP即為AES)

     iwpriv ra0 set EncrypType=TKIP


  6. 設(shè)置連接時(shí)的密碼

     iwprivra0 set WPAPSK=*******  //********為加密網(wǎng)絡(luò)的密碼


  7. 連接該網(wǎng)絡(luò):有兩種方式:

     iwpriv ra0 set SSID=TXJ
     iwconfig ra0 essid TXJ


    至此,如果密碼正確,就可以連接上網(wǎng)絡(luò)TXJ了。

  8. 查看狀態(tài)

     iwpriv ra0 connStatus


    當(dāng)然,你也可以用iwconfig命令查看狀態(tài)。

wpa_supplicant

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的具體步驟主要是:

  1. 啟動(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

  2. 執(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í)用文章!

向AI問一下細(xì)節(jié)

免責(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)容。

AI