Difference between revisions of "Wireless network configuration (简体中文)"

From ArchWiki
Jump to: navigation, search
(手动设置: use ip route command.)
(手动设置: Update translation)
Line 418: Line 418:
 
{{注意| 根据硬件和加密方式的不同,下面一些步骤可以省略。有些设备需要在建立关联时激活接口或扫描访问点,并提供 IP 地址。需要进行一些尝试,例如 WPA/WPA2 用户可以直接到第三步激活无线网络。}}
 
{{注意| 根据硬件和加密方式的不同,下面一些步骤可以省略。有些设备需要在建立关联时激活接口或扫描访问点,并提供 IP 地址。需要进行一些尝试,例如 WPA/WPA2 用户可以直接到第三步激活无线网络。}}
  
'''0.''' (可能需要) 设置无线网卡的操作模式,如果连接到漫游网络,需要设置操作模式为 '''ad-hoc:'''
+
==== 操作模式 ====
 +
(可能需要) 设置无线网卡的操作模式,如果连接到漫游网络,需要设置操作模式为 '''ad-hoc:'''
 
   
 
   
 
  # iw wlan0 set type ibss
 
  # iw wlan0 set type ibss
Line 424: Line 425:
 
{{注意|如果不知道要连接网络的类型,可以通过第二步获得然后再回来设置模式。修改模式后可能需要关闭无线接口({{ic|ip link set wlan0 down}})。}}
 
{{注意|如果不知道要连接网络的类型,可以通过第二步获得然后再回来设置模式。修改模式后可能需要关闭无线接口({{ic|ip link set wlan0 down}})。}}
  
'''1.''' (可能需要) 一些无线网卡在使用 {{pkg|wireless_tools}}前需要激活内核接口:
+
==== 激活内核接口 ====
  # ifconfig wlan0 up
+
(可能需要) 一些无线网卡在使用 {{pkg|wireless_tools}}前需要激活内核接口:
 +
# ip link set wlan0 up
  
'''2.''' (可能需要) 查看可以的接入点:
+
==== 查看接入点 ====
  
 
  # iw dev wlan0 scan |less
 
  # iw dev wlan0 scan |less
Line 433: Line 435:
 
{{注意|如果显示 "Interface doesn't support scanning",可能是忘了安装固件。有时不以 root 运行 {{ic|iwlist}} 也会产生这个问题。同样无线网络可能被软禁于,请安装 {{pkg|rfkill}} 并运行 {{ic|rfkill list all}} 进行检查。}}
 
{{注意|如果显示 "Interface doesn't support scanning",可能是忘了安装固件。有时不以 root 运行 {{ic|iwlist}} 也会产生这个问题。同样无线网络可能被软禁于,请安装 {{pkg|rfkill}} 并运行 {{ic|rfkill list all}} 进行检查。}}
  
'''3.''' 根据加密方式不同,需要使用密码将无线设备关联到接入点。
+
The important points to check:
 +
* ESSID: the "name" of the access point.
 +
* Quality: in general try something above 40/70.
 +
* Encryption key: if it is "on", check if you can see any line regarding
 +
** WEP, WPA, or RSN. Note that RSN and WPA2 are different names for the protocol.
 +
** Group cipher: value in TKIP, CCMP, both, others.
 +
** Pairwise ciphers: value in TKIP, CCMP, both, others. Not necessarily the same value than Group cipher.
 +
** Authentication Suites: value in PSK, 802.1x, others. For home router, you'll usually find PSK (''i.e.'' passphrase). In universities, you are more likely to find 802.1x suite which requires login and password. Then you will need to know which key management is in use (e.g. EAP), and what encapsulation it uses (e.g. PEAP). Find more details at [[Wikipedia:List_of_authentication_protocols]] and the sub-articles.
 +
 
 +
==== 关联 ====
 +
 
 +
根据加密方式不同,需要使用密码将无线设备关联到接入点。
  
 
假设要使用的接入点 ESSID 为 {{ic|MyEssid}}:  
 
假设要使用的接入点 ESSID 为 {{ic|MyEssid}}:  
Line 452: Line 465:
 
假设设备使用 {{ic|wext}} 驱动。如果无法工作,可能需要调整选项,参见 [[WPA_Supplicant]]。
 
假设设备使用 {{ic|wext}} 驱动。如果无法工作,可能需要调整选项,参见 [[WPA_Supplicant]]。
  
'''4.''' 最后,为设备提供 IP 地址。
+
==== 获取 IP 地址 ====
 
使用 DHCP:
 
使用 DHCP:
 
  # dhcpcd wlan0
 
  # dhcpcd wlan0
  
 
静态 IP:
 
静态 IP:
  # ifconfig wlan0 192.168.0.2
+
  # ip addr add 192.168.0.2/24 dev wlan0
 
  # ip route add default via 192.168.0.1
 
  # ip route add default via 192.168.0.1
  

Revision as of 09:09, 8 March 2013

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary text Template:Article summary end

翻译状态: 本文是英文页面 Wireless_Setup翻译,最后翻译时间:2012-12-04,点击这里可以查看翻译后英文页面的改动。

配置无线网络一般分两步:第一步是识别硬件、安装正确的驱动程序并进行配置;第二步是选择一种管理无线连接的方式。这篇文章涵盖了这两方面,并提供了无线管理工具的链接地址。

关于 Arch 新装系统:在安装 Archlinux 时,无线网络驱动和工具已经包含在 base 组中。请确保为无线网卡安装正确的驱动。通常在初始化的光盘系统和新装的系统中,Udev 会加载合适的驱动,并创建无线网络接口。如果在安装 Archlinux 系统的时候没有配置无线网卡,请确保下列所需的软件包已经通过 pacman 安装完毕(驱动,必须的固件, wireless_toolsiwwpa_supplicant,等等。),同时按照指导的步骤进行安装配置。

第一部分: 识别网卡/安装驱动

查看是否是支持的硬件

先确定内核是否包含驱动,有没有用户空间的驱动。

识别网卡

通过如下命令找到网卡类型

# lspci | grep -i net

或者,如果是 USB 设备,运行

# lsusb
注意: 笔记本的内置网卡可能是 USB 设备,所以两个命令都运行试试。

查看网卡是否被支持

如果没有包括您的设备

如果列表中没有,可能你的设备只提供了 Windows 驱动(比如 Broadcom, 3com 等)。这时需要用 ndiswrapper.

Ndiswrapper 可以在 Linux 中使用 Windows 驱动。兼容性列表在 这里. 需要 Windows 中安装的 .inf.sys 文件。如果有更新的网卡,请通过互联网搜索型号名称 + 'linux' 以获取更多信息。

安装用户空间工具

如果有线连接已经存在

如果已经有有线网络,可以安装 wireless_tools

注意: wireless_tools 也许不是必要的,这与你的硬件的年份以及硬件/驱动是否支持 wpa_supplicant有关。如果你的配置文件在 wpa_supplicant 下支持的很好,那么推荐只使用 wpa_supplicant。

本页面中的驱动相关的包名都是使用加粗高亮或者通过等宽字体表示。可以在初始安装时选择安装,之后也可以安装

如果只有无线连接

软件包wireless_tools已经属于base-devel分类,包含在默认的 Arch 安装介质上。

你必须使用这些用户工具才能启用无线连接,所以请务必安装(在选择软件包阶段)。特别是如果没有其他上网方式,会在 Arch 系统重启阶段进入死循环:需要这些无线工具和驱动,但是为了获取他们,还是需要无线工具和驱动。

安装驱动和固件

默认的 Arch 内核是模块化的,即不同机器硬件的驱动都是以 内核模块 的形式分开存放在硬盘中。启动时,Udev 会根据硬件装入相应的驱动,内核就可以建立对应的接口了。

不同设备和驱动的接口名字可能不同,比如 wlan0, eth1 和 ath0 等。

