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的启动的。

原文地址:https://www.cnblogs.com/pied/p/3203975.html