Linux下Wi-Fi配置工具2


上回說到,linux下面的Wi-Fi配置工具,說是江湖多事,風起雲涌。。。嗯,這回是真的要動手配置了。各種麻煩啊,想死的心都有了有木有啊。

 

嘗試用iwconfig

話說上回說用iwconfig配置Wi-FI,這次一上手就從這里開始了。各種嘗試啊。

1)首先,要把網卡down掉

ifdown wlan0

1)獲得各個能用的AP的參數

iwlist wlan0 scan

2)告訴網卡,ssid是多少,直接復制上面要用到的ssid

iwconfig wlan0 essid ssid_of_my_ap

3)告訴你的網卡,密碼是多少,輸入你的密碼就好了

iwconfig wlan0 key your_passwd

#if the key is ascii
iwconfig wlan0 key s:your_passd

eg:
iwconfig wlan0 key 1234_567

4)然后,俺還嘗試了

iwconfig wlan0 ap xx:xx:xx:xx:xx
#xx:xx:xx:xx:xx is the MAC of my ap

5)這時候可以把網卡開起來了

ifup wlan0

6)什么?發現不工作?這就對了,iwconfig原生只支持WEP加密,該加密已經死翹很久了,現在多是wpa。。。那怎么辦。那需要wpa_supplicant的幫助。而且,你能做到這一步的可能也不大,因為如果是wpa的密碼的話,在第三步會一直報錯的(wpa的密碼比WEP的要長,一直在提示key unlegal之類的錯誤)

好吧,放狗找了下,需要用wpa_supplicant來支援WPA的網絡。

 

嘗試用wpa_supplicant

因為我的系統上面已經有wpa_supplicant,所以,這里不考慮安裝的問題。

這里主要是修改它的配置文件/etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="TP-LINK_8D0B8A"
key_mgmt=WPA-PSK
psk="12345678"
}

那,我以為是設置這里,然后ifdown,ifup就可以了。。。但是事實上它還是不工作。

然后看到,說是要設置這里/etc/network/interfaces

auto wlan0
iface wlan0 inet dhcp
wpa-ssid "secret-wiki-net"
wpa-psk "verysecret-wpa-psk"

然后,ifup,ifdown...貌似就可以了(這個方法是對的

但是,事實上還是不行,俺dhcp老是不成功啊。。。然后手動再設ip,連ap都ping不到。

這時候想試試直接打開wpa_supplicant,用了下下面的指令打開wpa_supplicant:

sudo wpa_supplicant -d -c/etc/wpa_supplicant/wpa_supplicant.conf -iwlan0 -Dwext &
額,然后ifconfig查看,居然分配到IP了,ping了下8.8.8.8,bingo!通了!
唔,這個是又邁出了一小步,待進一步了解。
 
后記:
正確的方法應該是在interfaces里面設置,是我更改interfaces的方式不對,上面提到的四句應該是放到一起的,放一起就好了。直接restart networking,Wi-Fi就能連上。
不過,用wpa_supplicant的話, 打印出好多信息,這個應該是調試硬件的時候用處蠻大的。
猜測下,他們應該是networking會去調用wpa_supplicant,然后wpa_supplicant會去調用iwconfig。。。反正最后用iwconfig查看的時候,顯示網卡是和ssid是associated。
 
有人講,正確的wpa_supplicant應該是下面這個樣子,這樣的話甚至不用去該interfaces了是不是?
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
 
network={
ssid="__SSID__"
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
psk="__PASSWORD__"
}

待驗證。

另外還有個問題,插拔usb-WiFi的時候系統會重啟。。。應該是hot-plug的問題,這個留待后面解決吧,暫且先到這里。------》插拔大功率USB設備時重啟,是因為硬件bug,so,將就着用吧。
 
再后記:
原來networking的restart里面是這樣寫的:
force-reload|restart)
        if init_is_upstart; then
                exit 1
        fi
        process_options

        log_warning_msg "Running $0 $1 is deprecated because it may not re-enable some interfaces"
        log_action_begin_msg "Reconfiguring network interfaces"
        ifdown -a --exclude=lo $verbose || true
        set -f
        exclusions=$(process_exclusions)
        if ifup -a --exclude=lo $exclusions $verbose && ifup_hotplug $exclusionss
 $verbose
        then
            log_action_end_msg $?
        else
            log_action_end_msg $?
        fi

先全部ifdown,然后再全部ifup。。。so

所以,還是需要先研究下networking的啟動的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM