級別: 初級 |
資深軟件工程師和認證的 IT 專家
2005 年 8 月 01 日
為您的辦公室或鄰居設置一個無線的 Internet 服務提供者(WISP)并不需要繁重的勞動或昂貴的投資。如果您使用一些很容易購買到的設備和 Linux™ 來構建網絡,那么可以利用 shell 腳本的強大功能來簡化網絡的管理。本文將提供一些您所需要的技巧和腳本。
使用現有的無線路由器創建一個小型的無線網絡非常簡單。但是為辦公室、公寓或鄰居提供符合業界標準的無線鏈接就是另外一回事了。在構建好無線網絡之后,就可以運行無線 Internet 服務提供者(WISP)服務。要運行 WISP,則需要回答以下問題:
在本文中,您將學習如何使用 Linux 腳本來回答這些問題。在開始之前,首先需要設置服務器。
無線服務器硬件
我之所以成為一名無線 Internet 服務提供者,是因為我的鄰居沒有 DSL 或其他 Internet 接入服務。另外一個 WISP 從附近的一個山頂上提供了一條(昂貴的)連接,因此我決定購買這個服務,與鄰居們共享帶寬,并共同承擔費用。訪問點的無線卡會生成一個非常微弱的信號,因此,為了將信號丟失的情況降至最低,我希望能夠將天線做得盡可能的短。還希望能夠架設一條戶外天線,這樣就可以讓更多的鄰居可以訪問這個無線鏈接。這兩種設備讓我可以將服務器設置在戶外的天線上(參考資料 的鏈接中給出了一張圖片,還提供了有關此文中討論的產品和包的信息)。這個示范性的服務器是一個現有的無線訪問點(WAP),它安裝在一個防水的 Pelican 箱子中。它并不是非??煽?,因此我常常需要爬上屋頂來解決問題。我需要使用一架梯子來幫助我爬上爬下,以后還需要將這個訪問點升級成一個更可靠的系統。下一代的硬件將會:
我購買了一塊很便宜的系統板(Soekris Engineering 的 net4521),它可以完全滿足這些需求,并且可以使用一塊 Compact Flash Card,而不必再使用硬盤。這塊系統板不用制冷風扇就可以在溫度變化很大的環境中使用。
無線卡芯片確定了該系統板是 Linux 友好的, Intersil/Conexant Prism2/3 芯片也對 Linux 提供了很好的支持。
Linux 軟件
Pebble Linux 是一個專門為嵌入式無線應用程序設計的發行版。為其取名 Pebble 就是因為它非常小,并且很簡單。這個系統中包含了一些很好的特性,例如:
Pebble Linux 包括很多可用的無線包,利用 Debian 的 apt-get 很容易添加其他包。您可能希望通過在另外一臺服務器上放置一些包(例如 ntop)來共享工作負載。這些包可以在一塊系統板上與 10 臺客戶機很好地運行,而不會過度浪費處理器或內存。以下是我推薦的幾個開源包:
在參考資料中,可以找到這些工具的鏈接。
所需要的 Linux 無線管理腳本
這些包提供了一些基本的工具來啟動無線網絡并運行 Linux。從現在開始,要使這些工具一直順利運行可能是一件頭疼的事情;也可能非常簡單,但需要使用一些工具來幫您實現以下功能:
為了滿足這些需求,我編寫了很多腳本;所有這些腳本都可以從一個命令行中直接使用。Linux 具有一個很好的安全 shell(SSH)服務器的實現,因此我可以從任何具有 Internet 連接的地方來對服務器進行管理。
管理服務器
Linux 發行版本通常包括一些簡單的管理工具,不過這些工具的功能卻很強大。沒有以下這些工具,我幾乎無法生活:
我的 WAP 在內存中有一個只讀的文件系統,用于為文件和日志提供服務。這樣就可以將一個 Compact Flash Card 的文件系統一直作為只讀模式使用。我編寫了一些腳本來管理這些有限的空間。
bigfiles:bigfiles 腳本會判斷應該刪除哪些文件來防止出現空間用盡的情況。它對三種級別的空間利用情況進行了總結:
輸出結果如下:
清單 1. bigfiles 腳本的輸出結果
|
checkspace
checkspace 腳本每小時運行一次,負責在這個讀寫的文件系統上維護最少的可用空間。如果文件系統的利用率達到 80%,那么 checkspace 就會運行 logrotate,后者會根據需要壓縮和刪除日志文件。
aptgetupgrade:aptgetupgrade 腳本檢查包的新版本,并進行必要的更新。這個腳本對 Debian apt-get
命令進行了簡單的封裝,可以通過 /etc/cron.daily 運行該命令,從而幫助您更新各種補丁。
管理客戶機
無線客戶機可能會出現一些問題,這一節中討論的基于 Linux 的管理工具可以幫助您解決這些問題。下面是幾個如何解決典型的用戶問題的例子:
為了改進簡單性和安全性,您可能希望試驗一下我為用戶提供的一種方法。我獲得了每臺客戶機的 MAC 地址,因此只有那些已知的 MAC 地址才允許連接到這個無線網絡上。我為每臺客戶機都分配了一個固定的 IP 地址,這樣只有那些已知的 IP 地址才能通過路由器。將這些客戶機的信息保存在某個地方要比同步并復制配置文件容易得多。我在 /etc/hosts 中為每臺客戶機的 IP 地址都分配了一個容易記憶的名字,并在同一行中寫下了該客戶機的 MAC 地址。例如:
清單 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 地址的信息,這樣就可以在每一行中對每臺客戶機的狀態進行總結。它的輸出結果如下所示:
清單 3. scanap 腳本的輸出
|
管理帶寬
WISP 要負責處理有線網絡中的所有復雜問題,以及特定于無線環境的一些問題。下面這些腳本可以確保您所提供的帶寬既穩又快。
errors:errors 腳本會對 Linux 的 /proc/net/ 中的信息進行統計,并給出這個訪問點的所有傳輸錯誤率的快照。它還將輸出結果寫入一個表格文件,供以后處理使用。它的輸出結果如下:
清單 4. errors 腳本的輸出結果
|
這個例子說明第一次成功傳送的報文的數量比需要重新傳送的報文的數量多 176 倍,還說明發送報文時出現的錯誤遠遠多于接收報文的錯誤。這些數字僅僅是我們需要觀察的一些指標,因此如果這些數字并不一致,也不用擔心。使用情況會對這些比率值造成非常大的影響。如果不使用網絡,就不會有成功的報文,因此這個比率就是 0。如果很少使用網絡,那么這個比率就會很低。隨人們越來越多地使用網絡,這個比率可能會極其高。
pingscan:pingscan 腳本負責測量網絡的延時,它將說明客戶機是否具有最快、最可靠的吞吐量。它向客戶機發送 4 個短的 ping 包(每個是 56 個字符)和 4 個長的 ping 包(每個是 1,024 個字符),然后返回以下信息,每行的內容如下:
它還要將結果記錄到一個電子表格文件中,便于以后進行分析。在如清單 5 所示的結果中,這個主機目前執行得很好。這些響應來自 4 個短的 ping 包和長的 ping 包。沒有一個響應超過 1 秒。
清單 5. pingscan 腳本的輸出
|
下一個示例輸出清單是在一天后執行的。在這一天中,同一臺主機上丟失了一些響應信息 —— 4 個短 ping 包中只有一個收到了響應,4 個長 ping 包中只有 3 個收到了響應。
清單 6. 示例 pingscan 腳本的輸出
|
如果其他客戶機都運行良好(4,4,0,0
),那么就是這臺主機目前出現了問題。另一方面,如果多臺客戶機上都丟失了響應信息,那么問題就可能在于訪問點上。
通信的監視
了解 AP 上有多少通信是非常有用的。實現這種功能的一種方法是通過 SNMP 來記錄路由器的通信信息,然后對這些日志記錄進行統計。不同路由器的日志也有所不同,因此您需要以不同的方式對它們進行處理。
我將路由器配置為將其 SNMP 的記錄發送到一個搜集器主機(在這里是 AP)的 IP 地址。在 AP 一端,我將運行 snmpd 和 snmptrapd 守護進程,將這些記錄保存到一個文件中。這些記錄如下所示:
清單 7. 記錄搜集
|
外發的記錄是一個 Web 請求,從 192.168.168.192 發往 208.222.234.90。傳入的記錄是一個 FTP 請求,從 211.107.232.1 發往 192.168.168.196。
您可以從這個文件中提取很多有用的信息 —— 例如,可能有一些您希望阻塞的病毒探測。countlog 腳本可以使用兩種不同的方法來統計這些傳入的記錄和外發的記錄。它可以統計最后 n 分鐘內的請求數量,其中 n 可以是一個自行定義的數字:
清單 8. countlog 腳本統計 n 分鐘內的請求數量
|
它還可以統計過去 24 小時內請求的個數:
清單 9. countlog 腳本統計過去 24 小時內請求的個數
|
結束語
很多命令行 shell 腳本都可以簡化 WISP 的管理。下面是最后幾點提示:
使用本文中介紹的工具和技術,您應該可以搭建并運行自己的無線網絡。
原文轉自:http://www.anti-gravitydesign.com