命令行连接到无线网络在 ubuntu 10.04 上不起作用

Posted

技术标签:

【中文标题】命令行连接到无线网络在 ubuntu 10.04 上不起作用【英文标题】:Command line connect to wireless network does not work on ubuntu 10.04 【发布时间】:2015-06-04 08:36:57 【问题描述】:

亲爱的各位大神,

一些专家列出了连接到无线网络的详细信息,

This is a step-to-step guide for connecting to a WPA/WPA2 WiFi network via the Linux command line interface. The tools are:

wpa_supplicant
iw
ip
ping
iw is the basic tool for WiFi network-related tasks, such as finding the WiFi device name, and scanning access points. wpa_supplicant is the wireless tool for connecting to a WPA/WPA2 network. ip is used for enabling/disabling devices, and finding out general network interface information.

The steps for connecting to a WPA/WPA2 network are:

Find out the wireless device name.
$ /sbin/iw dev
phy#0
    Interface wlan0
        ifindex 3
        type managed
The above output showed that the system has 1 physical WiFi card, designated as phy#0. The device name is wlan0. The type specifies the operation mode of the wireless device. managed means the device is a WiFi station or client that connects to an access point.

Check that the wireless device is up.
$ ip link show wlan0
3: wlan0: (BROADCAST,MULTICAST) mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000
    link/ether 74:e5:43:a1:ce:65 brd ff:ff:ff:ff:ff:ff
Look for the word "UP" inside the brackets in the first line of the output.

In the above example, wlan0 is not UP. Execute the following command to bring it up:

$ sudo ip link set wlan0 up  
[sudo] password for peter: 
Note: you need root privilege for the above operation.

If you run the show link command again, you can tell that wlan0 is now UP.

$ ip link show wlan0
3: wlan0: (NO-CARRIER,BROADCAST,MULTICAST,UP) mtu 1500 qdisc mq state DOWN mode DEFAULT qlen 1000
    link/ether 74:e5:43:a1:ce:65 brd ff:ff:ff:ff:ff:ff
Check the connection status.
$ /sbin/iw wlan0 link
Not connected.
The above output shows that you are not connected to any network.

Scan to find out what WiFi network(s) are detected
$ sudo /sbin/iw wlan0 scan
BSS 00:14:d1:9c:1f:c8 (on wlan0)
        ... sniped ...
    freq: 2412
    SSID: stanford
    RSN:     * Version: 1
         * Group cipher: CCMP
         * Pairwise ciphers: CCMP
         * Authentication suites: PSK
         * Capabilities: (0x0000)
        ... sniped ...
The 2 important pieces of information from the above are the SSID and the security protocol (WPA/WPA2 vs WEP). The SSID from the above example is stanford. The security protocol is RSN, also commonly referred to as WPA2. The security protocol is important because it determines what tool you use to connect to the network.

Connect to WPA/WPA2 WiFi network.
This is a 2 step process. First, you generate a configuration file for wpa_supplicant that contains the pre-shared key ("passphrase") for the WiFi network.

$ sudo -s
[sudo] password for peter: 
$ wpa_passphrase stanford >> /etc/wpa_supplicant.conf 
...type in the passphrase and hit enter...
wpa_passphrase takes the SSID as the single argument. You must type in     the passphrase for the WiFi network stanford after you run the command. Using that information, wpa_passphrase will output the necessary configuration statements to the standard output. Those statements are appended to the wpa_supplicant configuration file located at /etc/wpa_supplicant.conf.

Note: you need root privilege to write to /etc/wpa_supplicant.conf.

$ cat /etc/wpa_supplicant.conf 
# reading passphrase from stdin
network=
    ssid="stanford"
    #psk="testtest"
    psk=4dfe1c985520d26a13e932bf0acb1d4580461dd854ed79ad1a88ec221a802061

The second step is to run wpa_supplicant with the new configuration file.

$ sudo wpa_supplicant -B -D wext -i wlan0 -c /etc/wpa_supplicant.conf
-B means run wpa_supplicant in the background.

