Linux 無線網卡配置

 

無線網卡常見的配置選項

TL-WR842N路由器無線配置選項含義:php

無線名稱
路由器的無線(Wi-Fi)名稱。
無線密碼
無線加密使用WPA2-PSK/WPA-PSK加密方式、AES加密算法,無線密碼爲8-63個字符,最好是數字、字母、符號的組合。
信道
無線數據信號傳送的通道,建議保持默認的自動,此時路由器會自動根據周圍的無線環境選擇一個最好的信道。模式
路由器工做的無線模式。
頻段帶寬
路由器傳輸無線數據的頻段寬度。
信號強度
能夠根據實際使用須要選擇不一樣檔次的信號強度。
開啓AP隔離
開啓以後能夠安全隔離鏈接到路由器的各個無線設備。html

無線網卡工做工做模式

無線網卡一共有4種工做模式。linux

被管理模式(Managed mode):你做爲無線客戶端直接與無線接入點(Wireless Access PointWAP)鏈接時,就使用這個模式。在這個模式中,無線網卡的驅動程序依賴WAP管理整個通訊過程。算法

Ad hoc模式:當你的網絡由互相直連的設備組成時,就使用這個模式。在這個模式中,無線通訊雙方共同承擔WAP的職責。windows

主模式(Master mode):一些高端無線網卡還支持主模式。這個模式容許無線網卡使用特製的驅動程序和軟件工做,做爲其餘設備的WAP安全

監聽模式(Monitor mode):就咱們的用途而言,這是最重要的模式。當你但願無線客戶端中止收發數據,專心監聽空氣中的數據包時,就使用監聽模式。要使Wireshark捕獲無線數據包,你的無線網卡和配套驅動程序必須支持監聽模式(也叫RFMON模式)。服務器

大部分用戶只使用無線網卡的被管理模式或ad hoc模式。圖11-4展現了各類模式如何工做。網絡






如何判斷無線網卡是否識別



根據設備是 PCI 仍是 USB 鏈接,執行 lspci -k lsusb -v 檢查設備驅動是否已經加載app

$ lspci -k
06:00.0 Network controller: Intel Corporation
WiFi Link 5100
        Subsystem: Intel Corporation WiFi Link
5100 AGN
        Kernel driver in use: iwlwifi
        Kernel
modules: iwlwifi

若是是 USB 設備,執行 dmesg | grep usbcore 能夠看到相似下面的輸出 usbcore: registered new interface driver rtl8187less

若是無線usb網卡後插入的話, 也會打印上述信息.

經過 ip link 查看無線 (設備名,一般是相似 wlp2s1) 的設備。啓用設備:

# ip link set <設備名>
up

若是設備加載,接口正常啓用,說明不須要安裝額外的驅動和固件。

錯誤信息SIOCSIFFLAGS: No such file or directory 說明須要固件才能工做,



根據得到的信息,在下面網址查找硬件支持:

  • Ubuntu Wiki 維護了一個設備被內核和用戶空間驅動支持情況的列表。

  • Linux 無線支持頁面 和硬件兼容性列表(HCL)也維護了一個內核友好的設備列表。

  • 內核頁面 也有一個支持的硬件矩陣。

若是列表中沒有,可能你的設備只提供了 Windows 驅動(好比 Broadcom, 3com )。這時須要用 ndiswrapper.

Ndiswrapper 能夠在 Linux 中使用 Windows 驅動。兼容性列表在 這裏. 須要 Windows 中安裝的 .inf .sys 文件。若是有更新的網卡,請經過互聯網搜索型號名稱 + 'linux' 以獲取更多信息。

如何靜態配置無線網卡

Unix一切皆文件,其它網絡配置工具都是直接或者間接地修改這些虛擬文件來達到設置目的的。

pi@raspberrypi ~ $ ls -l /sys/class/net

total 0

lrwxrwxrwx 1 root root 0 May 8 08:12 eth0 -> ../../devices/platform/bcm2708_usb/usb1/1-1/1-1.1/1-1.1:1.0/net/eth0

lrwxrwxrwx 1 root root 0 May 8 08:12 lo -> ../../devices/virtual/net/lo

lrwxrwxrwx 1 root root 0 May 8 08:13 wlan0 -> ../../devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2:1.0/net/wlan0

能夠看到,系統當前存在三個網絡設備:lo爲迴環設備;eth0爲有線網卡;wlan0爲無線網卡。

/etc/network/interfaces文件記錄了全部的靜態配置信息。內核在引導的時候,會自動啓動標誌爲「auto」的設備,例如:

auto lo

auto eth0

auto wlan0

而若是設備標誌爲「allow-hotplug」,那麼內核在檢測到熱插拔事件的時候,也會自動啓動。例如:



allow-hotplug lo

allow-hotplug eth0

allow-hotplug wlan0

由於迴環設備始終應該是存在的,因此/etc/network/interfaces文件的內容至少是:

auto lo

iface lo inet loopback

內核啓動網絡設備調用的是ifupdown工具,而ifupdown工具也是依賴於/etc/network/interfaces配置文件的。



對於有線(Wired)設備,物理層和數據鏈路層無須操做系統干預,網卡根據CSMA/CD協議就可以自行設置,因此/etc/network/interfaces文件只需包含網絡層以上的配置信息,例如IP地址、子網掩碼、默認網關等。例如:



iface eth0 inet static

address 192.168.11.100

netmask 255.255.255.0

gateway 192.168.11.1

默認網關」實際上是路由的概念,在這裏做爲設備的一個屬性,和IP地址子網掩碼放在一塊兒我以爲很不妥,很容易誤導初學者,尤爲是存在多網卡多IP地址的狀況。默認網關的生成與這條配置有關, 若是去除這條, 網絡鏈接將變慢.



對於DNS,首先須要注意的是它屬於應用層協議,和網絡設備以及網絡層並沒有直接聯繫。傳統上LinuxDNS配置文件爲/etc/resolv.conf,一行一個服務器IP地址。例如:



nameserver 218.2.135.1

nameserver 61.147.37.1

若是安裝了resolvconf工具,那麼DNS的配置會被接管,此時/etc/resolv.conf就變成了一個符號連接,連接到了resolvconf運行時候動態維護的一個文件。在這種狀況下,DNS的配置也能夠寫到/etc/network/interfaces文件中了,例如:



iface eth0 inet static

address 192.168.11.100

netmask 255.255.255.0

gateway 192.168.11.1

dns-nameservers 218.2.135.1 61.147.37.1

ifupdown工具會自動調用resolvconf完成DNS設置。



此處我也甚覺不妥,由於上面講過,DNS是應用層的概念,這樣寫的話讓初學者以爲好像DNS是網絡設備的屬性同樣(傳統Linux還真是有不少不足之處)。



若是安裝了isc-dhcp-client工具,那麼/etc/network/interfaces文件中就能夠直接配置DHCP,例如:



iface eth0 inet dhcp

isc-dhcp-client有本身的配置文件,能夠控制從DHCP服務器上獲取哪些信息(例如DNS服務器地址)。



ifupdown工具會自動調用isc-dhcp-client完成DHCP設置。



此處須要注意的是:不論resolvconf是否存在,dhclient均會直接修改/etc/resolv.conf文件(無論它是否是一個連接),不過通常狀況下也沒有什麼問題。



對於無線(Wireless)設備,工做方式和有線設備有很大的不一樣(不是插上網線就能直接用的)。數據鏈路層的鏈接必須由操做系統協同完成,例如鏈接哪一個SSID、使用哪條信道、採用什麼認證方式(WEPWPA...)。這些鏈路層配置信息也能夠寫到/etc/network/interfaces文件中以供ifupdown工具使用。



iface wlan0 inet dhcp

wpa-ssid homezone

wpa-psk 密碼

ifupdown工具會自動調用wpasupplicant完成WPA設置。



例如WEP的配置:



iface wlan0 inet dhcp

wireless-essid Home

wireless-key1 0123-4567-89ab-cdef

wireless-key2 12345678

wireless-key3 s:password

wireless-defaultkey 2

wireless-keymode open

ifupdown工具會自動調用wireless-tools完成WEP設置。



wpa_supplicant 配置文件, 配置方法:

更詳細的配置可參考手冊man wpa_supplicant.conf 

如何動態配置無線網卡

爲了管理已經安裝好的無線驅動,而且使無線能正常工做,須要安裝一個無線鏈接管理工具。須要使用的工具,將依賴於下面幾個因素:

  • 配置方式,從徹底手動執行每一步到軟件自動管理、自動啓動

  • 是否使用加密及加密類型

  • 是否須要區分網絡配置,是否常常切換不一樣網絡(好比手提電腦)。

下表列出可使用的管理無線網絡的方法,按照加密和管理方式分類,給出了須要的工具。雖然還有其餘辦法,但這些是最常使用的

管理方法

接口激活

無線鏈接管理
(/=alternatives)

IP 地址分配
(/=alternatives)

手動設置,
無加密或 WEP 加密

ip

iw / iwconfig

ip / dhcpcd / dhclient

