目前您可使用咱們提供的wireless-tools 或wpa_supplicant工具來配置無線網絡。請記住重要的一點是,您對無線網絡的配置是全局性的,而非針對具體的接口。 linux
wpa_supplicant是一個最好的選擇,但缺點是它不支持全部的驅動。請瀏覽wpa_supplicant網站得到它所支持的驅動列表。另外,wpa_supplicant目前只能鏈接到那些你已經配置好ESSID的無線網絡。 安全
wireless-tools支持幾乎全部的無線網卡和驅動,但它不能鏈接到那些只支持WPA的AP。 服務器
警告: 因爲linux-wlan-ng驅動有其本身特有的安裝和配置方式,並且與其餘軟件的方式徹底不一樣,所以目前它並不被baselayout所支持。有傳聞說linux-wlan-ng的開發者要將它的設置方式改爲wireless-tools的方式——到時候您就能夠在baselayout中使用linux-wlan-ng了。 網絡 |
WPA Supplicant工具包可讓您鏈接到那些使用WPA的AP。由於還只是beta版,因此它的配置方法仍會經常變化——儘管如此,在大部分狀況下它已經能很好的工做。 dom
代碼 2.1: 安裝wpa_supplicant 工具 |
# emerge net-wireless/wpa_supplicant |
重要: 要讓wpa_supplicant正常工做,您必須在內核中打開CONFIG_PACKET支持。 post |
如今咱們須要配置一下/etc/conf.d/net文件以便咱們能夠選擇使用wpa_supplicant而不用wireless-tools(二者都安裝在系統中時,默認使用的是wireless-tools)。 網站
代碼 2.2: 在/etc/conf.d/net中配置wpa_supplicant |
# 使用wpa_supplicant代替wireless-tools modules=( "wpa_supplicant" ) # 由於wpa_supplicant還不能很好的自動偵測驅動,因此須要咱們爲其指定正在使用的驅動。 wpa_supplicant_eth0="-Dmadwifi" |
注意: 若是您用host-ap驅動,您首先要將無線設備卡設置成Managed模式以便能正確地配合wpa_supplicant工做。你能夠在/etc/conf.d/net中設置iwconfig_eth0="mode managed"來實現這一點。 |
看起來這很簡單,不是麼?不過咱們還須要配置wpa_supplicant自己,這將會比較麻煩一些,具體取決於你要鏈接的AP的安全程度。下面的例子是從/usr/share/doc/wpa_supplicant-<version>/wpa_supplicant.conf.gz中抽取並簡化而來的,此文件出自wpa_supplicant軟件包。
代碼 2.3: 一個/etc/wpa_supplicant/wpa_supplicant.conf的例子 |
# 請不要修改下面這一行內容,不然將不能正常工做 ctrl_interface=/var/run/wpa_supplicant # 確保只有root用戶能讀取WPA的配置 ctrl_interface_group=0 # 使用wpa_supplicant來掃描和選擇AP ap_scan=1 # 簡單的情形:WPA-PSk密碼驗證方式,PSK是ASCII密碼短語,全部合法的加密方式都容許鏈接 network={ ssid="simple" psk="very secret passphrase" # 優先級越高,就能越早匹配到。 priority=5 } # 與前面的設置相同,但要求對特定的SSID進行掃描(針對那些拒絕廣播SSID的AP) network={ ssid="second ssid" scan_ssid=1 psk="very secret passphrase" priority=2 } # 僅使用WPA-PSK方式。容許使用任何合法的加密方式的組合 network={ ssid="example" proto=WPA key_mgmt=WPA-PSK pairwise=CCMP TKIP group=CCMP TKIP WEP104 WEP40 psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb priority=2 } # 明文鏈接方式(不使用WPA和IEEE802.1X) network={ ssid="plaintext-test" key_mgmt=NONE } # 共享WEP密鑰鏈接方式(不使用WPA和IEEE802.1X) network={ ssid="static-wep-test" key_mgmt=NONE # 引號包含的密鑰是ASCII密鑰 wep_key0="abcde" # 沒有引號包含的密鑰是十六進制密鑰 wep_key1=0102030405 wep_key2="1234567890123" wep_tx_keyidx=0 priority=5 } # 共享WEP密鑰鏈接方式(無WPA和IEEE802.1X),使用共享密鑰IEEE802.11驗證方式 network={ ssid="static-wep-test2" key_mgmt=NONE wep_key0="abcde" wep_key1=0102030405 wep_key2="1234567890123" wep_tx_keyidx=0 priority=5 auth_alg=SHARED } # 在IBSS/ad-hoc網絡中使用WPA-None/TKIP network={ ssid="test adhoc" mode=1 proto=WPA key_mgmt=WPA-NONE pairwise=NONE group=TKIP psk="secret passphrase" } |
Wireless Tools提供了一個通用的方法設置無線網絡接口,最高可達WEP安全等級。雖然WEP是一種較弱的安全方式,但它也是最廣泛使用的加密方式。
Wireless Tools的配置由幾個主要變量來控制,如下配置文件的例子描述了您所須要瞭解的全部內容。要牢記於心的是:可確保「鏈接到沒有加密的而且信號最強的AP」的配置並不存在——但咱們會一直嘗試並幫您鏈接到某個AP。
代碼 3.1: 安裝wireless-tools |
# emerge net-wireless/wireless-tools |
注意: 儘管您能夠將無線設置保存在/etc/conf.d/wireless中,可是本指南仍是推薦您將它們保存在/etc/conf.d/net之中。 |
重要: 您將須要參閱文檔變量名稱。 |
代碼 3.2: 在/etc/conf.d/net中配置iwconfig的例子 |
# 使用iwconfig而不用wpa_supplicant modules=( "iwconfig" ) # 爲名爲ESSID1和ESSID2的AP配置WEP密鑰 # 您最多能夠配置4個WEP密鑰,但任什麼時候候只有其中1個起做用。 # 因此咱們提供一個默認的下標[1]來設置密鑰[1],以後緊接着把活動密鑰設置爲[1]。 # 咱們這麼作以備你讓其餘ESSID使用[1]之外的WEP密鑰。 # # key加上前綴s:意味着它是一個ASCII密鑰,不然它就是一個16進制密鑰。 # # enc open 指定開放安全性(最安全) # enc restricted 指定限制安全性(較不安全) key_ESSID1="[1] s:yourkeyhere key [1] enc open" key_ESSID2="[1] aaaa-bbbb-cccc-dd key [1] enc restricted" # 如下僅在咱們掃描可用的AP時起做用 # 有時有多個AP可見,因此咱們須要規定一個首選的鏈接次序。 preferred_aps=( "ESSID1" "ESSID2" ) |
您能夠添加一些額外的選項來細緻的調整AP的選擇,不過正常狀況下並不須要這麼作。
您能夠決定是否只鏈接首選的AP。默認狀況下,當配置中列出的全部AP的鏈接都失敗後,這時若是環境中有一個非加密的AP,系統將會與其鏈接。這個行爲能夠用associate_order變量來進行控制。下面給出一個相關的值的列表以及它們如何控制AP的選擇。
值 | 描述 |
any | 默認行爲 |
preferredonly | 只鏈接首選列表裏的可見AP |
forcepreferred | 按首選列表裏的順序強制鏈接AP,若是掃描不到的話 |
forcepreferredonly | 不進行掃描——按首選列表裏的順序直接嘗試鏈接AP |
forceany | 和forcepreferred同樣,外加鏈接到任何其餘可用的AP |
最後咱們還提供了一些blacklist_aps和unique_ap的選擇。blacklist_aps的工做方式和preferred_aps相似。unique_ap是一個yes或no的值,它決定了是否容許兩個無線接口同時接入一個AP。
代碼 3.3: blacklist_aps和unique_ap的例子 |
# 有時您根本不想鏈接到某些AP blacklist_aps=( "ESSID3" "ESSID4" ) #若是您有多個無線網卡,您能夠決定是否容許每一個卡都能鏈接到同一個無線AP # 能夠取的值是"yes"或者"no" # 默認設置爲"yes" unique_ap="yes" |
當您在管理模式中沒法鏈接到任何AP時,您也能夠將本身的設備設置成Ad-Hoc節點。
代碼 3.4: 失敗後轉用ad-hoc模式 |
adhoc_essid_eth0="This Adhoc Node" |
那麼,要如何鏈接到Ad-Hoc網絡,或者乾脆運行於Master模式使自身成爲一個無線接入點呢?這裏有這樣一個設置!您可能須要參照本章前面的內容來指定WEP密鑰。
代碼 3.5: ad-hoc/master配置的例子 |
# 設定模式爲managed(默認)、ad-hoc或者master。並非全部的設備都支持全部的模式。 mode_eth0="ad-hoc" # 設定接口的ESSID # 在managed模式中,這將強制此接口只嘗試鏈接特定的ESSID。 essid_eth0="This Adhoc Node" # 指定使用的頻道,不然將默認使用頻道3。 channel_eth0="9" |
重要: 如下是從NetBSD 文檔的BSD wavelan文檔中逐字逐句複製過來的內容。目前共計有14個可用的頻道;1-11頻道在北美是合法的,而在歐洲大部分地區則是頻道1-13,在法國是頻道10-13,在日本只容許使用頻道14。若是有疑問,請參考隨您所購買的無線網卡或AP附帶的說明書。確保調整您的無線網卡與AP(或工做於ad-hoc模式的另外一塊無線網卡)使用同一個頻道。默認狀況下,在北美和歐洲大部分地區銷售的無線網卡使用頻道3;在法國使用頻道11,在日本使用頻道14。 |
一些環境或驅動的問題可能會使無線網絡不能正常工做,下表多給出一些變量,可能有助於你解決問題。
參數 | 默認值 | 描述 |
iwconfig_eth0 | 請參看iwconfig的man page瞭解iwconfig各項參數 | |
iwpriv_eth0 | 請參看iwpriv的man pages瞭解iwpriv各項參數 | |
sleep_scan_eth0 | 0 | 在嘗試掃描前的休眠時間(以秒爲單位)。當驅動/固件須要時間激活時設置這個值。 |
sleep_associate_eth0 | 5 | 無線網絡嘗試鏈接到AP等待的秒數,超時則轉向下一個AP。 |
associate_test_eth0 | MAC | 一些驅動程序在失去鏈接或嘗試鏈接時不會重置無效AP的MAC地址,而有一些驅動程序在碰到這些狀況時不會重設quality level。這裏有效的設定是MAC,quality和all。 |
scan_mode_eth0 | 某些驅動必須在ad-hoc模式下掃描,所以若掃描失敗的話請嘗試把此變量設置成ad-hoc | |
iwpriv_scan_pre_eth0 | 掃描前先向接口發送一些iwpriv命令。更多細節請參看iwpriv的man page。 | |
iwpriv_scan_post_eth0 | 掃描後向接口發送一些iwpriv命令。更多細節請參看iwpriv的man page。 |
有時,您鏈接ESSID1須要使用一個固定IP,而鏈接ESSID2要使用DHCP。實際上,大多數模塊變量能夠針對每一個ESSID來定義。下面咱們給出具體的作法。
注意: 只有使用WPA Supplicant或者Wireless Tools時,這些設定才起做用。 |
重要: 您將須要參閱文檔變量名稱。 |
代碼 4.1: 覆蓋每個ESSID的配置 |
config_ESSID1=( "192.168.0.3/24 brd 192.168.0.255" ) routes_ESSID1=( "default via 192.168.0.1" ) config_ESSID2=( "dhcp" ) fallback_ESSID2=( "192.168.3.4/24" ) fallback_route_ESSID2=( "default via 192.168.3.1" ) # 咱們能夠定義DNS服務器和其餘的一些東西 # 注意:DHCP將覆蓋這些設定,除非咱們要求它不要覆蓋 dns_servers_ESSID1=( "192.168.0.1" "192.168.0.2" ) dns_domain_ESSID1="some.domain" dns_search_domains_ESSID1="search.this.domain search.that.domain" # 根據無線AP的MAC地址來覆蓋相關設定 # 這在不一樣地點有相同ESSID的狀況下很是有用 config_001122334455=( "dhcp" ) dhcpcd_001122334455="-t 10" dns_servers_001122334455=( "192.168.0.1" "192.168.0.2" ) |