天天看點

如何用DD-WRT搭建一個開源無線熱點網絡

為什麼要花費大批的銀子來購買一個無線熱點網關呢?借助于著名的開源路由器固件DD-WRT和一個便宜的路由器,你完全可以DIY一個自己的無線熱點網關。

如何用DD-WRT搭建一個開源無線熱點網絡
使用無線熱點網絡的學生們

    如果你曾經嘗試搭建一個無線熱點網絡,你可能已經發現,你不僅僅需要一個寬帶網際網路連接配接、無線路由器或AP。現成的路由器和AP們通常不提供“強制網絡門戶(captive portal)”功能,而無論是處于認證使用者考慮,還是簡單的讓他們知道使用這個免費的無線連接配接需要感謝誰,這個功能都是需要的。而且現成的普通路由器一般也不提供諸如計費支援、帶寬限制和使用者隔離等功能。為了獲得熱點所特有的功能和性能,你必須通常參照一個熱點網關來選擇自己的裝置。

    如果你已經意識到你需要一個熱點網關來搭建一個無線熱點,你可能不知道在這個領域中的開源項目所能帶給你的巨大好處。下面我們就看一下相關的開源資源,以及如何通過一個簡單的配置示例來實作這個過程。

    正反兩面看固件更換

    許多無線路由器是基于開源作業系統和工具的,這給企業開發者打開了一扇大門,讓他們可以進行一些小的優化或修改,還可以更換整個固件。這些備選的路由器固件通常提供一些便宜的SOHO路由器所不提供的功能,其中包括諸如強制網絡門戶和帶寬限制等熱點網絡功能。

    無論你是在一個公共場所(諸如飯店、商店或咖啡店)還是在一個辦公大樓(為通路者、顧問和銷售人員)搭建無線網絡通路,開源固件都為你的熱點網絡需求提供了一個中備選解決方案。在你投入建無線熱點網絡之前,你應該對它的優點和所帶來的影響有一個全面的認識。

    更換路由器固件的優缺點:

正面 反面
省錢 喪失廠家質保
具有企業功能 缺乏技術支援
可定制化 設定比較複雜

    省錢是其中最大的好處之一。你可以花200-300左右買一個簡單的路由器,然後将其更新成免費的固件,來獲得那些需要花費上千塊錢的“真正”的熱點網絡網關的類似功能。

    此外,第三方固件通常可以讓你使用那些企業級裝置才具有的功能,諸如虛拟區域網路(VLAN)、虛拟/多個SSID、VPN伺服器、網橋和品質服務(QoS)功能等。如果你了解程式設計和網絡的話,你還能夠對路由器的功能進行定制化,實作開源固件本身所提供功能之外的功能。

    再來說一下負面的影響,使用第三方固件肯定會讓你失去廠家所提供的路由器品質保證。是以如果你碰到問題的話,你不能聯系你的産品廠商來尋求幫助或産品更換。而且假若你對電子裝置的工作原理沒有清醒的認識的話,其安裝設定可能是一件比較複雜的事情,至少要比使用那些專門針對熱點網絡所設計的現成熱點網關複雜的多。

    幸運的是,對于那些比較流行的備選開源固件,例如本文中我們将要使用的,往往一些比較活躍的使用者交流方式,例如wiki、論壇和其他一些方式,可以讓你在碰到問題的時候尋求解決辦法。但是如果你是哪種一旦碰到問題就需要别人幫助的人,那麼更換路由器固件的做法可能不适合你。

了解開源固件項目

    目前有三個比較受認可的開源固件項目提供熱點網絡功能:

    • DD-WRT:提供許多固件版本來支援不同的路由器。在增加新的普通功能的同時,這個開源項目整合了專門針對熱點網絡的功能。

    • Sveasoft:也提供多個固件版本,包含僅支援Linksys WRT54G/GS路由器的免費公衆版和支援更多路由器的進階版。它包含了熱點網絡所需要的功能,但是需要使用者支付每年20美元的訂閱費。

    • OpenWRT:和大多數其他固件的更換所不同的是,使用它建立一個熱點網絡功能和基于Web的圖形化界面,需要你具備進階的技術水準和更多的安裝步驟。