手動管理,
WPA WPA2 PSK 加密

ip

iw / iwconfig + wpa_supplicant

ip / dhcpcd / dhclient

自動管理,
支持網絡配置

netctl, Wicd, NetworkManager, etc.

這些工具會自動安裝手動配置須要的工具。


軟件包 wireless_tools 提供了創建無線鏈接的基礎工具。若是你須要使用 WPA/WPA2 加密,還須要 wpa_supplicant。以下這些用戶空間工具能夠對無線鏈接進行完整控制。

  • iw - 當前的 nl80211 標準,不是全部的芯片都支持。

  • wireless_tools - 已通過時,可是依然普遍使用。

  • wpa_supplicant - 提供 WPA/WPA2 加密支持

下面表格給出了 iw wireless_tools 命令的對比


iw 命令

wireless_tools 命令

描述

Iw dev

Iwconfig

獲取接口名

iw dev wlan0 link

iwconfig wlan0

獲取鏈接狀態

Iw dev wlan0 station dump


獲取統計數據

Ip link set wlan0 up(可能須要) 一些無線網卡在使用 wireless_tools前須要激活內核接口.若是出現錯誤 RTNETLINK answers: Operation not possible due to RF-kill, 請確保硬件開關已經打開.要驗證接口確實打開: # ip link show wlan0

3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP>
			mtu 1500 qdisc mq state DOWN mode DORMANT group default qlen 1000
    link/ether
			12:34:56:78:9a:bc brd ff:ff:ff:ff:ff:ff

<BROADCAST,MULTICAST,UP,LOWER_UP> 中的UP 顯示接口已經打開。

Rfkill 介紹http://www.linuxidc.com/Linux/2015-08/121119.htm


激活內核接口


iw dev wlan0 scan | less

iwlist wlan0 scan

掃描可用熱點




iw dev wlan0 set type ibss

有些網卡須要先關閉無線接口(ip link set wlan0 down)才能修改模式

iwconfig wlan0 mode ad-hoc

設置操做模式爲 ad-hoc.

iw dev wlan0 connect your_essid

iwconfig wlan0 essid your_essid

鏈接到開放網絡

iw dev wlan0 connect your_essid 2432

iwconfig wlan0 essid your_essid freq 2432M

鏈接到開放網絡的一個頻道

iw dev wlan0 connect your_essid key 0:your_key

iwconfig wlan0 essid your_essid key your_key

16進制加密密碼訪問 WEP 加密網絡

iw dev wlan0 connect your_essid key 0:your_key


iw wlan0 connect
			foo keys 0:abcde d:1:0011223344


iwconfig wlan0 essid your_essid key s:your_key


iwconfig wlan0 key s:abcde
iwconfig wlan0 key '[2]0011223344'
iwconfig wlan0 key '[2]'
iwconfig wlan0
			essid foo


ASCII 密碼訪問 WEP 加密網絡.

iw dev wlan0 set power_save on

iwconfig wlan0 power on

啓用省電模式


根據加密方式不一樣,須要使用密碼將無線設備關聯到接入點。

假設要使用的接入點 ESSID MyEssid:

  • 無加密

# iw wlan0 connect
MyEssid
  • WEP

使用十六進制或 ASCII 密碼(格式是自動識別出來的,由於 WEP 密碼長度是固定的):

# iw dev wlan0
connect your_essid key 0:your_key

使用十六進制或 ASCII 密碼,第三個是默認 (0計數,共四個):

# iw dev wlan0
connect your_essid key d:2:your_key


WPA/WPA2

若是要鏈接WPA認證的無線網絡,wireless-tools就迫不得已了,必須使用wpasupplicant

wpasupplicant並非像wireless-tools同樣簡單地用命令行配一配就能夠了,它必須先啓動一個服務進程,而後使用另一個命令行工具對服務進程進行設置,並且在WIFI鏈接期間該服務進程必須始終運行着。


wpa_supplicant -i wlan0 -D nl80211,wext -s -B -P /var/run/wpa_supplicant.wlan0.pid -C /var/run/wpa_supplicant

其中:-i指定設備名;-D指定認證協議;-s -B指定在後臺運行,而且調試輸出到syslog中;-C參數指定「ctrl_interface」的位置,注意,wpa_supplicant是能夠有配置文件的,並且配置文件中能夠記錄WIFI的靜態配置,相似於/etc/network/interfaces的功能,可是咱們這裏用不到,在沒有配置文件的狀況下,「ctrl_interface」是必不可少的,wpa_cli經過它與之交互。


前臺方式:

