使用 Linux 构建无线网络
无线网络技术已经存在一段时间了,但直到最近,对于经济能力有限的 Linux 用户来说,它仍然遥不可及。幸运的是,许多制造商开始看到廉价无线硬件的新市场。其中一家制造商 Webgear, Inc. 最近推出了一款与 Linux 兼容的无线网络套件。
在本文中,我将展示如何使用 Webgear 的 Aviator 2.4 无线网络套件、IP 伪装、软件路由、一台旧笔记本电脑和 Linux 来创建一个廉价的无线网络和一个无线网络桥接器。
Webgear 的 Aviator 2.4 无线套件包含两张 Type II PCMCIA 卡和两个 ISA PCMCIA 卡槽。该套件使用 2.4GHz 无线电技术,根据 IEEE 802.11 规范(跳频、扩频网络)提供 2MBps 的网络连接。这些卡在安装和配置后显示为以太网设备,例如 eth0 或 eth1。该套件最初的目的是在两台台式电脑、两台笔记本电脑或一台笔记本电脑和一台台式电脑之间创建高速无线链路。
尽管该套件宣传支持 Linux,但它仅附带 Microsoft 操作系统的软件驱动程序。您必须从 Web 下载 Linux 设备驱动程序,这是一个名为 ray_cs.o 的可加载内核模块。即使您可以通过 Webgear 的支持链接 www.webgear.com/support/software_top.html 获得稳定版本,但下载最新版本的最佳地点是作者的网站(请参阅“资源”)。
感谢作者 Corey Thomas 的慷慨,您可以将 Aviator 2.4(或更昂贵的 Aviator Pro 或 Raytheon Raylink 系列)无线系统与 Linux 一起使用。我将最新的驱动程序 ray_cs 版本 1.68 下载到我的一台笔记本电脑上,然后按照他的说明构建和安装驱动程序
cp ray_cs-1.68.tgz /usr/src/linux/pcmcia-cs-3.1.5 tar xvzf ray_cs-1.68.tgz make config make all make install
这些步骤应在另一台计算机上重复。我最初使用了两台笔记本电脑来测试卡的连接性。这对于确保卡和软件正常工作至关重要。我在使用更高版本的 David Hinds 的 Card Services,pcmcia-cs 3.1.5,以及下一个版本 pcmcia-cs 3.1.6 时取得了巨大的成功。
作为销售产品,该套件允许两个无线点之间连接:点 A-->点 B。
在启用卡之前,您必须首先编辑 /etc/pcmcia/config.opts 并插入以下行
source ./ray_cs.opts
启动时,Card Services 将读取无线卡的 ray_cs.opts 配置文件(ray_cs.opts 作为 make install 的一部分复制到 /etc/pcmcia 目录中)。此文件包含几个重要的设置,以设置字符串的形式,用于在插入 Aviator 2.4 卡后对其进行配置。我使用的设置行(有几行,因为驱动程序至少支持三种不同的无线卡)是
module "ray_cs" opts "pc_debug=2 essid=LINUX\ hop_dwell=128 beacon_period=256 translate=1"确保无线连接的每一端都使用相同的设置。pc_debug=2 选项是在插入或移除卡时从 /var/log/messages 获取更多信息的便捷方法。essid=LINUX 选项为无线卡指定网络名称为 LINUX(根据 Webgear 的说法,同一网络上最多可以有 61 张卡)。安装和配置软件后,我使用 Red Hat 的 netcfg 工具在每台笔记本电脑上创建一个 eth0 接口。您也可以通过编辑 /etc/sysconfig/network-scripts/ifcfg-eth0 文件来创建自己的接口
DEVICE=eth0 IPADDR=192.168.2.37 NETMASK=255.255.255.0 NETWORK=192.168.2.0 BROADCAST=192.168.2.255 ONBOOT=yes BOOTPROTO=none USERCTL=no卡必须按顺序启动。我走到第一台笔记本电脑,确保 Card Services 正在运行(您可以执行 /etc/rc.d/init.d/pcmcia start),然后插入其中一张 Aviator 卡。听到两声蜂鸣声后,我查看了 /var/log/messages 的输出(此处未显示所有输出)
$Id: ray_cs.c,v 1.68 1999/11/21 10:43:35 corey Exp $-Corey Thomas corey@world.std.com ray_cs Detected: WebGear PC Card WLAN Adapter Version 4.88 Jan 1999 eth0: RayLink, irq 4, hw_addr 00:00:8F:48:E8:DB ray_cs interrupt network "LINUX" started要查看的重要内容是“started”字符串。然后,我使用 netcfg 启用了接口,因为根据 Thomas 的说法,您不能使用 ifconfig 命令来使用 ray_cs 驱动程序设置 IP 地址。然后,我走到另一台笔记本电脑,插入另一张 Aviator 卡,听了两声蜂鸣声,并查看了 /var/log/messages
$Id: ray_cs.c,v 1.68 1999/11/21 10:43:35 corey Exp $-Corey Thomas corey@world.std.com ray_cs Detected: WebGear PC Card WLAN Adapter Version 4.88 Jan 1999 eth0: RayLink, irq 10, hw_addr 00:00:8F:48:E8:45 ray_cs interrupt network "LINUX" joined同样,要查看的重要字符串是“joined”。这意味着卡正在通信。然后我启用了 eth0 接口,瞧<\#224>--我可以使用 ping、telnet、ftp 和 talk 在两台笔记本电脑之间进行无线通信。FTP 文件传输速度约为每秒 180K,这种速度对于远程 X11 客户端启动来说已经足够合理。这表明 Linux 可用于支持各种情况下的无线网络,在这些情况下,有线安装是不切实际或不必要的。
虽然能够无线连接两台笔记本电脑非常有趣并且非常方便,但我仍然不满意。我在家里有一个局域网 (LAN),它跨越了几台集线器连接的计算机,从地下室延伸到楼上办公室,那里有另一个三台计算机的集线器。作为 Linux 用户,我希望从我的硬件中获得更多,并希望从我的无线网络中获得更多功能。我希望能够带着无线笔记本电脑在家中漫游或坐在游泳池边,同时还能与局域网上的所有计算机联网,同时浏览网页、收发电子邮件等等。这些卡宣传能够穿墙至少通信 500 英尺,在“视线范围内”通信 1000 英尺。
不幸的是,根据 Webgear 的说法,Aviator 2.4 卡仅用于对等网络。如果您购买 Aviator Pro 系列卡,您可以购买一种称为无线“接入点”的硬件,该硬件通过 RJ45 连接到您的 LAN,以提供到您的网络或来自另一个网络的桥梁。即使在勤奋的互联网购物中,接入点也花费数百美元。Aviator 2.4 系列不提供无线接入点。
这就是成为 Linux 用户组会员的好处。感谢 Northern Virginia Linux Users Group (NOVALUG) 的朋友们,我得以创建我的无线网络。根据 NOVALUG 邮件列表上的消息提示,我在地下室的服务器中安装了一个 Aviator ISA PCMCIA 插槽适配器。服务器的第一个接口 eth0 的 IP 地址为 192.168.2.XX。我将 Aviator 卡安装为 eth1,IP 地址为 192.168.1.1。无线卡“启动”后,我使用 route 命令将无线 (eth1) 流量路由到 eth0
/sbin/route add 192.168.1.1 gw 191.168.2.
为了完成服务,我随后制作了一个简单的 IP 伪装脚本(基于 NOVALUG 创始人 Greg Pryzby 提供的信息)
#!/bin/sh case "$1" in start) /sbin/modprobe ip_masq_ftp /sbin/ipchains -A forward -s 192.168.2.0/24 -j MASQ /sbin/ipchains -A forward -s 192.168.1.0/24 -j MASQ echo "NAT Started" ;; stop) /sbin/ipchains -F echo "NAT Stopped" ;; *) echo "Usage: ipmasq {start|stop}" ;; esac在服务器上启用我的 PPP 连接、无线卡、伪装和路由,然后从我的无线笔记本电脑(分配的 IP 地址为 192.168.1.2)连接到局域网的其余部分并使用 Internet 非常简单。再次使用 route 命令,但这次是在无线笔记本电脑上
/sbin/route add default gw 192.168.1.1此配置允许我与局域网上的所有其他计算机(例如 LaptopA 和 ComputerB)通信,并访问 Internet。
然后我遇到了麻烦。当我在地下室服务器附近时,无线笔记本电脑的连接测试运行良好。但是,当我离服务器太远时,由于某种原因,卡会失去通信,或者我无法“加入”已“启动”的服务器连接。如果您阅读更多关于无线网络的覆盖范围和可靠性的信息,您会了解到连接质量会受到许多因素的影响。后来我发现地下室的设备离土墙太近,并且由于某种原因,信号被阻挡了。我不得不移动连接,但我仍然想要完全访问局域网和互联网。
然后,我从服务器上取下了 Aviator 卡,并将该卡重新安装到楼上带有两个 Type II PCMCIA 插槽的旧备用笔记本电脑 (LaptopA) 上。与服务器一样,一个笔记本电脑插槽提供了一个连接到局域网的 eth0 接口(IP 为 192.168.2.32),而另一个插槽配置为带有无线卡的 eth1(IP 为 192.168.1.1)。服务器上的 IP 伪装正在将数据包从 PPP 连接转发到笔记本电脑,但为了向无线笔记本电脑提供服务,我不得不在 LaptopA 上再次使用 IP 伪装
/sbin/ipchains -A forward -s \ 192.168.1.0/24 -j MASQ
现在一切正常了!我可以与局域网的其余部分通信(例如从无线网络到 Computer B 或服务器)。
服务器上使用无线笔记本电脑的 IP 地址以及“硬连线”eth0 的 IP 地址(来自 LaptopA)的简单路由命令也允许局域网的其余部分 ping 无线计算机
/sbin/route add 192.168.1.2 \
gw 192.168.2.XX
请相信我,这确实是一次学习经历——我从未想过必须从两台计算机转发信息。
我发现您还可以轻松构建无线桥接器,因此不必使用路由来允许无线连接连接到局域网的其余部分。使用一台备用笔记本电脑,我首先重新编译 Linux 以启用桥接。然后,我安装了一个分配了 IP 地址的 eth0 接口以连接到局域网。接下来,我安装了 Aviator 卡作为 没有分配接口的 eth1,然后在混杂模式下启动了两个接口,命令如下:
/sbin/ifconfig eth0 promisc up /sbin/ifconfig eth1 promisc up
接下来,我下载了 Alan Cox 的 brcfg 实用程序,并通过以下命令启用了桥接:
./brcfg -ena启动无线连接后,我可以从无线笔记本电脑访问局域网上的任何计算机。
Bill Ball 是 Northern Virginia Linux Users Group (NOVALUG) 的成员,也是近十几本关于 Linux 书籍的作者。可以通过 http://www.tux.org/~bball/ 与他联系。