192.168.168.198 wet11two 00:0C:41:BE:BF:B0
清单 2. 分配一个主机名和 MAC 地址请参阅参考资料中 /etc/hosts 的一个示例实现。
networkingrestart:networkingrestart 脚本负责启动网络,并对所有有效的客户机进行身份验证。它将读取 /etc/hosts 文件,然后将这个 MAC 地址添加到无线访问控制列表中。
gethost:在向 gethost 脚本传递一个 IP 地址、主机名或 MAC 地址时,它就会从 /etc/hosts 文件中返回所有这三种内容。countlog、pingscan 和 scanap 脚本都会使用 gethost 脚本,也可以在命令行中直接使用此脚本。
scanap:scanap 脚本的作用是显示 IP 地址、MAC 地址、主机名,以及客户机与 AP 之间的连接的质量。它会对 Wireless Tools 的 iwlist 的输出结果重新进行格式化,并添加 MAC 地址的信息,这样就可以在每一行中对每台客户机的状态进行总结。它的输出结果如下所示:
MAC Address...... Quality Signal Noise. IP Address....... Name 00:0C:41:BE:BF:B0 238/92 -29 -35 192.168.168.198 wet11two
清单 3. scanap 脚本的输出管理带宽
WISP 要负责处理有线网络中的所有复杂问题,以及特定于无线环境的一些问题。下面这些脚本可以确保您所提供的带宽既稳又快。
errors:errors 脚本会对 Linux 的 /proc/net/ 中的信息进行统计,并给出这个访问点的所有传输错误率的快照。它还将输出结果写入一个表格文件,供以后处理使用。它的输出结果如下:
13 22:20 TX Octets: 294080 TX errors: 1665 TX error ratio: 176 13 22:20 RX Octets: 893539 RX errors: 3225913 RX error ratio: 0
清单 4. errors 脚本的输出结果这个例子说明第一次成功传送的报文的数量比需要重新传送的报文的数量多 176 倍,还说明发送报文时出现的错误远远多于接收报文的错误。这些数字仅仅是我们需要观察的一些指标,因此如果这些数字并不一致,也不用担心。使用情况会对这些比率值造成非常大的影响。如果不使用网络,就不会有成功的报文,因此这个比率就是 0。如果很少使用网络,那么这个比率就会很低。随人们越来越多地使用网络,这个比率可能会极其高。
pingscan:pingscan 脚本负责测量网络的延时,它将说明客户机是否具有最快、最可靠的吞吐量。它向客户机发送 4 个短的 ping 包(每个是 56 个字符)和 4 个长的 ping 包(每个是 1,024 个字符),然后返回以下信息,每行的内容如下:
● 客户机的主机名和 IP 地址。
● 时间戳。
● 接收到短 ping 包的响应的个数。
● 接收到长 ping 包的响应的个数。
● 对短 ping 包响应超过 1 秒的个数。
● 对长 ping 包响应超过 1 秒的个数。
它还要将结果记录到一个电子表格文件中,便于以后进行分析。在如清单 5 所示的结果中,这个主机目前执行得很好。这些响应来自 4 个短的 ping 包和长的 ping 包。没有一个响应超过 1 秒。
wet11two,2005-03-18,23:59,4,4,0,0
清单 5. pingscan 脚本的输出下一个示例输出清单是在一天后执行的。在这一天中,同一台主机上丢失了一些响应信息 —— 4 个短 ping 包中只有一个收到了响应,4 个长 ping 包中只有 3 个收到了响应。
wet11two,2005-03-19,23:59,1,3,0,0
清单 6. 示例 pingscan 脚本的输出如果其他客户机都运行良好(4,4,0,0),那么就是这台主机目前出现了问题。另一方面,如果多台客户机上都丢失了响应信息,那么问题就可能在于访问点上。通信的监视
了解 AP 上有多少通信是非常有用的。实现这种功能的一种方法是通过 SNMP 来记录路由器的通信信息,然后对这些日志记录进行统计。不同路由器的日志也有所不同,因此您需要以不同的方式对它们进行处理。
我将路由器配置为将其 SNMP 的记录发送到一个搜集器主机(在这里是 AP)的 IP 地址。在 AP 一端,我将运行 snmpd 和 snmptrapd 守护进程,将这些记录保存到一个文件中。这些记录如下所示:
"@out 192.168.168.192 2983 208.222.234.90 80." "@in 211.107.232.1 51550 192.168.168.196 21."
清单 7. 记录搜集外发的记录是一个 Web 请求,从 192.168.168.192 发往 208.222.234.90。传入的记录是一个 FTP 请求,从 211.107.232.1 发往 192.168.168.196。
您可以从这个文件中提取很多有用的信息 —— 例如,可能有一些您希望阻塞的病毒探测。countlog 脚本可以使用两种不同的方法来统计这些传入的记录和外发的记录。它可以统计最后 n 分钟内的请求数量,其中 n 可以是一个自行定义的数字:
Checking 5 minutes before 23:59... 101 requests in 5 minutes An average of 20 requests per minute
清单 8. countlog 脚本统计 n 分钟内的请求数量它还可以统计过去 24 小时内请求的个数:
Start... Total Outbound and Inbound Today 00:00... out: 192 in: 63 out/min: 3 . . . 19:00... out: 243 in: 96 out/min: 4 20:00... out: 308 in: 66 out/min: 5 21:00... out: 151 in: 103 out/min: 2 22:00... out: 206 in: 94 out/min: 3 23:00... out: 160 in: 70 out/min: 2 Totals.. 2095 1759
IP Address (Host Name) Total Outbound Today 192.168.168.8 (cheltenham) 659 192.168.168.191 (t30lan) 156 192.168.168.192 (downstairs) 1044 192.168.168.196 (opteron) 236
Total all IP's.... 2095
清单 9. countlog 脚本统计过去 24 小时内请求的个数结束语
很多命令行 shell 脚本都可以简化 WISP 的管理。下面是最后几点提示:
●不要在客户端使用 USB 无线网桥。它们的功能非常有限,当客户机关机之后,就无法 ping 到它们了。
●不要试图通过一个非常便宜的家用路由器来运行一个很大的无线网络。这样会产生不可预知的后果。
使用本文中介绍的工具和技术,您应该可以搭建并运行自己的无线网络。
参考资料
如果您希望了解在 Linux 上可以使用哪些无线网卡,那么请参阅 Jean Tourrilhes' page dedicated to the subject。在那里可以找到有关本文中使用的 Prism2 卡的内容。
Pebble Linux 是专用于嵌入式设备。它是基于 Debian 的,因此您可以使用 apt-get 工具。
关于作者
自 1999 起,Alan Baker 就一直是各种 Linux 服务器的系统管理员,这些服务器包括拨号、邮件、Web 和无线服务器。他于 2003 年成为一名无线 Internet 服务的提供者,他喜欢使用一些 bash 脚本来增强系统的安全性并自动化 Linux 系统的管理任务。