注意: Udev 并不完美,如果 udev 启动时没有装入正确的硬件,可以通过 modprobe 装入并将模块名加入/etc/modules-load.d/ 中的一个 .conf 配置文件。注意 udev 有时会装入一个设备的多个驱动,并导致冲突,无法正确配置。可以通过 /etc/modprobe.d/进行屏蔽。

这里包含如何获取你的网卡驱动的细节。另外,某些芯片组需要安装相关的固件。查看内核模块获取更多关于操作内核模块的信息。

rt2860 和 rt2870

从 Linux 3.0 内核开始,阶段性的驱动 rt2860sta 被主分支驱动 rt2800pci 替代,rt2870start2800usb 替代。同时阶段性的驱动已被删除,参见Kernel commit

通过 iwpriv 可以配置很多参数,文档在 Ralink 源代码包 中。

rt3090

For devices which are using the rt3090 chipset it should be possible to use rt2860sta driver. The mainline driver rt2800pci is not working with this chipset very well (e.g. sometimes it's not possible to use higher rate than 2Mb/s).

The best way is to use rt3090AUR driver from AUR. But do not forget to set up the loading of the rt3090 after boot and blacklisting the rt2800pci kernel module.

rt2x00

Ralink 芯片组的统一驱动,代替了 rt2500, rt61, rt73 等。Linux 内核从 2.6.24 开始包含此驱动,但是有些设备可能需要额外固件。可以使用标准 wpa_supplicantiwconfig 工具配置。

有些芯片组需要固件文件,可以安装软件包 linux-firmware

参见: Using the new rt2x00 beta driver

rt3573

2012年新出的芯片组,需要 Ralink 的闭源驱动,有不同的厂商使用他们,参阅Belkin N750 示例

rt5572

支持 5 Gh 频率,需要 Ralink 的闭源驱动,编译指令位于这里

w322u

这个 Tenda 卡是 rt2870sta 设备,参见: rt2870

rtl8180

Realtek rtl8180 PCI/Cardbus 802.11b 以被内核完全支持,可以通过标准 wpa_supplicantiwconfig 工具配置。

rtl8187

参见: rtl8187

rtl8192e

以被内核完全支持,可以通过标准 wpa_supplicantiwconfig 工具配置。

注意: wicd 可能导致间歇断网,而 NetworkManager 工作正常。
模块初始化失败

启动时可能装入模块失败,错误信息是:

rtl819xE:ERR in CPUcheck_firmware_ready()
rtl819xE:ERR in init_firmware() step 2
rtl819xE:ERR!!! _rtl8192_up(): initialization is failed!
r8169 0000:03:00.0: eth0: link down

一个暂时的解决方法是卸载模块:

# modprobe -r r8192e_pci

等一会后,重新装入模块:

# modprobe r8192e_pci

rtl8192s

当前内核已经包含驱动,如果无/usr/lib/firmware/RTL8192SU/rtl8192sfw.bindmesg 会报告 "rtl819xU:FirmwareRequest92S(): failed",可以手动下载固件:

$ wget http://launchpadlibrarian.net/33927923/rtl8192se_linux_2.6.0010.1012.2009.tar.gz
# mkdir /lib/firmware/RTL8192SU
# tar -xzOf rtl8192se_linux_2.6.0010.1012.2009.tar.gz \
 rtl8192se_linux_2.6.0010.1012.2009/firmware/RTL8192SE/rtl8192sfw.bin > \
 /lib/firmware/RTL8192SU/rtl8192sfw.bin
注意: wicd 可能导致间歇断网,而 NetworkManager 工作正常。

madwifi-ng

MadWifi 开发组维护了三个模块:

  • ath_pci 是最老的驱动
  • ath5k 将逐步替代 ath_pci,有些芯片组使用效果很好,但有些还不能很好工作(后面有介绍)
  • ath9k 是新的官方驱动,适用于新 Atheros 硬件。

要使用老 ath_pci: madwifiAUR 和可选的 madwifi-utils-svnAUR

# modprobe ath_pci

如果使用 ath_pci,需要屏蔽 ath5k。参见 Kernel_modules#Blacklisting

为了能够使用所在国家制定的关于channels和transmit power settings, 你可能需要在加载MadWifi驱动的时候添加一个countrycode的配置项. 例如, 在荷兰的时候, 你可能需要用如下的代码来加载MadWifi驱动:

modprobe ath_pci countrycode=528

你可以使用 iwlist 命令来检查你的设置, 通过 man iwlist 或者 MadWifi wiki 上的国家代码页面 得到更多的信息. 为了让系统启动的时候就能够自动应用上那些设置, 可以把它们放到 内核模块配置中:

options ath_pci countrycode=528

ath5k

ath5k 是 AR5xxx 芯片组优先选择的驱动。支持 madwifi-ng 支持的许多芯片组和比 AR5xxx 更老的芯片组。

如果 ath5kath_pci 冲突,需要 屏蔽 如下驱动:

ath_hal
ath_pci
ath_rate_amrr
ath_rate_onoe
ath_rate_sample
wlan
wlan_acl
wlan_ccmp
wlan_scan_ap
wlan_scan_sta
wlan_tkip
wlan_wep
wlan_xauth

手动 modprobe ath5k 或重启,这样应该能看到 wlan0 (或 wlanX)。

参考:

有些笔记本的 LED 指示灯有问题,可以:

echo none > "/sys/class/leds/ath5k-phy0::tx/trigger"
echo none > "/sys/class/leds/ath5k-phy0::rx/trigger"

ath9k

ath9k 是 Atheros 官方支持的驱动,支持所有带 802.11n 功能的芯片组,最大传输速度 180 Mbps. 这个页面 列出了所有支持的硬件。

工作模式:Station, AP and Adhoc.

ath9k 是官方内核的一部分。如果在极个别情况下遇到稳定性问题,可以使用 compat-wireless 软件包。ath9k 邮件列表 提供了支持和开发的相关信息。

参考:

ath9k_htc

ath9k_htc 是 Atheros 官方支持的 802.11n USB 设备驱动,支持基站和漫游模式。驱动是内核的一部分,详情请访问:http://wireless.kernel.org/en/users/Drivers/ath9k_htc .

ipw2100 与 ipw2200

内核完全支持,但是需要安装额外的固件。可以通过标准 wpa_supplicantiwconfig 工具配置。

根据芯片组型号,安装 软件包 ipw2100-fwipw2200-fw

重启计算机或者以 root 运行:

# rmmod ipw2200
# modprobe ipw2200
启用 radiotap 接口

以 root 运行:

rmmod ipw2200
modprobe ipw2200 rtap_iface=1
启用 LED

大部分笔记本有 LED 灯指示状态,在 /etc/modprobe.d/ipw2200.conf 中加入:

options ipw2200 led=1

iwl3945, iwl4965 和 iwl5000-series

Inter 的 Linux 开源驱动 iwl (Intel Wi-Fi drivers for Linux). iwlwifi 从 2.6.24 内核开始支持 3945 和 4965 系列芯片组。从 2.6.27 开始通过 iwlagn 支持 iwl5000 系列芯片组(包括 5100BG, 5100ABG, 5100AGN, 5300AGN 和 5350AGN). 从 2.6.34 开始固件移入 linux-firmware,已经不需要单独安装。

装入驱动

udev 应该能够自动装入驱动,要手动设置,请阅读 Kernel modules#Loading,装入iwl3945.

重启后驱动应该已经装入,在终端运行 ip addr 应该报告 wlan0 为新网络接口。

禁用 LED 闪烁

默认设置中 LED 闪烁是开着的,有些人不喜欢,可以通过如下方式禁止闪烁:

# echo 'w /sys/class/leds/phy0-led/trigger - - - - phy0radio' > /etc/tmpfiles.d/phy0-led.conf
# systemd-tmpfiles --create phy0-led.conf

要查看可用的触发数值:

# cat /sys/class/leds/phy0-led/trigger

如果没有 /sys/class/leds/phy0-led,可以使用老方法:

# echo "options iwlegacy led_mode=1" >> /etc/modprobe.d/modprobe.conf
# rmmod iwlagn
# rmmod iwlcore
# modprobe iwlcore
# modprobe iwlagn
其它
  • The MS Windows NETw4x32 driver can be used with ndiswrapper as an alternative to the iwl3945 and ipw3945 drivers.
  • In some cases (specifically a Dell Latitude D620 with Arch 2008.06, though it could happen elsewhere), after installation you may have both iwl3945 and ipw3945 modules loaded. The card will not work with both modules loaded, so you will have to blacklist the ipw3945 module.
  • iwl3945 默认仅工作在通道 1-11。在美国等地方,不允许使用更高的频率。但是欧洲经常使用通道 12 和 13,日本可以使用通道 14.要让 iwl3945 扫描所有通道,在 /etc/modprobe.d/modprobe.conf 中加入:
options cfg80211 ieee80211_regdom=EU

iwlist f 可以查看可用通道.

  • crda 可以启用更多频道,安装软件包后,编辑 /etc/conf.d/wireless-regdom,取消国家码前的注释。将 wireless-regdom 加到 /etc/rc.confDAEMONS 并重启。执行 # iwlist wlan0 channel,应该能够访问更多的通道了。

orinoco

这应当是内核的一部分,是已经被安装的。

Note: Some Orinoco chipsets are Hermes I/II. You can use the AUR package wl_lkmAUR to replace the orinoco driver and gain WPA support. See this post for more information.

To use the driver, blacklist orinoco_cs, and then add wlags49_h1_cs.

ndiswrapper

Ndiswrapper并不是一个真正的驱动,但是如果你无法找到适合你的无线网卡驱动的适合, 它就派上用场了.有的时候, 它是非常有用的.为了使用Ndiswrapper, 你需要Windows驱动中的*.inf文件(*.sys文件应该和*.info在同一个目录中)。确保使用合适架构(也就是32/64位)的驱动。如果你需要从 *.exe 文件解压缩,你可以使用 cabextract.

下面是安装ndiswrapper的几个步骤:

1. 安装驱动到 /etc/ndiswrapper/*

ndiswrapper -i filename.inf

2. 列出所有的安装的驱动

ndiswrapper -l

3. 书写配置文件到 /etc/modprobe.d/ndiswrapper.conf

ndiswrapper -m
depmod -a

现在基本上就要安装完ndiswrapper了; 依照 这里设置启动时加载这个模块。

modprobe ndiswrapper
iwconfig

如果正常的话, 你应该可以看到wlan0接口了. 如果有问题的话, 你可以从 Ndiswrapper 安装 wiki上面得到更多的信息.

prism54

这里下载与你的网卡匹配的固件驱动。将文件重命名为isl3890。如果/usr/lib/firmware 不存在,那么创建目录并,然后将isl3890放进去。这样就可以了。(论坛信息)

如果不行,请尝试:

  • 根据硬件重新装入 prism 模块 modprobe p54usbmodprobe p54pci,重新插拔 Wi-Fi 卡。
  • dmesg 命令查看输出信息,查找类似这样的内容:
firmware: requesting isl3887usb_bare
p54: LM86 firmware
p54: FW rev 2.5.8.0 - Softmac protocol 3.0

将固件文件名重命名为相应的名字。

如果在执行 ip link set wlan0 up 时遇到

SIOCSIFFLAGS: Operation not permitted

prism54: Your card/socket may be faulty, or IRQ line too busy :(

可能是因为过时的 prism54 和新内核模块 p54pcip54usb 同时装入造成冲突,使用 lsmod | grep prism54 查看是否装入了过时模块,如果是,那么就 屏蔽 prism54 并根据上面方法修改固件名称。

ACX100/111

软件包: tiacx tiacx-firmware

查看 /var/log/messages.log 或 使用 dmesg 可以找到需要的固件。

将需要的固件链接到 /usr/lib/firmware:

ln -s /usr/share/tiacx/acx111_2.3.1.31/tiacx111c16 /usr/lib/firmware

通过 固件选择 页面也能查到要使用的固件。例如 dlink_dwl650+ 使用 "1.9.8.b",那么需要执行:

ln -s /usr/share/tiacx/acx100_1.9.8.b/* /usr/lib/firmware

If you find that the driver is spamming your kernel log, for example because you are running Kismet with channel-hopping, you could put this in /etc/modprobe.d/modprobe.conf:

options acx debug=0

如果发现 kernel log 中有很多 Log,很有可能是以为你正同时运行着带 channel-hopping 的 Kismet ,在/etc/modprobe.d/modprobe.conf中添加:

options acx debug=0
注意: 开源的 acx 驱动不支持 WPA/RSN 加密。需要用 Ndiswrapper 使用 Windows 驱动。

b43, broadcom-wl and brcmsmac (previously brcm80211)

参见 Broadcom wireless.

zd1211rw

zd1211rw 是ZyDAS ZD1211 802.11b/g USB WLAN芯片的驱动,最近的版本的内核已经包括了。[1]有被支持的设备列表。 你只需要这样安装固件:

pacman -S zd1211-firmware

carl9170

carl9170 是 Atheros USB AR9170 设备的 802.11n USB 驱动,提供了 GPLv2 固件,支持这些设备。固件现在还不是 linux-firmware 的一部分,位于 AURcarl9170-fwAUR 软件包。Linux 内核 v2.6.37 之后已经包含了其驱动.

要使用此驱动,需要屏蔽如下驱动模块:

  • arusb_lnx
  • ar9170usb

hostap_cs

Host AP 是 Prism2/2.5/3 的 Linux 驱动。

hostap_cs 是内核的一部分。orinico_cs 可能导致问题,编辑 /etc/modprobe.d/modprobe.conf 加入如下内容进行屏蔽:

blacklist orinoco_cs

参见: 主页

compat-wireless-patched

打了补丁的 compat 无线驱动修正了 "fixed-channel -1" 问题,提供了更好的注入。请安装 AUR 中的 compat-wireless-patchedAUR 软件包。

compat-wireless-patchedAUR 并不与其他软件包冲突,放在 /usr/lib/modules/your_kernel_version/updates

这些打了补丁的驱动来自 Linux 无线项目 支持许多上面提到的芯片组:

ath5k ath9k_htc carl9170 b43 zd1211rw rt2x00 wl1251 wl12xx ath6kl brcm80211

支持的组:

atheros ath iwlagn rtl818x rtlwifi wl12xx atlxx bt

可以用 PKGBUILD 编译一组或者单独模块,例如要编译 atheros 组:

scripts/driver-select atheros

请阅读软件包的 PKGBUILD 以修改编译和安装过程。

测试安装

在载入了你的驱动之后,运行 ip link 来确保无线接口(例如 wlanX, ethX, athX)被创建。

如果没有可见的接口,modprobe 一下也许会工作。想要启动你的驱动,使用 rmmodmodprobe 命令。如果rmmod失败,使用modprobe 继续。参见 内核模块 获取更多信息。

例如:如果你的驱动叫做 "driverXXX",你需要运行下面的命令:

# rmmod driverXXX
# modprobe driverXXX

ip link set <interface> up 启动该接口。例如,假设该接口为 wlan0

# ip link set wlan0 up

如果你得到错误信息:SIOCSIFFLAGS: No such file or directory,这最可能意味着你的无线芯片需要一个固件来工作,你需要像上面一样安装。

Part II: 无线网络管理

为了管理已经安装好的无线驱动,并且使无线能正常工作,需要安装一个无线连接管理工具。下面章节将帮助您确定一个最佳管理方法。

过程和需要使用的工具,将依赖于下面几个因素:

  • 配置方式,从完全手动执行每一步到软件自动管理、自动启动
  • 是否使用加密及加密类型
  • 是否需要区分网络配置,是否经常切换不同网络(比如手提电脑)。

管理方法选择

此表列出可以使用的激活和管理无线网络的方法,按照加密和管理方式分类,给出了需要的工具。虽然还有其他办法,但这些是最常使用的:

管理方法 不加密/WEP WPA/WPA2 PSK
手动, 需要每次系统启动重做一次 iproute2 + iwconfig + dhcpcd/iproute2 iproute2 + iwconfig + wpa_supplicant + dhcpcd/iproute2
自动管理,支持网络配置 netcfg, Wicd, NetworkManager等。

更多选择帮助:

- netcfg Wicd NetworkManager +
network-manager-applet
启动时自动连接 net-profiles 服务 yes yes
如果断网或变更未知重连 net-auto-wireless 服务 yes yes
支持 3G 上网 yes
图形界面 (通过系统托盘图标管理网络。
自动检测无线网络
通过 ArchAssistant yes yes
终端工具 使用 wifi-select wicd-curses nmcli

无论选的那个方案,最好先尝试手动方法。这将有助于您了解不同步骤的意义,并在出问题时解决之。 另一个建议:如果可以的话(比如说你在管理你自己的无线接入点),尝试连接一个开放的无线网络来检查是否所有的配置都在正常工作。然后再尝试加密的无线接入点,比如WEP(更易于配置)或者WPA。

从可用性上说,NetworkManagerwicd 的图形界面比较好,可以选择可用网络,提示密码输入,非常直接,推荐使用。

手动设置

软件包 wireless_tools 提供了建立无线连接的基础工具。如果你需要使用 WPA/WPA2 加密,还需要 wpa_supplicant。 这些强大的用户空间终端工具提供了完全的控制手段。

这些例子假设无线设备是 wlan0, 请将其替换为正确的设备名。

注意: 根据硬件和加密方式的不同,下面一些步骤可以省略。有些设备需要在建立关联时激活接口或扫描访问点,并提供 IP 地址。需要进行一些尝试,例如 WPA/WPA2 用户可以直接到第三步激活无线网络。

操作模式

(可能需要) 设置无线网卡的操作模式,如果连接到漫游网络,需要设置操作模式为 ad-hoc:

# iw wlan0 set type ibss
注意: 如果不知道要连接网络的类型,可以通过第二步获得然后再回来设置模式。修改模式后可能需要关闭无线接口(ip link set wlan0 down)。

激活内核接口

(可能需要) 一些无线网卡在使用 wireless_tools前需要激活内核接口:

# ip link set wlan0 up

查看接入点

# iw dev wlan0 scan |less
注意: 如果显示 "Interface doesn't support scanning",可能是忘了安装固件。有时不以 root 运行 iwlist 也会产生这个问题。同样无线网络可能被软禁于,请安装 rfkill 并运行 rfkill list all 进行检查。

The important points to check:

  • ESSID: the "name" of the access point.
  • Quality: in general try something above 40/70.
  • Encryption key: if it is "on", check if you can see any line regarding
    • WEP, WPA, or RSN. Note that RSN and WPA2 are different names for the protocol.
    • Group cipher: value in TKIP, CCMP, both, others.
    • Pairwise ciphers: value in TKIP, CCMP, both, others. Not necessarily the same value than Group cipher.
    • Authentication Suites: value in PSK, 802.1x, others. For home router, you'll usually find PSK (i.e. passphrase). In universities, you are more likely to find 802.1x suite which requires login and password. Then you will need to know which key management is in use (e.g. EAP), and what encapsulation it uses (e.g. PEAP). Find more details at Wikipedia:List_of_authentication_protocols and the sub-articles.

关联

根据加密方式不同,需要使用密码将无线设备关联到接入点。

假设要使用的接入点 ESSID 为 MyEssid:

  • 无加密
 # iwconfig wlan0 essid "MyEssid"

或新接口:

# iw wlan0 connect MyEssid
  • WEP

使用十六进制密码:

 # iwconfig wlan0 essid "MyEssid" key 1234567890

使用 ascii 密码:

 # iwconfig wlan0 essid "MyEssid" key s:asciikey
  • WPA/WPA2

需要安装 WPA_Supplicant 编辑 /etc/wpa_supplicant.conf 文件。然后运行:

# wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf

假设设备使用 wext 驱动。如果无法工作,可能需要调整选项,参见 WPA_Supplicant

获取 IP 地址

使用 DHCP:

# dhcpcd wlan0

静态 IP:

# ip addr add 192.168.0.2/24 dev wlan0
# ip route add default via 192.168.0.1

如果因为“waiting for carrier”出现超时错误,可以设置通道模式为 auto

# iwconfig wlan0 channel auto 
注意: 尽管手动配置可以帮助解决无线问题,每次重启都需要执行这些步骤。

Manual wireless connection at boot using systemd

To have systemd connect to a manually configured wireless network at boot:

Create /etc/conf.d/network to store your interface or static IP settings in:

/etc/conf.d/network
interface=wlan0
address=192.168.0.10
netmask=24
broadcast=192.168.0.255
gateway=192.168.0.1

Create a systemctl unit e.g: /etc/systemd/system/network.service. This example uses dhcpcd and WPA supplicant.

/etc/systemd/system/network.service
[Unit]
Description=Network Connectivity
Wants=network.target
Before=network.target
BindsTo=sys-subsystem-net-devices-${interface}.device
After=sys-subsystem-net-devices-${interface}.device
       
[Service]
Type=oneshot
RemainAfterExit=yes
EnvironmentFile=/etc/conf.d/network
ExecStart=/sbin/ip link set dev ${interface} up
ExecStart=/usr/sbin/wpa_supplicant -B -i ${interface} -c /etc/wpa_supplicant.conf
ExecStart=/sbin/dhcpcd ${interface}
         
[Install]
WantedBy=multi-user.target

Or without /etc/conf.d/network:

/etc/systemd/system/network.service
[Unit]
Description=Network Connectivity
Wants=network.target
Before=network.target
BindsTo=sys-subsystem-net-devices-wlan0.device
After=sys-subsystem-net-devices-wlan0.device
       
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/sbin/ip link set dev wlan0 up
ExecStart=/usr/sbin/wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
ExecStart=/sbin/dhcpcd wlan0
        
[Install]
WantedBy=multi-user.target

Do not forget to enable it!

# systemctl enable network

To test, reboot or make sure all other network daemons are stopped and then issue as superuser

# systemctl start network

自动设置

有许多可选方法,但是注意它们是互斥的,不能同时运行两个守护进程。

Netcfg

netcfg 为 Arch Linux 提供了通用、稳健和快速的网络解决方案。

netcfg 使用基于 profile 的设置,可以自动检测各种网络类型,并不比图形界面难。参见: Netcfg

Wicd

Wicd 是可以同时处理无线和有线网络的管理器。用 Python 和 Gtk 写成,依赖关系比 NetworkManager 少,所以是轻量级桌面的理想选择。位于官方软件仓库.

参见: Wicd

NetworkManager

NetworkManager 是高级网络管理工具,在大部分流行发行版中使用。除了能管理有线链接,NetworkManager还提供了一个易于使用的图形界面程序来选择想要的无线移动链接。

如果不使用 GNOME 而是要使用 Openboxxmonad,请 安装 软件包 polkit-gnome, gnome-keyring, libgnome-keyringpyxdg 以管理 WEP, WPA, 和 WPA2 连接。

详情请见 NetworkManager

Wifi Radar

WiFi Radar是 一个Python/PyGTK2 的管理无线配置的程序(只有无线)。它能够扫描可用的网络,为选择的网络创建新的配置。

详情请见Wifi Radar

Wlassistant

Wlassistant是一个非常简单直观的图形界面无线网连接管理程序。 从 AUR 安装 wlassistantAUR 软件包。

Wlassistant必须以root权限运行:

# wlassistant

一种使用 wlassistant 的方法是在 /etc/rc.conf 里面配置无线网卡,给出最常用的接入点。开机后网卡就会自动连接到这个ESSID,但是如果需要连接其他的无线网络,可以启动 wlassistant 进行配置。在/etc/rc.conf 中 Daemon 数组的 network 前加一个@来后台运行守护程序,这样可以减少开机等待时间。

Power saving

参阅Power_saving.

参见

其他资源