无线技术在Linux操作系统中的应用

来源:岁月联盟 编辑:zhuzhu 时间:2006-11-03
无线技术在Linux操作系统中的应用内容简介:随着 Wi-Fi 的普及,Linux 也已加入这一行列。在本文中,Roman Vichr 阐述了 Linux 如何为很多无线工具和项目提供帮助 —— 同时得到这些工具的帮助。 Linux —— 这个通用的、稳定的、可扩展的、多变的而且有竞争

  随着 Wi-Fi 的普及,Linux 也已加入这一行列。在本文中,Roman Vichr 阐述了 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

  不使用无线扩展

  有一些技术不使用无线扩展就可以帮您建立 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:允许使用基于固定标准的名称接口。

  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 -- IEEE 和 The 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 的方法同时为开发者和消费者提供了更大的灵活性和自由度。