摘要:文章在Linux臺式機上實現了AP(Access Point)及其擴展功能,并在同一臺主機上架設apache服務器,用perl語言編寫CGI程序,使用戶可以通過HTML頁面遠程配置主機,從而實現對AP功能的調整。簡單的配置頁面,降低了用戶對Linux操作系統專業知識掌握程度的要求。實驗在模擬現有AP產品功能的同時,增加了不需重新啟動服務器,直接完成配置修改的功能,測試結果表明,這個改動提高了產品的性能,滿足了不同用戶的需求。
關鍵詞:AP; WDS; 遠程配置
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2008)35-2129-03
The Implement of Configuring Wireless AP in Long-distance Based on HTTP
ZHONG Hui, YUE Qi-ming
(Shenyang Jianzhu University, Shenyang 110168, China)
Abstract: This article first realized AP and WDS based on Linux PC. Then established an Apache server on the same machine and wrote CGI with Perl, so that users could configure AP by HTML page which makes configuration easier. In this experiment, some configurations for AP would take effect immediately instead of rebooting server, which optimized AP’s performance.
Key words: AP; WDS; remote configuration
1 緒論
1.1 CGI簡介
CGI(Common Gateway Interface),即通用網關接口,是使服務器與外部應用程序相交互的一個標準協議。它實際上是一段工作在服務器上的程序,提供與客戶端HTHL頁面的接口,絕大多數的CGI程序被用來處理來自表單的輸入信息,并在服務器上作出相應的處理,或將相應的信息反饋給瀏覽器。其工作流程如下:(圖1)
1)通過Internet把用戶請求送到服務器;2)服務器接收用戶請求交給CGI程序處理;3)CGI程序把處理結果傳送給服務器;4)服務器把結果送回到用戶。
CGI的缺點:調用一次CGI通常意味著產生一個新的進程,這通常比產生輸出結果的工作占據更多的時間和空間,特別是程序需要被解釋和編譯時。因此,如果CGI程序被頻繁調用,將產生巨大的工作量。目前替代的方法有:在服務器上運行第三方軟件,如apache modules(本實驗采用此方法)。
1.2 臺式機模擬AP功能的相關介紹
AP(Access Point),無線訪問節點,是連接有線網與無線網的橋梁,其主要作用是將無線網絡客戶端連接到一起,再把無線網絡接入到以太網中,其作用相當于有線網路中的hub。
WDS(Wireless Distribution System),無線分布式系統,以無線的方式使基本服務集間互相通信的系統,并整合局域網形成一個擴展服務集。
2 前期準備
2.1 AP及擴展功能的實現
1)AP功能的實現:
本實驗的操作系統是RedHat 9.0,使用madwifi系列無線網卡驅動,在安裝驅動之前要檢查系統的內核的版本是否高于驅動要求的2.4.23。如不滿足要求,則需升級內核。
然后安裝無線網卡驅動,并設置端口ath0;安裝網橋軟件(以brctl為例),建立網橋br0,將有線網卡eth0和ath0的IP地址改為0.0.0.0,并設置成br0的兩個端口,再為br0添加IP地址,這樣便實現AP功能。
2)WDS功能的實現:
WDS是對AP功能的擴展,是通過兩個AP節點間以特有的WDS模式進行的數據傳輸,實現兩個AP及其下屬間的連通。首先,通過wlanconfig命令為機器A的無線網卡創建兩個個端口,ath10、ath11,其模式分別為ap和wds,并將它們設置為網橋的兩個端口;同時為機器B的無線網卡創建ath20、ath21兩個端口,其模式也分別為ap和wds,將他們設置為網橋的兩個端口;然后,使用iwconfig命令為ath11端口綁定機器B無線網卡的MAC地址,為ath21綁定機器A無線網卡的MAC地址,將他們置為同一個頻道,這樣就實現了WDS。
2.2 HTTP服務器建立及配置
本文選用的服務器是apache1.3,安裝后對其目錄下的httpd.conf文件進行修改,如根目錄的位置、支持CGI及perl語言、允許服務器前端包含等。啟動apache,在瀏覽器的地址欄內輸入http://本機器的名字或本機IP地址,如果出現服務器的測試頁,則說明安裝成功。實驗使用perl語言編寫CGI,因此要安裝Perl軟件(本文安裝的是Perl 5.8版本)。在命令行中輸入perl,如果出現命令提示信息,則表示安裝成功。最后安裝CGI-2.49.pm模塊,它解決了CGI程序對主機CPU過度占用的問題,即前面提到的第三方軟件。安裝后,編寫如下腳本:
#!/usr/bin/perl
use CGI;
print “hello”;
確保該腳本具有可執行性,然后執行。如果沒有收到任何錯誤信息,表示安裝成功。
至此,服務器的搭建完畢,用HTML語言編寫一個頁面,然后修改httpd.conf文件中的htdocs/index.html語句,可把該頁面設為主頁,通過訪問服務器即可看到該頁面。
2.3 修改服務器訪問權限
啟動服務器后,如果要在客戶端通過html頁面執行服務器命令是不被允許的,因為apache的客戶端的權限不是根用戶級別,而系統的網絡命令(如ifconfig)須在根用戶權限下才能執行。解決方法是使用sudo,即在非根用戶的情況下執行根用戶權限的命令。但使用sudo時需密碼,而http服務器在遠程控制時不可能每執行一個命令就輸入一次密碼,因此需要更改sudo配置文件/etc/sudoers,即可實現這一目的。
3 遠程修改無線AP配置
3.1 CGI程序結構圖
本文CGI程序的總體框架:如圖3 。
3.2 用戶登錄模塊
用戶登錄模塊有效的防止了非法用戶對AP進行惡意地修改。其實現方法如下:
首先使用htpasswd命令在apache根目錄下建立用戶文件,根據程序提示輸入用戶名和密碼。然后建立.htaccess文件,輸入AuthName、AuthUserFile等信息,再修改這兩個文件的權限,最后在apache的httpd.conf文件中加入AllowOverride authconfig即完成加密工作。如要修改登陸密碼,可在本程序的修改密碼界面輸入新的密碼,確認后提交,頁面的CGI程序將輸入值寫入htpasswd文件,完成修改。
3.3 修改IP地址模塊
本模塊負責將用戶輸入的數據,如獲取IP的方式、IP地址、子網掩碼、網關等,經過CGI程序的處理,完成對服務器配置的修改(其界面如圖4)。首先向網頁代碼中加入
指明接收和處理表單數據的CGI程序。然后在服務器上編寫同名CGI程序。有兩種方式修改IP地址,DHCP模式和手動模式,通過一個下拉控件實現。將頁面代碼中下拉欄的DHCP選項值賦為1,手動選項值為2,并在CGI中設置一個條件控制語句,分別執行。
1)手動修改:通過用戶輸入的參數完成對服務器的IP地址、子網掩碼及網關的修改。彈出的新頁面上顯示新的相關信息。
該程序的主要思想:首先用open函數以寫入的方式打開服務器的配置文件,然后用param函數將web頁面輸入的值讀入變量中,再將變量的值寫入服務器的配置文件,執行
system(sudo ifconfig br0 IP值)
語句完成修改服務器IP的任務,不需要重新啟動,直接完成了IP的修改,使得AP點不會在重啟的過程中不可用,即使客戶端進行網絡不可中斷操作時,管理員也可對AP進行調整。
2)自動獲取:通過DHCP從網關獲取IP地址。如果用戶選中動態方式獲取,用
system(sudo dhclient br0)
語句從網關獲取IP地址,然后修改AP配置文件,把br0獲取IP的方式改為dhclient br0,不需重啟即完成。
3.4 修改無線配置模塊
負責修改AP的SSID及傳輸頻道。SSID(Service Set Identifier),無線AP用它來區分不同的網絡,無線網卡設置不同的SSID就可以進入不同的網絡。編寫CGI時,通過
system(”sudo iwconfig ath0 essid‘指定的名字’”)
system(”sudo iwconfig ath0channel‘指定的頻道’”)
語句完成修改,最后將修改寫入AP的配置文件中。
3.5 WDS控制模塊
負責為AP點添加和刪除WDS連接。用戶在輸入欄內填入或刪除對方無線網卡的mac地址即可。編寫CGI時,先打開WDS的配置文件,然后判斷從頁面讀入的mac地址的值,如果該值不空,則寫入WDS配置文件,即向執行腳本中加入
iwconfig athx ap “mac地址”,
執行系統重啟命令
system(”sudo reboot”),
系統重啟后,即實現WDS模式。若輸入的mac地址為空,只執行系統重啟命令即可。因為perl語言以寫入方式打開文件時,先將源文件的內容全部刪除,所以WDS的配置文件為空,系統重啟時,空的WDS配置文件不起任何作用,這就達到了刪除wds連接的目的。
4 總結
用臺式機實現AP功能,降低了組網成本,增加了網絡的靈活性。通過http服務器,以簡單的HTML界面完成對AP的遠程配置,避免了由于用戶缺少Linux操作系統知識而造成的麻煩。本文的工作還需進一步完善,后續的工作將從一下幾個方面進行:控制AP覆蓋范圍內上網計算機;對AP的傳輸進行加密;繪制周圍客戶端與AP的網狀圖。
參考文獻:
[1] 謝進忠.Linux Kernel Module及TCP/IP程序設計[M].北京.人民郵電出版社,2007:3-11
[2] Jones H A. Linux web編程[M].北京.電子工業出版社,2000.
[3] 朱居正.Red Hat Linux Fedora Core 5系統管理[M].北京.清華大學出版社,2006.
[4] Guelich S. CGI Programming with Perl[M].北京.中國電力出版社,2001.