Home -- Michael's Blog :: Just Do IT -- Manuals

24.3. 无线网络

作者: Eric Anderson. 中文翻译: 张 雪平 和 袁 苏义.

24.3.1. 简介

如果可以使用没有烦人的随时都通过网线连接的计算机,会真的很有用。FreeBSD可以充当无线客户端,甚至可以做为无线``接入点(access point)''。

24.3.2. 无线操作模式

802.11无线设备有两种不同的配置方式: BSS and IBSS.

24.3.2.1. BSS 模式

BSS 模式是常用的模式。它也被叫做“底层结构(infrastructure)”模式。在此种模式里,一些无线接入点连接到有线网络。每个无线网络有个名字。这个名字被称为网络的SSID。

无线客户端连接到这些无线接入点上。 IEEE 802.11标准定义了用于无线网络连接的协议。在设定了SSID后,一个无线客户端可以连接到一个指定的网络。若不明确指定SSID,一个无线客户端可以被连接到任何的网络。

24.3.2.2. IBSS 模式

IBSS 模式,也叫专属(ad-hoc)模式,是设计来进行点对点的接连的。实际上有两种类型的专属模式。一种是IBSS模式,也叫"ad-hoc" 或"IEEE ad-hoc"模式。这个模式由 IEEE 802.11标准定义。 第二个叫做演示专属(demo ad-hoc)模式或朗讯专属(Lucent ad-hoc)模式(而有时与专属模式是混淆的)。这个是早先的,准802.11专属模式,并且应该只用于过渡性的安装里。对于两类专属模式我不再做进一步介绍了。

24.3.3. 底层结构(Infrastructure)模式

24.3.3.1. 接入点

接入点是一种无线网络设备,它允许一个或更多的无线客户端使用此设备作为中心集线器(hub)。使用接入点时, 所有的客户端通过接入点通信。常用多个接入点来覆盖一个完整的区域,比如一所住房,一片商业区,或一座公园。

接入点一般具有多个网络连接: 无线网卡、 一块或多块用于连接其它网络有线的以太网适配器。

可以购买预建的接入点,你也可以使用FreeBSD及其兼容的无线网卡自己建立接入点。 一些产商制造了带有不同功能的无线接入点和无线网卡。

24.3.3.2. 建立FreeBSD接入点

24.3.3.2.1. 要求

为了在FreeBSD上建立接入点,你要有一块兼容的无线网卡。 至今为止,FreeBSD只支持带有Prism芯片组的网卡。 你还需要被FreeBSD支持的有线网卡(这个不难找到,FreeBSD支持很多不同的设备)。在这里,我们假定你要桥接(bridge(4))有线网卡连接的网络与无线设备之间的所有传输。

FreeBSD用来实现接入点的"hostap"功能与一定版本的firmware(固件)工作得很好。Prism 2 网卡应该使用firmware1.3.4或更新的版本。Prism 2.5 和 Prism 3 网卡应使用firmware1.4.9。老版本的firmware可能无法正常工作。这时候,升级网卡的唯一方式是使用厂商提供的Windows® firmware升级工具。

24.3.3.2.2. 设置并运行

首先,确保你的系统能识别无线网卡:

# ifconfig -a wi0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 inet6 fe80::202:2dff:fe2d:c938%wi0 prefixlen 64 scopeid 0x7 inet 0.0.0.0 netmask 0xff000000 broadcast 255.255.255.255 ether 00:09:2d:2d:c9:50 media: IEEE 802.11 Wireless Ethernet autoselect (DS/2Mbps) status: no carrier ssid "" stationname "FreeBSD Wireless node" channel 10 authmode OPEN powersavemode OFF powersavesleep 100 wepmode OFF weptxkey 1

现在不用考虑细节部分,只要确认有信息表明你已安装了无线网卡。 如果你无法找到无线接口,你可能使用的是PC卡,需要查看pccardc(8)pccardd(8) 联机手册以获取更多信息。

