2)加密
无线网络的加密非常重要因为您无法让网络处于一个被良好保护的区域。您的无线数据会向整个社区广播,任何人都可以读到它。这就需要加密。通过加密向电波发送的数据,使得任何有兴趣的组织从电波中提取数据变得更难。
加密客户端与接入点之间数据的最常用的方法有两种:WEP和ipsec(4)。
2.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 替换为更独特的密钥。
2.2) IPsec
ipsec(4) 是一个更加强大的网络数据加密工具。 它无疑是加密无线网络数据的首选。在手册的 IPsec 部分,您将能更多了解 ipsec(4) 的安全性及其实现。
3) 工具
有少量用于诊断和设置无线网络的工具,这里我们将介绍几个这样的工具。
3.1) bsd-airtools包
bsd-airtools 包是一套完整的工具集,包括了用于破解 WEP 密匙的无线审核工具,接入点检测等等。
bsd-airtools 工具集可以从net/bsd-airtools port 里安装。
dstumbler 是一个用于接入点发现和显示音噪比 (noise ratio) 图表的工具。在您启动运行接入点有困难时, dstumbler 可能会帮您大忙。
为了测试无线网络的安全性,您可以选用 “dweputils” (dwepcrack, dwepdump 和 dwepkeygen) 来帮您测定 WEP 是否是您的无线网络安全需要的正确解决方案。
3.2) wicontrol, ancontrol 和 raycontrol 工具集
这些工具用于控制无线网卡在无线网络上行为。 在以上的例子中,我们选择了 wicontrol(8),因为我们的无线网卡是 wi0 接口。 如果您有 Cisco (思科) 的无线设备,出现的将是 an0,于是您可以使用 ancontrol(8)。
3.3) fonfig 命令
ifconfig(8) 命令可以用来处理大量与 wicontrol(8) 相同的设置,但它还是少了几个选项。 查看 ifconfig(8) 可以了解到命令行参数和选项。
4) 支持的卡
接入点
现在唯一被支持用于 BSS (作为接入点) 模式的卡都是基于 Prism 2、2.5,或 3 芯片组的。
802.11b 客户端
现在几乎所有的 802.11b 无线网卡都能被 FreeBSD 支持。大多数基于 Prism、Spectrum24、Hermes、Aironet 和 Raylink 的网卡能在 IBSS (ad-hoc, peer-to-peer, 和 BSS)模式下工作。
802.11a & 802.11g 客户端
ath(4) 设备驱动能够支持 802.11a 和 802.11g。 如果您的网卡采用的是 Atheros 芯片组,就可以使用这个驱动。
不幸的是, 由于认为设计许多敏感的商业机密,许多厂商至今仍不愿意将把驱动程序作为开放源代码形式发布列入时间表。 因此, FreeBSD 以及其它操作系统的开发人员只剩下了两种选择:要么经历长时间的痛苦过程来对驱动进行逆向工程, 要么使用现存的为 Microsoft® Windows 平台编译好的驱动程序。 许多开发人员, 包括参与 FreeBSD 的那些, 选择了后者。
得益于 Bill Paul (wpaul) 的工作, 从 FreeBSD 5.3-RELEASE 开始, 已经可以 “直接” 支持网络驱动接口规范 (NDIS)。 FreeBSD NDISulator (也被称为 Project Evil) 可以支持二进制形式的 Windows 驱动程序,并让它相信正在运行的是 Windows。 这是一个相对较新的功能,但许多测试证明, 它确实相当有效。
要使用 NDISulator, 您需要三件东西:
内核源代码
二进制形式的 Windows XP 驱动程序 (扩展名是 .SYS)
Windows XP 驱动程序配置文件 (扩展名是 .INF)
您可能需要编译 ndis(4) 袖珍端口驱动封装模块。 这一操作需要以 root 身份来完成:
# cd /usr/src/sys/modules/ndis
# make && make install
找到您的卡所需的文件。 一般来说, 您应该能在随卡的 CD 或者制造商的网站上找到。下面的例子中, 我们将使用 W32DRIVER.SYS 和 W32DRIVER.INF 这两个名字。
接下来的步骤是将二进制形式的驱动程序组装成内核模块。 要完成这一任务, 需要以 root 身份进入 if_ndis 模块的目录, 并将 Windows 驱动程序复制到这里:
# cd /usr/src/sys/modules/if_ndis
# cp /path/to/driver/W32DRIVER.SYS ./
# cp /path/to/driver/W32DRIVER.INF ./
接下来我们将使用 ndiscvt 工具来创建驱动定义的头文件 ndis_driver_data.h, 用以构建驱动程序:
# ndiscvt -i W32DRIVER.INF -s W32DRIVER.SYS -o ndis_driver_data.h
选项 -i 和 -s 分别用于指定配置和二进制形式的驱动程序。 我们使用 -o ndis_driver_data.h 参数, 因为 Makefile 在构建内核模块时会查找它。
注意: 某些 Windows 驱动程序需要一些额外的文件才能正常工作。 您可以把它们放到 ndiscvt 命令的 -f 参数后面。 请参考 ndiscvt(8) 联机手册了解更多详情。
最后, 就可以构建并安装内核模块了:
# make && make install
要使用驱动程序, 您需要加在适当的内核模块:
# kldload ndis
# kldload if_ndis
第一个命令会加载 NDIS 袖珍端口驱动封装模块, 第二个则加载实际的网卡。 请查看 dmesg(8) 的输出以了解是否在加载过程中存在错误。 如果一切正常, 您应该能看到类似下面的输出:
ndis0: <Wireless-G PCI Adapter> mem 0xf4100000-0xf4101fff irq 3 at device 8.0 on pci1
ndis0: NDIS API version: 5.0
ndis0: Ethernet address: 0a:b1:2c:d3:4e:f5
ndis0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
ndis0: 11g rates: 6Mbps 9Mbps 12Mbps 18Mbps 36Mbps 48Mbps 54Mbps
这里您可以像使用其它任何无线设备 (例如 wi0) 那样使用 ndis0 设备。