無線網卡常見的配置選項
某TL-WR842N路由器無線配置選項含義:
無線名稱
路由器的無線(Wi-Fi)名稱。
無線密碼
無線加密使用WPA2-PSK/WPA-PSK加密方式、AES加密算法,無線密碼為8-63個字符,最好是數字、字母、符號的組合。
信道
無線數據信號傳送的通道,建議保持默認的自動,此時路由器會自動根據周圍的無線環境選擇一個最好的信道。模式
路由器工作的無線模式。
頻段帶寬
路由器傳輸無線數據的頻段寬度。
信號強度
可以根據實際使用需要選擇不同檔次的信號強度。
開啟AP隔離
開啟之后可以安全隔離連接到路由器的各個無線設備。
無線網卡工作工作模式
無線網卡一共有4種工作模式。
被管理模式(Managed mode):你作為無線客戶端直接與無線接入點(Wireless Access Point,WAP)連接時,就使用這個模式。在這個模式中,無線網卡的驅動程序依賴WAP管理整個通信過程。
Ad hoc模式:當你的網絡由互相直連的設備組成時,就使用這個模式。在這個模式中,無線通信雙方共同承擔WAP的職責。
主模式(Master mode):一些高端無線網卡還支持主模式。這個模式允許無線網卡使用特制的驅動程序和軟件工作,作為其他設備的WAP。
監聽模式(Monitor mode):就我們的用途而言,這是最重要的模式。當你希望無線客戶端停止收發數據,專心監聽空氣中的數據包時,就使用監聽模式。要使Wireshark捕獲無線數據包,你的無線網卡和配套驅動程序必須支持監聽模式(也叫RFMON模式)。
大部分用戶只使用無線網卡的被管理模式或ad hoc模式。圖11-4展示了各種模式如何工作。
如何判斷無線網卡是否識別
根據設備是 PCI 還是 USB 連接,執行 lspci -k
或 lsusb -v
檢查設備驅動是否已經加載
$ 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 rtl8187
。
如果無線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,首先需要注意的是它屬於應用層協議,和網絡設備以及網絡層並無直接聯系。傳統上Linux的DNS配置文件為/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、使用哪條信道、采用什么認證方式(WEP、WPA...)。這些鏈路層配置信息也可以寫到/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
如何動態配置無線網卡
為了管理已經安裝好的無線驅動,並且使無線能正常工作,需要安裝一個無線連接管理工具。需要使用的工具,將依賴於下面幾個因素:
-
配置方式,從完全手動執行每一步到軟件自動管理、自動啟動
-
是否使用加密及加密類型
-
是否需要區分網絡配置,是否經常切換不同網絡(比如手提電腦)。
下表列出可以使用的管理無線網絡的方法,按照加密和管理方式分類,給出了需要的工具。雖然還有其他辦法,但這些是最常使用的
管理方法 |
接口激活 |
無線連接管理 |
IP 地址分配 |
---|---|---|---|
手動設置, |
ip |
iw / iwconfig |
ip / dhcpcd / dhclient |
手動管理, |
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
命令的對比
根據加密方式不同,需要使用密碼將無線設備關聯到接入點。
假設要使用的接入點 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://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 配置說明