Sunday, May 06, 2007

FON: Extend Your Internet Connection - Introduction

當初許多人購買FON時,家裡原先就有一台無線AP,所以最關心的話題,自然是FON是否支援Wireless Distribution System(WDS)這項功能。而FON本身為分享網路頻寬的計畫,能否藉由這樣的功能,結合數台FON來擴展Internet連線的範圍,也是大家關心的問題。

在這裡我們先假設有兩台AP,稱為AP1和AP2,而AP1本身與Internet連接,AP2則無。WDS的迷人之處,在於AP1和AP2進行相關設定後,AP2不需要連接網路線,也能透過AP1提供Internet連線服務,而用戶端只需要連上其中一台AP,就能立即上網。AP2除了需先設定外,剩下的只需要插上插頭,待網路連線建立完成,就能立即提供服務。而就FON本身為分享網路頻寬的計畫而言,這樣的功能是必要的,只要能擴展無線網路的範圍越大,計畫就會越成功。

在正式介紹本系列文章的方法之前,先來看看使用WDS可能會碰到的問題:
  • 加密系統的支援:使用WDS功能,視AP對於加密功能支援度不同,相容性會有所差異。許多AP雖然支援WPA或WPA2,但啟用WDS後僅能使用WEP,WPA和WPA2則不支援。關於WEP的部分,會在後文說明。
  • 相容性:WDS並非一標準的規範,每家都可能有自行定義的部分,變成各廠牌間有相容性的問題。
  • 需要兩邊AP的支援:兩台AP若想使用WDS接起來,一定要兩邊都支援WDS才行,且需在兩邊互相設定MAC位址。若其中一台不支援WDS,則必須使用其它方法,然而較早期的AP並未具有此功能。
  • 支援ChilliSpot:雖然FON之間能用WDS連結起來,但對於提供FON_AP服務的ChilliSpot,若未經適當的調整,可能會造成連線上的障礙,並不是光靠WDS接起來之後,就會自動解決的問題。少了FON_AP的功能,也失去了分享頻寬的美意。
  • 設定的難易度:由於目前FON的網頁管理介面並未實作WDS的相關介面,使得自行修改相關設定的難度相當高,能否穩定運作也是另一個大問題。若想要有較完整的WDS控制介面,需要將您的FON的韌體刷成DD-WRT系列,而刷的步驟需注意許多細節,操作不正確易導致FON故障。
先前PTT板友去信至Taiwan FON Labor,只可惜得到的回覆,大意是硬體有支援此功能,但目前歐洲總部並無計畫發展此功能。得到這樣的回覆,只好自行嘗試類似的功能,對FON進行徹底的改造。倘若官方韌體就有此功能,實在是不需要用這種幾乎要把FON改到翻過來的方法(XD)。

實際上在二月時,曾經嘗試使用FON內部的WDS相關設定之功能,有興趣的可以看此篇Blog,裡面有少量的相關資料。由於FON使用的是Atheros AR531X晶片,並使用MadWiFi,所以參考的文章皆與MadWiFi相關。當時參考了MadWiFi裡的WDS Bridging,但馬上發現第一個問題,就是無線網路加密的問題,在內文中並未提到如何同時使用WDS功能和WPA2或WEP加密,即使WEP加密的設定較為容易。

無線網路的加密相當的重要,只靠Hide SSID和MAC Filter當成主要防線並不足夠,因為資料在傳輸的過程並未加密,只要使用相關工具即可得知原始資料的內容,這兩個功能僅能讓AP不易被普通人使用而已。要對付Hide SSID,只需要使用相關工具,假冒成用戶端網卡的MAC位址,對AP送出Deauthentication封包,這樣AP會以為這是用戶端送出的封包。AP收到後會切斷用戶端的無線網路連結,但隨後用戶端的無線網卡會很「聰明」的自動送出具有SSID的封包,要求與AP建立連線,而這樣的封包也同時會被有意入侵的人接收到,進而可以使用你的AP。MAC Filter也一樣容易對付,只要使用工具,偽裝成你網卡的MAC號碼,就能假裝是你的網卡送出來的封包,進而使用你的AP。從以上的說明,應該能瞭解Hide SSID和MAC Filter對網路安全的幫助並不大,最徹底的還是要靠WPA或WPA2,把資料完整的加密。為什麼沒有提到WEP這個最常見於AP的加密功能呢?實際上,WEP有已知的漏洞,只要能累積足夠數量的封包,就能從這些封包解出原來WEP使用的Key,一旦Key遭破解,WEP加密將形同虛設。