下一步,你需要加载一个模块使FreeBSD的桥接部分为接入点作好准备。 加载桥接bridge(4) 模块,只需运行以下命令:

# kldload bridge

加载模块应该不会产生任何错误。如果发生了错误,你就需要将桥接bridge(4)代码编译入内核。手册的桥接(Bridging)部分应该能帮你完成这个任务。

现在已经完成了桥接的组件,接着我们需要告诉内核将哪些接口桥接在一起。 我们使用sysctl(8)来完成:

# sysctl net.link.ether.bridge=1 # sysctl net.link.ether.bridge_cfg="wi0,xl0" # sysctl net.inet.ip.forwarding=1

On FreeBSD 5.2-RELEASE 以及更新版本,你必须使用下面的选项:

# sysctl net.link.ether.bridge.enable=1 # sysctl net.link.ether.bridge.config="wi0,xl0" # sysctl net.inet.ip.forwarding=1

现在来设置并启动无线网卡。 以下的命令将网卡设置为接入点状态:

# ifconfig wi0 ssid my_net channel 11 media DS/11Mbps mediaopt hostap up stationname "FreeBSD AP"

ifconfig(8) 行用于启动 wi0 接口,并把它的SSID设置为my_net,还有把工作站名设置为FreeBSD APmedia DS/11Mbps 是把卡设置成11Mbps模式,它是任何mediaopt产生作用所必需的。 mediaopt hostap 选项把接口设置成接入点模式。channel 11 选项设置为要使用的802.11b channel(频道)。wicontrol(8) 手册包含一些有效的channel选项。

现在应该启动并运行着一个完全功能的接入点。推荐阅读wicontrol(8)ifconfig(8)wi(4)以求更深入的了解。

同样建议你阅读接着关于加密那一节。

24.3.3.2.3. 状态信息

一旦接入点配置完成且可操作,操作者都会希望查看连入接入点的客户。在任何时候,都可以键入:

# wicontrol -l 1 station: 00:09:b7:7b:9d:16  asid=04c0, flags=3<ASSOC,AUTH>, caps=1<ESS>, rates=f<1M,2M,5.5M,11M>, sig=38/15

显示连接了一个站点,接着的是各种参数。显示的信号通常只作为强度的相对指示。到dBm或其它单元的转换因firmware版本的不同而有所差异。

24.3.3.3. 客户端

一个无线客户端是一个连入接入点或直接连接另一个客户端的系统。

一般地,无线客户端只有一个网络设备,也就是无线网卡。

配置无线客户端的方法有好几种。基于不同的无线模式,一般有BSS (infrastructure 模式,它需要有一个接入点)和IBSS模式(ad-hoc,或点对点模式)。在我们的例子中我们使用了最流行的BSS模式,讨论接入点。

24.3.3.3.1. 要求

将FreeBSD设置为无线客户端事实上只有一个条件。 就是你需要有一块能被FreeBSD支持的无线网卡。

24.3.3.3.2. 设置FreeBSD无线客户端

在开始之前,你需要了解有关要连入的无线网络的一些信息。在本例中,我们将连入一个名为my_net,的无线网络,且关闭了加密功能。

注: 在本例中,我们不使用加密, 这是非常危险的。在下一节中,你将会学到如何开启加密和这样做的重要性的原因,以及为什么一些加密技术仍不能完全地保护你。

确保你的网卡能被FreeBSD识别:

# ifconfig -a wi0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 inet6 fe80::202:2dff:fe2d:c938%wi0 prefixlen 64 scopeid 0x7 inet 0.0.0.0 netmask 0xff000000 broadcast 255.255.255.255 ether 00:09:2d:2d:c9:50 media: IEEE 802.11 Wireless Ethernet autoselect (DS/2Mbps) status: no carrier ssid "" stationname "FreeBSD Wireless node" channel 10 authmode OPEN powersavemode OFF powersavesleep 100 wepmode OFF weptxkey 1

现在,我们要正确地设置网卡:

# ifconfig wi0 inet 192.168.0.20 netmask 255.255.255.0 ssid my_net

192.168.0.20255.255.255.0 替换为有线网络上合法的IP地址和网络掩码。记住,接入点桥连了无线网络和有线网络之间的数据,所以对于网络上的其它设备来说,你就如同在有线网络上。

完成了这些,你应该能ping通有线网络上的主机,就像是通过有线网络连接的一样。

如果你遇到了问题,确认你是否连上了接入点:

# ifconfig wi0

此命令会返回一些信息,你应该能看到:

status: associated

如果显示没有连接上(associated),那你可能在接入点的范围以外,需要关闭加密或者可能有配置问题。

24.3.3.4. 加密

无线网络的加密非常重要因为你无法让网络处于一个被良好保护的区域。你的无线数据会向整个社区广播,任何人都可以读到它。这就需要加密。通过加密向电波发送的数据,使得任何有兴趣的组织从电波中提取数据变得更难。

加密客户端与接入点之间数据的最常用的方法有两种:WEP和ipsec(4)

24.3.3.4.1. WEP

WEP是Wired Equivalency Protocol(有线等效协议)的缩写。 WEP试图使无线网络变得如有线网络一样安全与可靠。不幸的是它已经被攻破, 是非常容易被破解的。这也意味着它不适用于加密敏感数据。

但有总比没有好,使用以下命令FreeBSD接入点上打开WEP:

# ifconfig wi0 inet up ssid my_net wepmode on wepkey 0x1234567890 media DS/11Mbps mediaopt hostap

你可以使用以下这个命令在客户端上打开WEP:

# ifconfig wi0 inet 192.168.0.20 netmask 255.255.255.0 ssid my_net wepmode on wepkey 0x1234567890

注意你应该将0x1234567890替换为更独特的密钥。

24.3.3.4.2. IPsec

ipsec(4)是一个更加强大的网络数据加密工具。它无疑是加密无线网络数据的首选。在手册的IPsec部分,你将能更多了解ipsec(4)的安全性及其实现。

24.3.3.5. 工具

有少量用于诊断和设置无线网络的工具,这里我们将介绍几个这样的工具。

24.3.3.5.1. bsd-airtools

bsd-airtools包是一套完整的工具集,包括了用于破解WEP密匙的无线审核工具,接入点检测等等。

bsd-airtools工具集可以从net/bsd-airtools port里安装。关于安装ports的信息可以在手册的第 4 章里找到。

dstumbler是一个用于接入点发现和显示音噪比(noise ratio)图表的工具。 在你启动运行接入点有困难时,dstumbler可能会帮你大忙。

为了测试无线网络的安全性,你可以选用``dweputils'' (dwepcrackdwepdumpdwepkeygen) 来帮你测定WEP是否是你的无线网络安全需要的正确解决方案。

24.3.3.5.2. wicontrolancontrolraycontrol 工具集

这些工具用于控制无线网卡在无线网络上行为。在以上的例子中,我们选择了 wicontrol(8),因为我们的无线网卡是 wi0 接口。如果你有Cisco(思科)的无线设备,出现的将是an0,于是你可以使用ancontrol(8)

24.3.3.5.3. ifconfig 命令

ifconfig(8)命令可以用来处理大量与wicontrol(8)相同的设置,但它还是少了几个选项。查看ifconfig(8)可以了解到命令行参数和选项。

24.3.3.6. 支持的卡

24.3.3.6.1. 接入点

现在唯一被支持用于BSS(作为接入点)模式的卡都是基于 Prism 2, 2.5, 或 3 芯片组的。 要完整的列表,查看wi(4)

24.3.3.6.2. 客户端

现在几乎所有的 802.11b 无线网卡都能被FreeBSD支持。大多数基于 Prism, Spectrum24, Hermes, Aironet 和 Raylink 的网卡能在IBSS (ad-hoc, peer-to-peer, 和 BSS)模式下工作。

Michael's Blog :: Just Do IT -- manuals