级别: 初级

Roman Vichr (roman@rdmax.com
学科问题专家

随着 Wi-Fi 的普及,Linux 也已加入这一行列。在本文中,Roman Vichr 阐述了 Linux 如何为很多无线工具 和项目提供帮助 —— 同时得到这些工具的帮助。

Linux,Linux,Linux —— 这个通用的、稳定的、可扩展的、多变的而且有竞争力的平台已经走向了无线。 从支持无线访问的桌面机和服务器到无线接入系统,它正成为几乎所有一切的通用工具,而且已经在 无线解决方案中占据了一席之地。深入了解 Linux 正在对无线网络进行怎样的促进。

Linux 无线接入点:构建还是购买?
基本的问题是:Linux 系统是否有能力与无线网络中的其他接入点相结合,来为固定节点和漫游的无线客户机提供连接?

无线 LAN 的实际安装并不那么重要;关键取决于您购买的是什么,以及它在 Linux 系统下是否得到了支持。检查并确保您 拥有用于特定操作系统驱动程序的硬件。紧记,如果您想要得到的是高性能(也就是说,gigabit 的数据传输速度),那么 对您来说选择无线就是错误的;即便是最新的标准,提供的传输速度也不到 100 Mbps。漫游提出了另一个挑战:维持不同 接入点之间的连接。为了帮助实现这一目的,要设置有线等效加密(Wired Equivalent Privacy,WEP)键,以检测您可以 连接到的接入点。记住,实际地讲,接入点的主要用途是成为一个桥梁;也就是说,它应该将数据包自一个网络路由到另一个网络。

本文所关注的是用于管理这些接入点的各种选项和工具。基本来讲,您是要选择是否通过 无线扩展(wireless extensions) 来使用工具。(无线扩展是一个普通 API 的名称,它允许驱动程序告知用户关于常见无线 LAN 的空间结构和统计细节。) 要获得在 Linux 下安装接入点软件的详尽步骤指南,请阅读文章 在 Linux 上构建无线接入点。 要对无线网络结构以及 LAN 和 WLAN 之间的桥梁有一个充分的纵览,请阅读 Linux Wireless Access Point HOWTO(参阅 参考资料 以获得更多信息)。

Wireless 信号强度
如果您想成为一个见多识广的用户,那么您应该知道如何估计无线信号的强度。下面是一个简化的公式,反映了 802.11b/g 接入 点所使用的 2.45 GHz 频率波段的无线频率信号损耗:

SignalLoss = 40 + 20*log (d) ;

在这里,SignalLoss 以 dB 为单位,d 是以米为单位的距离。 这是简化的公式,因为它没有考虑由于墙壁材料过虑所带来的信号损耗;尽管如此,它仍可以让您对无线信号覆盖有一个基本 认识。

不使用无线扩展
有一些技术不使用无线扩展就可以帮您建立 Linux 无线网络,包括 Linux-IrDa 和 BlueZ,后者也就是 Linux Bluetooth 栈。在 Linux 无线网络技术 中 有对此两者的详尽描述。另一个选择是 ROSE(Radionet Open Source Environment;参阅 参考资料 以获得更多信息),这是一个用来构建 802.11 无线接入点的平台。ROSE 的优势在于它可以针对任何平台(例如 MIPS、x86、ARM、PowerPC)进行编译 。得到支持的 WLAN 卡是基于 Intersil Prism Chipset 2/2.5/3 的。它还提供了对 5 GHz 频率的支持。下面是附加的 ROSE 特性:
– 接入点开发工具包。
– 802.11 协议和安全、MAC 地址过滤、IPv4 路由、防火墙、RADIUS、QoS、桥、NAT、DHCP。802.11a/g/h 等另外的驱动 程序也得到了支持。
– 为了良好的支持和可维护性,ROSE 编译器用 Python 编写(与可用的 C 编译器 gzip 一道,附带标准 Python 库的 Python 语言版本 2.x —— 2.1 和 2.2 已经经过了测试)。

基本上,使用 ROSE(及 Linux 2.4 内核)和基于 802.11 Intersil Prism 的 WLAN 卡,您就可以构建一个基于 Linux 的 无线接入点。

选择无线扩展
无线扩展的优点在于,单一的一组工具就可以支持所有种类的无线 LAN,不管它们的类型如何(只要硬件驱动程序支持无线 扩展)。另一个优势是,这些参数不需要重新启动驱动程序(或 Linux)就可以在使用过程中进行修改。

操作无线扩展的一组 Linux 工具通常被称为 无线工具。它们使用文本界面,而且非常简单。在 Linux 实现中使用的 主要有:
– iwconfig:操作基本的无线参数。
– iwlist:初始化扫描频率、列表频率、比特率和密钥。
– iwspy:获得每个节点的连接质量。
– iwpriv:允许针对特定于 Wi-Fi 驱动程序的无线扩展进行操作。
– ifrename:允许使用基于固定标准的名称接口。

友好的工具
现在来看一些工具,它们为用于管理 Wi-Fi 的另外的管理工具提供了更为友好的用户前端。您将在 参考资料 部分找到所有这些工具的链接。

IfPlugd/waproamd
waproamd 是用于支持 Linux 无线扩展(v15 或更新版本)的 IEEE 802.11 NICs 的漫游后台程序(roaming daemon),已经在 Debian Linux 上做过了测试。它的用途是根据所找到的网络去配置 WEP 键。 waproamd 工具反复地对无线网络进行扫描。当 NIC 与一个可用的网络相关联后, waproamd 就不再进行扫描,而是将 NIC 卡连接到所发现的接入点。 可以通过 iwlist scan 命令来测试扫描。 如 Host AP 驱动程序所定义的,waproamd 支持 host_roaming。 在使用 waproamd 时不要忘记安装防火墙;工具本身不能防止入侵。

KWiFiManager
KWiFiManager 是一个用于在 Linux 上 KDE 环境中配置和监控您的无线 LAN PC 卡的工具; 工具本身是为 3.x 版本的 KDE 所编写的。它使用了 Linux 内核无线扩展,所以大部分无线卡 都得到了 pcmcia-cs 程序包的支持。不过, 如果您的卡使用了来自 wlan-ng 项目的驱动程序,可能会有问题,因为 这些驱动程序与无线扩展并不是百分之百兼容。无论如何,您可以试一下,或者您可以为同一块卡使用 Host AP 驱动程序,这个驱动程序是与无线扩展相兼容的。

KWiFiManager 以 RPM 程序包的形式发行;不过,有一些安装的先决条件。这些先决条件是 Qt 工具包(版本 3.0.3 以上)、KDE 3.x 和 glibc2.2。这些程序包都具备后,标准的 ./configure make make install 会编译并安装这个工具。这个应用程序提供了一些显示界面:Signal Quality、Connection Speed、Current Configuration、Access Point monitor、Statistics Viewer 和 Configuration Editor(最后一个显示界面只有 root 用户才可以访问)。

Glink 是一个针对 802.11b 卡(这种卡使用带无线扩展的 Linux 内核)的链路监控器和配置器,大致上相当于 GNOME 中的 KWiFiManager 工具。

APHunter
APHunter 用 Perl 编写,可以在一个文本文件中给出一次 iwlist 扫描的输出。 可以使用 perldoc -t ./aphunter 命令调出这个工具的文档。这个工具提供了一些开关, 来控制其输出和指示器。

GKrellMWireless
这个工具需要带无线扩展的 Linux 内核。此工具需要一个 C 库来编译,当然,是使用 (g)make 来安装。(在 BSD 中, 为了进行安装您将需要添加额外的头文件:if_wavelan_ieee.h 和 if_aironet_ieee.h。) 这个工具会显示无线链路质量、链路级别以及噪声。它的最新版本可以在 Linux 中以 dbm 为单位显示级别和噪声。

协同工作能力问题
当在 Linux 平台上部署无线时,使用 Linux 驱动程序的不同的卡之间的协同工作能力是需要考虑的一个重要事项。 您还应该确保不同硬件部分本身的协同工作能力;它们全部都应该理解相同频谱内彼此的信号。不要忘记,看起来类似的产品, 可能并不具备协同工作能力。例如,802.11 和 802.11-FH 产品不能与 802.11-DS 产品协同工作,反之亦然。

芯片组
考虑到一些产品可能得到支持的同时而同一牌子的其他产品却有可能得不到支持, 不同的无线产品中多种芯片组的使用可能会是一个挑战。有时,即使是相同型号编号的卡所用的也可能是不同的芯片组, 这就导致难以判断一个卡是否可以得到 Linux 的支持。不过,大部分可用的 802.11b 卡所使用的都是 Intersil PrismII 芯片组,这个芯片组得到了 Linux 很好的支持。

802.11b 规范只是 802.11-DS 的一个扩展,它提高了速度,但是在任何情况下,两者产品都可以在至少为 2 Mbs (802.11-DS 模式)的速度下进行协同工作。802.11g 标准是 802.11b 非直接扩展;它的目的是在频率不变的条件下 增加带宽。

当您试图使 802.11a 产品协同工作时(频率为 5 GHz),要明白它们只能与基于完全相同的芯片组的产品 协同工作,而不能与 802.11b 产品直接协同工作,除非您有一个既可用于 802.11b 又可用于 802.11a 的设备。 要完全回顾 Wi-Fi 频率和标准的协同工作能力,请阅读 The 802.11g standard — IEEEThe ABCs of 802.11

当考虑您的 Linux 无线设备驱动程序时,不要忘记,那个驱动程序不会总是实现相应的 Window 驱动程序的全部特性。 这会限制协同工作的能力。在 Linux 上,安全特性尤其容易落后。下一节介绍了关于增强和管理的一些详细资料。

组网的灵活性与无线计划
为了使无线网络能够具备灵活性并确保安全,已经发起了一些计划,例如 Wireless FreeNetwork Allocations 和 NodeDB.com(参阅 参考资料 以获得更多信息)。基本上这些都是人们可以在这里 列出他们关于接入点或固定客户机连接的位置和信息的站点,这样其他人就可以基于一个地理目录服务方便地对自己 进行定位。

Linux 的灵魂 —— 它的开放、用户即所有者和管理者的精神 —— 在一些无线计划中产生了影响,不管 Linux 是否确实是 那个解决方案的一部分。在一些计划中,如 NodeDB.com,Linux 只是平台之一。在 WIANA 和 NoCatAuth 计划中,它是 计划的骨干,因为它具备在操作系统层级上(也就是在接入点层级上)让用户定制权限的能力。

WIANA
Wireless Assigned Numbers Authority 也被称为 WIANA 计划(参阅 参考资料 以获得更多信息), 它尝试创建一个用于无线地址管理的结构。传统的 IP 地址注册表依赖于一个静态的分等级结构,这并不能满足无线应用。 WIANA 必须处理无线网络的特殊特性,在无线网络中,节点仅仅因为位置的变化就可以从一个层级移动到另一个层级。 在 WIANA 的指导方针下,管理网络的是用户而不是提供者。大规模无线网络所基于物理媒介不同于需要实际的每地址认证的 传统 Internet。传统 Internet 中高昂的连接费用使得无线用户不再使用同样的方法获得 IP 地址。在 WIANA 中, 这些地址是免费提供的。WIANA 还试图集中对滥用和阻塞的处理。WIANA 支持受 LocustWorld.com 提供的使命声明所约束的 兼容的无线软件和硬件。那些硬件和软件的设计在任何平台上 802.11 Wi-Fi 下都完全兼容。主要的思想是提供开放社区 无线 WAN,它们由用户自己来管理,以给用户更大的灵活性。

NoCatAuth
您可以认为名为 NoCatAuth 的计划也是一个类似的计划。它最初构建是为了支持 Sonoma County,California 的 802.11b 的无线网络。这一实现方法将构成共享的 Internet 服务的认证代码集中于可能的一个点(类似于 WIANA 的作法)。 为了遵循一个开放源代码许可来使用 NoCatAuth,您的 Linux 系统中必须安装 Perl 编程语言、GNU make 和 gpgv。

Linux 的无线未来
Linux 已经成为 BlueZ(运行于 Linux 内核 2.4 和 2.6 之上)和 Linux-IrDA 等产品和解决方案可选平台之一, 也正在成为用于手机的平台。随着手机硬件的更加强大而且成熟,它将为较小的提供商提供一个巨大的机会,让他们可以创建 便于使用的部件并为用户提供对环境的更有力控制。多数 Linux 手机在亚洲得到了应用,在那里 Linux 正在成为 3G 电话开发 平台的首选。原因很简单 —— Linux 的方法同时为开发者和消费者提供了更大的灵活性和自由度。

参考资料
– 查看运行 SuSe Professional 9.0 的无线 Linux 存储服务器

– IBM 的 Linux Portal 展示了运行于 Linux 之上的 IBM 软件可以如何满足您的需要。

– 调查 IBM Linux 服务器如何 支持 Qualcomm 的无线成果

– IBM 的 BlueDrekar 项目帮助了 Linux 与 Bluetooth 之间桥梁的构架。

– 如果您正在尝试构建一个基于 Linux 的 AP,那么您需要阅读 Wireless Access Point HOWTO

– 阅读完 HOWTO 后,请继续阅读 在 Linux 上构建无线接入点(developerWorks,2003 年 7 月)。

– 要了解关于 Linux 和 Wi-Fi 网络的更全面的问题,请阅读 Wireless LAN HOWTO。 这个页面还特别给出了 Wireless LAN Hardware Survey.

– 深入了解 Wireless Assigned Numbers Authority,或者说是 WIANA, 它是一个确保无线地址管理易用且稳定的计划。

– 查看 Community Wireless 项目,它是一个描述无线社区网络的组织。

LocustWorld 帮助安装世界范围内的无线网络。

– 深入了解 NodeDB 这一无线节点数据库项目。

NoCatNet 项目的目标是在 Sonoma County 生成一个社区支持的 Wi-Fi 网络。 NoCatAuth 是项目的认证客户机。

Freenetworks.org 对世界上很多免费的网络进行了整理以防止冲突以及 IP 地址的重复。

– 学习 RF propagation(PDF 格式)基本概念。

– 深入了解 ROSE Net Access Point Development Kit(PDF 格式)。

– 查看 Sourceforge 上的 Linux-IrDA 项目的主页。

– 要深入了解 IrDA 和 BlueZ,请阅读 Linux 无线网络技术(developerWorks,2004 年 3 月)。

KWiFiManager 是使用了无线扩展的一整套 KDE 工具。

waproamd 是一个在接入点之间自动漫游的 Linux 后台程序。

APHunter 是 Linux 无线工具的一个 Perl 封装器。

– 深入了解 Gwireless 这一使用了无线扩展的无线卡配置器。 Glink 是这个项目的一部分。

– 深入了解 Host AP driver 这一用于无线 LAN 卡的 Linux 驱动程序。

The 802.11g standard — IEEE(developerWorks,2003 年 3 月) 介绍了 802.11g 的形成以及发展轨迹。

The ABC’s of 802.11 (developerWorks,2002 年 8 月)解释了 802.11 标准之上的约定。

Linux emerging as a cell phone platform (Mobile Pipeline,2004 年 5 月)阐述了手机管理者如何关注 Linux 以满足他们对更复杂软件的需要而不依赖于大提供商。

– 访问 Developer Bookstore 以获得技术书籍的一个详尽列表,其中包括几百个 wireless 相关的书目

– 另外参阅 无线专区教程页面 以获得来自 developerWorks 的聚焦于无线的免费教程完全列表。

关于作者
Roman Vichr 是一名致力于无线技术和无线机器人技术的学科问题专家。他为各种财富 500 强客户提供了此 领域的解决方案,并从中获得乐趣。在过去的十年中,他所感兴趣的方面包括金融服务、数据共享和企业内应用程序 的集成、Web 服务以及 XML 技术。您可以通过 roman@rdmax.com 与他联系。

Advertisements