為了使用WPA和WPA2加密,必須要有wpa_supplicant的幫忙才能建立連線,所以第一件事就是找它的設定檔。而可做為WPA2的設定檔,相當的不好找,大部分皆為WPA的設定檔,最後是參考How to install wpa supplicant才設定成功。近期在整理文章時,卻發現WPA Supplicant的設定檔內就有完整的選項說明,不過有實際可以運作的範例設定檔,還是有相當的幫助,畢竟只參照設定檔的內容,容易遺失某些必要的設定,或多加上不必要的設定。設定檔都就位後,才發現wpa_supplicant若要能在FON上運作,需要先從source code cross-compiling才行,因為FON的處理器為MIPS,並非使用x86指令集,而先前較少接觸這個領域,所以這部分花了最多的時間,而且一定要先解決這個問題,才能繼續後續的測試,使得原先計畫二月初完成的文章,直至最近才整理完成。

拜FON使用的晶片所賜,能同時送出兩個SSID,也就是我們看到的FON_AP和MyPlace,看起來就像是有兩台實體的AP一樣。實際上,它也能當成一般的無線網卡(Station)來運作,這樣就變成外觀是AP,但骨子裡卻是當無線網卡的設備,應該是許多人無法想像的事情,先前遇到這樣的情形也覺得蠻神奇的。實際運作時,FON可同時當成AP和Station,分別為FON_AP和MyPlace,再加上一個Station,也就是三個VAP。只要把這個Station與AP1連線,並且在AP2做適當的設定,就能在不變更AP1的情形下,達到延伸Internet連線的功能!也就是說,AP1本身是否支援WDS已無任何關係,只要AP1本身功能正常,能接受無線網卡的連線,且未超過有效距離,理論上就能成功連線,而本系列文章即是使用這樣的概念。

然而有幾項是WDS可以做到而本系列文章無法達成的,例如使用同一個SSID在不同的AP漫遊。這樣的概念就像手機基地台一樣,同一隻手機可以在同業者的不同基地台漫遊,而無需自行做額外的設定。但在FON分享頻寬的前提下,對於使用者而言,缺少這樣的功能似乎不會有太大的影響,頂多要重新登入而已,而且多數無線網路使用者為定點使用,很少會有這樣的需求,即使信號不足,也只需手動連至另一基地台就解決了。設定的部分也與WDS不同,本系列文章會要求AP2需設成與AP1網路不同的Subnet,以避免route會出問題,而在WDS的環境中,是可以設在同一個Subnet下的。SSID需設成不同,同樣也是避免AP2連線至AP1時發生混淆。這些設定的詳細內容,會在接下來的文章中交待。

四月初再度尋找相關資料時,找到了ponte這個解決方案。它與本文使用相似的概念,並且加上了網頁管理介面,使得設定相當簡單,只需要填入相關資訊即可。但最大的問題,就是拿掉了FON_AP的功能,這樣就只有一般AP的功能,並且移除許多與FON_AP相關的防火牆設定,相當的可惜。本系列文章參考ponte的概念,把設定檔模組化,並把原先系統檔先備份再建立新檔案的link,最後完成自動安裝的script,使得安裝過程較為容易。

感謝您耐心看完本文的介紹,接下來將開始我們的旅程。

3 comments:

Anonymous said...

真多、真多>///<

(T)ttrick said...

這樣我會不好意思 >///<

Anonymous said...

呵呵^^
剛剛看到不錯的文章
也給你看看^^

http://blog.yam.com/kiroro9930/article/9839608