wpa_supplicant -i wlan0 -D nl80211,wext -dd -P /var/run/wpa_supplicant.wlan0.pid -C /var/run/wpa_supplicant

其中,-dd表示輸出更詳細的調試信息。


查看後臺啓動的進程參數:

pi@raspberrypi ~ $ ps ax | grep wpa

1618 ? Ss 0:00 /sbin/wpa_supplicant -s -B -P /var/run/wpa_supplicant.wlan0.pid -i wlan0 -D nl80211,wext -c /etc/wpa_supplicant/wpa_supplicant.conf

2379 pts/0 S+ 0:00 grep --color=auto wpa


而後使用wpa_cli進行設置。wpa_cli能夠工做在交互模式,也能夠命令行模式。例如在交互模式下執行以下命令加入並啓用網絡:

status:列出目前的聯網狀態。
list:列出全部備選網絡。目前正鏈接到的網絡會標[CURRENT],禁用的網絡會標[DISABLE]
add_network:增長一個備選網絡,輸出新網絡的號碼(這個號碼替代下文的[network_id])。注意新網絡此時是禁用狀態。
set_network [network_id] ssid 「Your SSID」:設置無線網的名稱(SSID
set_network [network_id] key_mgmt WPA-PSK:設置無線網的加密方式爲WPA-PSK/WPA2-PSK
set_network [network_id] psk 「Your Password」:設置無線網的PSK密碼
enable_network [network_id]:啓用網絡。啓用後若是系統搜索到了這個網絡,就會嘗試鏈接。
disable_network [network_id]:禁用網絡。
save_config:保存配置。


> add_network

0 <--- 記住這個號碼!

> set_network 0 ssid "ChinaUnicom-Me"

OK

> set_network 0 key_mgmt WPA-PSK

OK

> set_network 0 psk "密碼"

OK

> enable_network 0

OK

> save_config <--------別忘了這個,不然重啓以後網絡配置可能丟失

OK


查看配置文件:

pi@raspberrypi ~ $ sudo cat /etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev

update_config=1


network={

ssid="Lair"

psk="knc4-102"

key_mgmt=WPA-PSK

scan_ssid=1 手動添加這一行, 能夠支持連接隱藏的wifi

}

配置靜態無線ip:

auto wlan0

allow-hotplug wlan0

iface wlan0 inet manual

wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

address 192.168.1.105

netmask 255.255.255.0

gateway 192.168.1.1

以上配置有錯誤.



網絡配置修改後, 重啓服務

sudo /etc/init.d/networking restart

sudo service networking restart


假設設備使用 wext 驅動。若是沒法工做,可能須要調整選項,參見 WPA_Supplicant(https://wiki.archlinux.org/index.php/WPA_supplicant_%28%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%29)

若是鏈接成功,在新終端中執行後續命令或(或者經過 Ctrl+c 退出並使用 -B 參數在後臺再次執行上述命令。WPA_Supplicant 頁面包含更多參數和配置文件的信息。

經過下面命令確認是否鏈接成功:

# iw dev wlan0 link


獲取 IP 地址

使用 DHCP# dhcpcd wlan0

# dhclient wlan0

若是要設置DHCP,很簡單。例如: 
dhclient wlan0 -r
(釋放IP,
至關於windows下的 ipconfig /release) 
dhclient wlan0
(申請IP,
至關於windows下的 ipconfig /renew)

靜態 IP

ip address add 192.168.1.3/24 dev wlan0 
ip route add default via 192.168.1.1 dev wlan0 
第一行增長IP地址,第二行設置默認路由。

若要刪除以 10. 起始的 IP 路由表中的全部路由,請鍵入:

route delete 10.*

route del default




https://wiki.archlinux.org/index.php/Wireless_network_configuration_%28%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%29#.E5.AE.89.E8.A3.85_driver.2Ffirmware

https://wireless.wiki.kernel.org/en/users/Documentation/iw/replace-iwconfig


https://wiki.archlinux.org/index.php/WPA_supplicant_%28%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%29

http://www.jb51.net/network/60999.html

http://www.cnblogs.com/abel/p/3441175.html

http://www.oschina.net/question/23734_117144

http://blog.csdn.net/jacobywu/article/details/7366080 wpa配置文件

http://shumeipai.nxez.com/2013/09/30/use-wpa-cli-command-line-to-configure-wi-fi-wireless-lan.html wpa_cli 命令使用方法

http://blog.csdn.net/stephen_yu/article/details/12492839 iwconfig 使用


http://www.360doc.com/content/14/0521/16/7821691_379668471.shtml wpa_supplicant.conf 配置說明

相關文章
相關標籤/搜索