-D specifies the wireless driver. wext is the generic driver.

-c specifies the path for the configuration file.

Use the iw command to verify that you are indeed connected to the SSID.

$ /sbin/iw wlan0 link
Connected to 00:14:d1:9c:1f:c8 (on wlan0)
    SSID: stanford
    freq: 2412
    RX: 63825 bytes (471 packets)
    TX: 1344 bytes (12 packets)
    signal: -27 dBm
    tx bitrate: 6.5 MBit/s MCS 0

    bss flags:  short-slot-time
    dtim period:    0
    beacon int: 100
Obtain IP address by DHCP
$ sudo dhclient wlan0
Use the ip command to verify the IP address assigned by DHCP. The IP address is 192.168.1.113 from below.

$ ip addr show wlan0
3: wlan0:  mtu 1500 qdisc mq state UP qlen 1000
    link/ether 74:e5:43:a1:ce:65 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.113/24 brd 192.168.1.255 scope global wlan0
    inet6 fe80::76e5:43ff:fea1:ce65/64 scope link 
        valid_lft forever preferred_lft forever
Add default routing rule.
The last configuration step is to make sure that you have the proper routing rules.

$ ip route show
192.168.1.0/24 dev wlan0  proto kernel  scope link  src 192.168.1.113 
The above routing table contains only 1 rule which redirects all traffic destined for the local subnet (192.168.1.x) to the wlan0 interface. You may want to add a default routing rule to pass all other traffic through wlan0 as well.

$ sudo ip route add default via 192.168.1.254 dev wlan0
$ ip route show
default via 192.168.1.254 dev wlan0 
192.168.1.0/24 dev wlan0  proto kernel  scope link  src 192.168.1.113 
ping external ip address to test connectivity
$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_req=1 ttl=48 time=135 ms
64 bytes from 8.8.8.8: icmp_req=2 ttl=48 time=135 ms
64 bytes from 8.8.8.8: icmp_req=3 ttl=48 time=134 ms
^C
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 134.575/134.972/135.241/0.414 ms
The above series of steps is a very verbose explanation of how to connect a WPA/WPA2 WiFi network. Some steps can be skipped as you connect to the same access point for a second time. For instance, you already know the WiFi device name, and the configuration file is already set up for the network. The process needs to be tailored according to your situation.

完全按照上面的教程,我连接无线路由器失败。

(以root身份工作)

......
#wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf -D wext
#iw wlan0 link
Not connected.

即使我使用禁用 WPA 身份验证,

iwconfig wlan0 essid XXXXXXXXXXXXX

没有用。

但 GNOME 无线托盘正在运行(可以选择、连接、断开等)

非常感谢您。

【问题讨论】:

对于最卑微的自己,最轻微的暗示就是最大的馈赠。 在 Ubuntu 10.04 上 gnome 是否与 gcc-4.7 不兼容? 为什么没有回复?烫手山芋? 这个帖子有什么异常吗? 对不起,我可能是文盲,但我想知道斯坦福是不是一所美丽的日本大学? 【参考方案1】:

最新的 wpa_supplicant 能够自己完成所有工作。 你写的 wpa_supplicant 选项在我看来没问题。 但是请检查文件“/etc/wpa_supplicant.conf”中的选项,如果它可读并且写得很好(ssid,wpa,密码正确......)

【讨论】:

非常感谢,您已经尝试过我的命令。但即使我关闭了路由器的身份验证,我也无法通过以下命令连接到路由器:iwconfig wlan0 essid XXXXXXXXXXXXX。也许这是我的驱动程序和操作系统之间的问题,而不是无线连接工具。

以上是关于命令行连接到无线网络在 ubuntu 10.04 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

从命令行连接到 MySQL

为啥从 powershell 命令行连接到 github 时出错?

通过命令行连接到 SMB 服务器

如何从命令行连接到托管的 Team Foundation Service

通过命令行连接到 smtp.gmail.com

尝试通过命令行连接到 MySQL,但改为使用 MariaDB