還有許多專門為熱點網絡解決方案而開發的開源項目,其中包括如下項目:

    • ChilliSpot

    • Wifidog

    • NoCat

    • Sputnik

    • CoovaAP

    如果你在設計一個大型公衆網絡的話,還有一些專門針對mesh網絡設計的固件替代者,諸如freifunk和Roofnet。

    安裝DD-WRT固件以供熱點網絡使用

    我選擇了使用DD-WRT固件,因為它是一個成熟、功能豐富而且提供多種熱點網絡解決方案的替代固件。通過下面的步驟,你将可以了解實作一個公衆熱點網絡解決方案的安裝和配置DD-WRT的過程。

    步驟一:獲得一個支援DD-WRT的路由器

    第一步是選擇一些802.11g的無線路由器,諸如如下裝置:

    • Linksys WRT54G/GL/GS

    • Buffalo WHR-G125和WHR-HP-G54

    • 華碩WL-500G和WL-300G

    你還可以從DD-WRT官方網站上檢視完整的支援裝置清單(http://www.dd-wrt.com/wiki/index.php/Supported_Devices),上面還有更多資訊可供參考。

    注意:你應該盡量避免選擇隻有2MB閃存的裝置(諸如WRT54G/GS v5.0/6.0),因為在它們上面你隻能運作DD-WRT的簡化版。你還應該注意華碩WL-500G進階版隻被v23 SP3或以後的版本所支援。 

步驟二:獲得DD-WRT固件

    接下來,你需要下載下傳這個固件,根據你正在使用的路由器和你想要的功能,從DD-WRT官方站點清單(http://www.dd-wrt.com/dd-wrtv2/downloads.php)中下載下傳相應的固件。但是,在你開始浏覽這個固件集合之前,你應該讓自己了解固件命名群組織的含義。你将看到這個固件被組織為三個不同的部分:穩定版(stable)、候選釋出版(release candidates)和測試版(beta)。從名字中你可以看出,穩定版可能是你最好的選擇,它是經過詳細測試的固件版本。

    注意:最近的穩定版(截止寫稿日期)是v23 SP2,而最近的候選釋出版是v24 RC1。

    為了節省路由器資源和支援那些具有較小記憶體的路由器,每一個固件版本分成不同的版本,來控制其中支援功能的多少。大多數情況下,标準版(Standard Version)是最适合熱點網絡解決方案的,因為它具有除了特殊的VoIP和VPN之外的所有功能。

如何用DD-WRT搭建一個開源無線熱點網絡
DD-WRT固件檔案版本的對比(點選看大圖)

    另外還有不同的固件類型:

    • ASUS:為WL-300/500G準備的。

    • Generic:為那些不需要自己版本和特殊需要的路由器而準備。

    • Linksys specific:為那些名字以wrt開始的特定型号路由器而專門設計的固件版本。

    • Motorola specific:隻針對那些微型和迷你型檔案版本,以moto标示。

    小技巧:對于Linksys最初的固件版本,你必須使用mini版來更新;然後在更新到其他版本。當使用Web界面方法更新的話,你必須使用generic固件類型。

    在浏覽固件集合的時候,你會看到下列格式的檔案名稱:dd-wrt.vXX_set_type.bin。其中的XX代表固件版本,set定義固件功能集合(諸如micro或voip等,隻對非标準的版本顯示),而type則标示硬體類型(諸如ASUS或Generic)。

    步驟三:使用DD-WRT固件重新整理路由器

    有兩個基本的方法可以來重新整理一個路由器:簡單檔案傳輸協定(TFTP),一個使用指令行界面來簡單的傳輸檔案的方法;和使用一個路由器的Web界面的固件更新功能。通過網頁界面進行重新整理非常簡單,而且也被大多數路由器所支援。但是,如果你的裝置是Buffalo的,你必須使用TFTP方式。

    警告:

    1、對于任何開源固件,很重要的一點是完全按照其指令和示例來進行重新整理,因為任何一個錯誤都可能讓你的路由器報廢。

    2、當然進行這些修改會讓你喪失廠家的質保。

    3、更新有風險,需謹慎。

    因為具體的重新整理過程可能根據路由器的廠家和型号不同而不同,你需要檢視DD-WRT網站上的重新整理指南(http://www.dd-wrt.com/wiki/index.php/Installation#Flashing)。

    步驟四:建立無線熱點網絡解決方案

    正如上面所提到的,DD-WRT整合了許多專門針對無線熱點網絡的獨立開源項目到它的固件中,包括如下:

    • Sputnik:整合了來自Sputnik的一個免費版/付費版的托管服務,來提供給使用者認證和裝置管理功能。盡管你可能需要對這個服務收費,相比其他解決方案,它更具使用者友好性。

    • Wifidog:被整合到固件中,為自由通路的無線熱點提供進階的強制網絡門戶和内容管理功能。你必須使用它們的專有軟體搭建一個外部伺服器,這可能需要一些進階Web開發技術和知識。

    • Chillispot:為免費或付費通路的無線熱點網絡提供網絡使用者認證和管理,但是需要一個外部的RADIUS伺服器。

    • NoCatSplash:僅僅提供一個簡單的強制性網絡門戶功能和一些過濾功能,但是對于那些自由通路的無線熱點網絡來說它是非常優秀的。如果你再有些網頁開發經驗的話就更完美了,這樣你可以建立自己的門戶頁面。其預設自帶的頁面比較簡單。

    現在你已經選擇了一個解決方案,接下來再看一下設定它的基本步驟(以v23  SP2為例):

    1、使用路由器的IP位址(預設是192.168.1.1)登入到網頁界面(如下圖所示)。

如何用DD-WRT搭建一個開源無線熱點網絡
DD-WRT網頁界面的示例(點選看大圖)

    2、點選Services(服務)标簽。

    3、輸入路由器的username and password(使用者名和密碼)(預設是root和admin)到對話框中。

    4、點選Hotspot(熱點網絡),如下圖所示。

如何用DD-WRT搭建一個開源無線熱點網絡
DD-WRT固件中的熱點網絡設定頁面示例(點選看大圖)

    5、啟用其中一個熱點網絡解決方案,配置其設定,最後點選儲存設定按鈕。

    盡管我們不會讨論如何配置每一個解決方案,但是你可以從其官方網站上檢視相應幫助。

設定NoCatSplash解決方案

    下面我将選擇一個解決方案來和大家看一下如何設定無線熱點網絡,我将介紹如何設定NoCatSplash。

    在進行配置之前,你需要建立一個網頁(.html檔案格式)來作為上網前的界面,你然後可以把它上傳到路由器上或者托管在一個網站上。一個使用者在連接配接上熱點網絡後,必須點選這個界面上的一個按鈕(例如“我同意”之類)後,才能浏覽網絡。

    使用類似如下的代碼可以建立登入界面上的一個表格:

    <p><b><font size="5">Welcome to $GatewayName!</font></b></p>

    <p><b><font size="2">Read the following terms and conditions, and hit the I Agree to proceed.</font></b></p>

    <p><font size="2">...</font></p>

    <form name="login" method="post" action="http://192.168.1.1:5280/">

    <input type="hidden" name="accept_terms" value="yes" />     

    <input type="hidden" name="redirect" value="$redirect">

    <input type="hidden" name="mode_login">

    <input type="submit" value="I Agree">

    </form>

    在使用者通過點選“I Agree”按鈕被認證後,你可以使用$redirect變量來發送給使用者一個你選擇的站點(而不是他們最初試圖通路的URL)。

    另一個可選的變量是$GatewayName,它在登入頁面上顯示網關名稱的值。

    現在你需要來配置這個熱點網絡的餓設定:

如何用DD-WRT搭建一個開源無線熱點網絡
DD-WRT中的NoCatSplash設定示例(點選看大圖)

    Gateway Name:網關名稱,使用變量$GatewayName可以被顯示在登入頁面上;

    Home Page:如果你有一個網站位址,可以輸入進去。

    Allowed Web Hosts:使用者在點選按鈕之前能夠通路的域名。如果登入界面在一個網站上,你必須輸入它的域名。

    Document Root:登入表格(或登入頁面)在你路由器上的哪個目錄。如果你把登入頁面托管在一個網站上,那麼你可以忽略這個選項。

    Splash URL:如果你的登入頁面托管在一個網站上,輸入它的位址;否則如果它是上傳到路由器中的,則保持為空。

    Exclude Ports:設定熱點網絡使用者不可以使用的端口,通過分行來輸入不同的端口号。

    MAC White List:設定不受通路限制的計算機網卡的MAC位址。舉個例子來說,你可以把你的無線網卡的MAC位址輸入進去,那麼你通路網絡的時候就不會收到上面的端口限制。

    Login Timeout:設定登入界面顯示的頻率。舉個例子來說,你可以将其設定為86400秒,那麼每隔24個小時,使用者将會看到登入頁面,必須再次點選“I Agree”按鈕。

    Route Only:當啟用它後,你的路由器将不會支援網絡位址轉換(NAT)。除非你有一個嚴格路由的網絡,保持預設設定(禁用)就可以了。

    下圖顯示了通過如上代碼和圖5中的設定所得到的最終登入頁面效果。

如何用DD-WRT搭建一個開源無線熱點網絡
DD-WRT登入頁面示例

步驟五:配置其他功能

    為了更好的讓你的DD-WRT适合無線熱點網絡使用,你應該考慮作出下面的修改:

    • 啟用資訊站點密碼保護:預設情況下,當一個使用者通路路由器的管理IP位址時,無需輸入密碼就可以通路一個顯示路由器狀态資訊的頁面(如下圖),盡管這個資訊不時特别敏感,你還是應當阻止普通人可以通路它。到Administration(管理)标簽中的Management設定中找到Web Access部分。

如何用DD-WRT搭建一個開源無線熱點網絡
DD-WRT中的資訊站點頁面示例(點選看大圖)

    • 過濾SMTP通信:為了防止使用者使用你的網際網路連接配接發送垃圾郵件資訊,你可以阻擋SMTP通信。

    • 啟用AP隔離:防止熱點網絡使用者之間的互相通信(例如檔案共享),可以保護那些忘記禁用共享的使用者的資料安全。在Wireless标簽中的進階設定中可以進行這個設定。

    • 配置QoS:為了配置你的熱點網絡中的每一個人可以使用的帶寬,你可以配置QoS。在NAT/QoS标簽中的QoS子标簽中找到QoS Setting部分。根據你使用的解決方案的不同,你還可以通過你的熱點網絡管理設定來實作這個控制。

    結 論:

    在這個文章中,我們讨論了如何利用開源社群的優勢來搭建一個無線熱點網絡。你可以在一個簡單的現成無線路由器使用第三方固件來替代購買一個商業無線熱點網關。雖然需要花一點時間,冒一點風險,但是我們的解決方案卻能為你省下不少銀子。

    在本文所提及的三種常用固件解決方案中,DD-WRT無疑是我們的最佳選擇,可以幫助我們搭建屬于我們自己的無線熱點網絡。

繼續閱讀