Tuesday, May 29, 2007

一路好走......

人气组合ZARD的主唱坂井泉水(さかい・いずみ、原名蒲池幸子=かまち・さちこ),于5月27日下午3时10分,在东京新宿区内的医院去世,年仅40岁,神奈川县出身。28日,她所在的事务所正式发表了这一消息。葬礼将在亲朋好友间进行,择日举行告别仪式。

坂井泉水由于患有子宫颈癌,去年6月进行了手术。之后,由于癌细胞转移至肺部,于今年4月再次入院治疗。5月26日早晨,坂井泉水在散步时,从医院的台阶跌落,后脑受到强烈撞击后,脑挫伤而死。根据警视厅四谷署的现场勘查,台阶的扶手上有跳下的痕迹,目前正在进行进一步调查,以确定是自杀还是事故。

ZARD 1991年出道。93年发表的单曲「负けないで」「揺れる想い」取得了巨大的成功。那之后,又接连发表了很多热门单曲,是90年代的代表艺人。ZARD的坂井泉水,除了为ZARD组合的歌曲作词以外,还经常为DEEN等组合的歌曲作词。原本,今年秋天,ZARD将发售新专辑,并举行巡回演唱会,距离上次巡回演唱会已有3年之久。

ZARD演唱的“柯南”歌曲
名侦探柯南OP 04(旋转命运之轮)
名侦探柯南OP 15(星星的光芒)
名侦探柯南ED 17(梦想明天)
名侦探柯南ED 24(即使悲伤 我依然喜欢你)
名侦探柯南剧场版2 第十四个目标(仿佛回到少女时代)
名侦探柯南剧场版9 水平线上的阴谋(等待夏日的航帆)

名侦探柯南ED 24(即使悲伤 我依然喜欢你)成为 zard主唱坂井泉水 演唱的“柯南”最后一首歌曲!!!
zard 主唱坂井泉水 一路走好 !!!

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,使得安裝過程較為容易。

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

FON: Extend Your Internet Connection - Preliminary

Back

在修改之前,要先介紹的是本文實作時的網路架構。AP2在未使用本文的方法前,網路架構是像下圖這樣。


Fig 1: Network Infrastructure before modifying AP2 (Click to enlarge)


而當您完成本文的步驟後,會變成像下圖這樣子。


Fig 2: Network Infrastructure after modifying AP2 (Click to enlarge)


在上兩張示意圖中,物件之間用實線連接的部分,即表示是透過實體線路連接,而虛線則是透過無線網路連接。從第二張圖可以發現經過改裝後的AP2,是透過無線網路信號與AP1的MyPlace連接,而且兩台FON的MyPlace和FON_AP的SSID和網段都刻意設為不同的值,以避免與另一網路衝突。在AP2的Ethernet Port上,可以再連接其它電腦或Switch,連接完成後使用DHCP取得相關設定值,並透過AP2上網,這部分功能與IP分享器相同。

為了簡化安裝過程,目前製作了自動安裝指令檔,您只需要下載一壓縮檔,並依指示操作,即能得到與本文相同的結果。想要直接使用此方法,請直接跳至Act III。若您喜歡逐步修改您的FON,使它具有延伸Internet連線的能力,並讓Ethernet Port的用戶,把FON當成IP分享器使用,或您想瞭解更多修改這些設定檔,或是做某些步驟的原因,請繼續閱讀以下的文章。

在手動修改您的FON之前,您需要擁有、熟悉以下軟體或系統的操作:
  • 一個現成的Linux Box:由於wpa_supplicant要能在FON上運作,您必須先由原始碼來cross-compile成FON能使用的binary,所以需要一個能正常運作的Linux Box。若手邊無閒置或現成的設備,可以使用VMWare等軟體,在您目前使用的電腦上安裝Linux,即可在不變更現有作業系統的情形下,同時運行Windows與Linux。
  • Linux系統的操作:FON使用Linux系統,若您不熟悉Linux系統的基本操作,或許會在某些操作上遇到問題。
  • vi的操作:vi是個相當重要且好用的文件編輯器。在FON上面,幾乎都是使用vi來修改文件,基本的操作務必熟練!
  • PieTTY or PuTTY:要透過SSH使用FON的Terminal,一般在Windows上是使用此兩工具。若您有其它順手的工具也可以使用。
  • Reset FON:當您修改FON出了意外狀況時,您必須Reset您的FON,使FON的內部恢復至韌體預設值。也就是在還沒修改前,您必須先瞭解需如何操作,可使FON回復韌體的預設值。
  • PSCP:使用PSCP軟體,可以方便的直接透過SSH傳送檔案至您的FON。
  • FON的SSH存取:若您的FON尚未能經由SSH使用FON的Terminal,請參閱FON: Unbrick your La FONera!
瞭解您需先熟悉哪些系統或工具後,再來您需要備妥以下檔案:
  • OpenWRT Source Code:這是從FON官方網站取得的OpenWRT原始碼,FON內部的韌體應該是由此原始碼調整過後編譯而來的。雖然似乎裡面的檔案與現有FON韌體內部,看起來有些許不同,不過不會影響本系列文章的操作。由於此壓縮檔已具有toolchain,只需經過簡單設定後,即能方便的取得cross-compile需要的compiler,也同時擁有WPA Supplicant需要的MadWiFi Driver, libopenssl, libcrypto等library和原始碼,節省額外找尋其它檔案的時間。
  • WPA Supplicant Source Code:負責建立AP2與AP1的連線,且是加密系統的必要工具。本文使用的版本是0.5.7。
看到這裡,應該會有人想到FON內部使用的是ipkg,能直接安裝別人預先編譯好的套件,為什麼不直接使用網路上現成的WPA Supplicant套件呢?由於這些套件多為像FON的Embedded System使用,故檔案大小為最優先考量的部分,越能減少檔案大小則越佳,在這樣的前提下,大多數現成的套件並不支援MadWiFi,使得無法在FON運作,而自行compile後就能在FON上正常運作。

預先準備的動作完成後,請繼續閱讀接下來的文章。

FON: Extend Your Internet Connection - Act I

Back

免責聲明:若您依照本文章內容修改您的FON,更改後出現任何問題,最後導致FON無法正常運作,您需自行負責,本人並未保證此修改方式適用於各種特殊情形!若您繼續閱讀本文章,則表示您同意此聲明。


在先前的Introduction提到了加密系統的部分,需藉由wpa_supplicant來完成連線的動作,也就是在所有的步驟之前,第一件事就是要先compile出能在FON使用的版本。而在OpenWRT的原始碼中,已經準備了我們需要的檔案,只需簡單的操作,即能得到我們想要的結果,不需要再大費周章的找齊各種需要的原始碼,由此可以節省大量的時間。接下來,將要介紹如何利用OpenWRT的toolchain,compile出適合FON使用的cross-compiler,並用它來compile wpa_supplicant。

註:以下提及的參數皆以實驗環境為例,您可能需要依您的環境進行適當的調整。



請先準備好Preliminary提到的OpenWRT和wpa_supplicant,並分別解壓縮在這兩個資料夾。
~/fon/fonera
~/fon/wpa_supplicant-0.5.7
首先,我們先來製作cross-compiler。先切換至~/fon/fonera,並執行以下命令。
make menuconfig
若您出現以下訊息,則表示您需調整您的Console大小至80*19以上,否則無法顯示選單。


Fig 1: Screen size limitation of Menuconfig


若順利的話,應該會看到下圖的畫面。


Fig 2: The menu of OpenWRT (Click to enlarge)


根據先前實驗得到的結果,您只需變更Libraries->libopensslDrivers->kmod-madwifibuilt-inpackage,其它部分保持預設值即可,而設成built-inpackage,在這裡並不影響最後得到的結果。修改完成後,請按ESC離開,並在出現的選單選擇儲存設定檔。

接下來,請執行以下指令,開始自動compile新的cross-compiler。此過程可能需要1小時或更多時間,視電腦處理速度而定。
make
當您看到以下的畫面,且無出現任何錯誤訊息,即表示您的cross-compiler已經就位,再來就可以compile能在FON使用的wpa_supplicant。


Fig 3: Job Finished! (Click to enlarge)




接下來要使用前面的cross-compiler來compile wpa_supplicant。先進入wpa_supplicant資料夾,並執行以下指令,把範例設定檔複製成主要設定檔。
cp defconfig .config
完成後,修改.config設定檔,並貼上以下的內容,貼在檔案中任意位置都可以。此部分是用來覆寫預設的MadWiFi和OpenSSL include和link的路徑,並修正make時link失敗的問題。
CC=../fonera/staging_dir_mips/bin/mips-linux-uclibc-gcc
CFLAGS = -I../fonera/build_mips/openssl-0.9.8b/include -Os -MMD -Wall
LIBS += -L../fonera/build_mips/openssl-0.9.8b -lssl
LIBS_p = -L../fonera/build_mips/openssl-0.9.8b -lcrypto

CONFIG_DRIVER_MADWIFI=y
CFLAGS += -I../fonera/build_mips/linux-2.4-ar531x/madwifi-0.9.0
CONFIG_NO_STDOUT_DEBUG=y
完成後,執行以下指令來compile wpa_supplicant。
make
註:經由本設定檔compile的wpa_supplicant,可使用None, WPA, WPA2的認證和WEP40, WEP104, TKIP, CCMP(AES)加密的組合,若您的網路環境需要使用EAP或其它加密系統,請自行修改.config設定檔。

若過程中無任何錯誤訊息,表示compile已經成功。您可以在資料夾中找到以下三個檔案,這些檔案將會在FON上面運作。


Fig 4: wpa_supplicant (Click to enlarge)


以上程序完成後,您可以先把下列檔案上傳至FON,我們將會在稍後的操作中使用這些檔案。
Source of Linux Box:
~/fon/wpa_supplicant-0.5.7/wpa_supplicant.conf
~/fon/wpa_supplicant-0.5.7/wpa_cli
~/fon/wpa_supplicant-0.5.7/wpa_passphrase
~/fon/wpa_supplicant-0.5.7/wpa_supplicant
~/fon/fonera/build_mips/openssl-0.9.8b/libcrypto.so.0.9.8
~/fon/fonera/build_mips/openssl-0.9.8b/libssl.so.0.9.8

Destination of FON:
/etc/wpa_supplicant.conf
/usr/sbin/wpa_cli
/usr/sbin/wpa_passphrase
/usr/sbin/wpa_supplicant
/lib/libcrypto.so.0.9.8
/lib/libssl.so.0.9.8

以上步驟皆完成後,您可以繼續閱讀下一篇文章。

FON: Extend Your Internet Connection - Act II

Back

免責聲明:若您依照本文章內容修改您的FON,更改後出現任何問題,最後導致FON無法正常運作,您需自行負責,本人並未保證此修改方式適用於各種特殊情形!若您繼續閱讀本文章,則表示您同意此聲明。

在前一篇文章,我們已經準備好了wpa_supplicant,現在需要修改FON的設定值,並加上自動指令檔,使FON能自動啟動與設定相關選項。在這裡也會修改額外的設定檔,來解決先前發現的一些小問題。

在這之前,請先把您的FON恢復至出廠預設值,並且讓FON接受SSH連線,再重新設定相關設定值,避免您先前安裝其它套件會與接下來的設定衝突,最後記得需自動更新成0.7.1 r3。完成後,請先切斷AP2的Ethernet並重新啟動,避免特殊狀況的發生。



您需先在AP2的網頁管理介面,分別設定以下功能。

設定兩個SSID,分別為MyPlace 2, FON_AP 2,只要不與AP1相同即可。為了避免AP2與AP1連線時,同樣的SSID會發生混淆,即使連線設定檔能指定連線AP的BSSID(MAC位址),這仍然是比較保險的做法。加密的部分則不會互相影響,也就是AP1與AP2的MyPlace可以設定不同的加密Key和加密模式。設定完成別忘了要Submit。

Advanced->Internet Connection Settings裡面,需設定Mode為DHCP,這樣搭配下文修改過的/sbin/ifup是剛好的,設定完成別忘了要Submit。

Advanced->Network Settings裡面,需設定與AP1的MyPlace不同的網段。您可以參考Preliminary中網路架構圖的192.168.11.1,或自行設定一個不與現有重疊的網段。若您設定為一運作中的網段,當AP2的用戶端連線至這些重疊的網段,將會無法route至目的地。

Advanced->Wireless Settings裡面,請設定與AP1的MyPlace相同的頻道,這樣AP2才能與AP1連線。



第一個要新增的設定檔,功能是自動建立FON的Station,讓FON能像一般網卡一樣,並且連線至預先設定好的AP。待FON成功連線至FON總部,系統本身的機制就會啟動MyPlace 2和FON_AP 2。這個檔案命名為/etc/init.d/S99wds
#!/bin/sh

# clean the original vap device
ifdown lan

# create new ap and sta device
wlanconfig ath1 create wlandev wifi0 wlanmode ap
wlanconfig ath2 create wlandev wifi0 wlanmode sta nosbeacon

# start sta device first
wpa_supplicant -Bw -iath2 -c/etc/wpa_supplicant.conf
# get IP Addr and other settings by DHCP
udhcpc -i ath2 -R

# and then the network gets ready, the ap device is booted by fon

# ping default router to prevent wireless connection lost
ping `route -n|grep ath2|grep UG|awk '{print $2}'` &

ifconfig eth0 192.168.12.1 netmask 255.255.255.0
需要先Clean Original VAP,是因為Virtual AP和Station有特定的啟動順序,若Station不是在Virtual AP前先bring-up起來,當其它網卡連線至此AP,就會重複出現斷線重連的現象,這個現象在WDS Bridging最下面的Important有提到。這裡使用FON內建的script ifdown lan來關閉MyPlace 2信號的介面ath1

Create new ap and sta的部分,是要重新建立剛才關閉的ath1,和準備要做為Station的ath2

Start sta device和get IP Addr的部分,是先使用wpa_supplicant建立與AP1的連線,完成後再使用udhcpc從AP1取得IP位址。若您需要自行設定IP位址,請自行取代此行設定。

當AP2成功連線至AP1,表示AP2已有連線至Internet的能力,再來會像連接網路線上網一樣,與FON總部連線。連線完成後,會自動使用指令檔來啟動MyPlace 2和FON_AP 2兩個介面,並且開始接受用戶端的連線。若您已在FON總部要求啟動MyPlace 2前,就先連線至MyPlace 2,您可能會遇到極短時間的斷線,但隨即馬上恢復,這是正常的現象。

再來是自動ping預設router的動作,主要是避免無線網路長時間閒置,導致無線網路自動斷線。使用此方法可維持AP1與AP2的連線。

最後一行是設定Ethernet Port的IP位址,相當於分享器的IP位址。



這裡要修改的是/sbin/ifup這個檔案,需修改以下部分:
line 222:
wan_ifname=${wan_ifname:-eth0}

Modify:
wan_ifname=ath2
在FON預設值中,連線至Internet的網路封包都是由Ethernet Port(eth0)送出,而目前Internet連線是由Station(ath2)提供,則需修改wan_ifname為ath2。當FON啟動時,會產生目前網路介面的配置檔,並輸出至/tmp/network-config,而其它設定檔或script都會引用此配置檔,來得知特定功能由哪個介面負責。只要修改/sbin/ifup,使它產生出需要的結果,就不需要逐一修改所有的設定檔,這樣能節省相當多的時間。



這裡要修改的是/etc/hotplug.d/iface/20-firewall,需修改以下部分:
@ last 2 line:

Insert
/usr/sbin/iptables -A WAN_HOOK -o ${wan_ifname} -d 192.168.1.0/28 -j DROP

關於這裡修改的部分,請參考FON: Prevent Clients to Access Unauthorized Zone,在這裡有詳細的說明。就本例而言,FON_AP 2的使用者在預設的設定之下,並無法連線至192.168.10.0/24,但並無法防止使用者連線至上層的192.168.1.0/28。加上這樣的規則,即可保護192.168.1.0/28不被FON_AP 2的使用者存取。設定完成後,每次FON啟動就會自動將此規則加入iptables。



再來是/etc/wpa_supplicant.conf。這裡分別貼上WPA, WPA2, WEP, None四種加密方式可使用的設定檔。

WPA, WPA2:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
ap_scan=1

network={
ssid="MyPlace"
bssid=00:18:84:XX:XX:XX
proto=WPA RSN
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP WEP104 WEP40
psk=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
}
WEP:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
ap_scan=1

network={
ssid="MyPlace"
key_mgmt=NONE
wep_key0="abcde"
wep_key1=0102030405
wep_key2="1234567890123"
wep_tx_keyidx=0
}
None:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
ap_scan=1

network={
ssid="MyPlace"
key_mgmt=NONE
}
由於wpa_supplicant會自動使用設定檔內允許的加密與認證方式,所以WPA與WPA2可以使用相同的設定檔。

WPA, WPA2的Key也可以直接放入未編碼過的Key,並使用雙引號(")把Key包含起來,但這樣每次系統啟動時,都需花費系統資源來把未編碼過的Key,轉換成編碼過的Hex Code,相當花費時間,因此建議您可以事先使用wpa_passphrase把您的Key轉換好,再把它直接放入wpa_supplicant.conf,可以節省開機需要的時間。

若您的SSID或Key使用的是特殊字元,您可以直接輸入Hex Code,並且不要在旁邊加上雙引號,wpa_supplicant也能接受此格式。

若您使用WEP加密,您需知道原先Key的Index,並修改成設定檔相對應的選項。在設定檔中的Index範圍是0~3,若您原先的格式是1~4,則您的Index值需自行減1,然後再修改成wep_key#="abcde"和wep_tx_keyidx=##字號請替代為您的Index。



在這裡要修改的有兩個檔案。

/etc/dnsmasq.conf @ last line:
Append:
dhcp-option=6,168.95.192.1,168.95.1.1

dhcp-range=192.168.12.100,192.168.12.200,255.255.255.0,12h
interface=eth0
interface=ath1
/etc/init.d/N50chillispot @ line 116:
Remove:
--dns1="$WANIP" \
--dns2="$WANIP" \
dnsmasq是FON提供MyPlace 2用戶端DNS查詢和DHCP服務的程式。實際使用時,發現DNS查詢的部分常會出問題,在不明情況下,某一次的DNS查詢會回傳Query refused,接下來的查詢會全部都回傳Query refused,直到重新啟動才會恢復。此問題與FON連續開機數天,就會發生無法連外的情形是類似的。在設定檔設定DNS Server後,就會直接透過DHCP傳給MyPlace 2用戶端,而不是直接使用FON的dnsmasq,如此即可避免此問題。

再來的dhcp-range設定的是會分配給MyPlace 2和Ethernet Port用戶端的IP位址範圍。這裡也要求dnsmasq需listen eth0ath1介面。

同樣為了不使用dnsmasq,FON_AP 2也需要做一些調整。FON_AP 2的使用者是由chillispot提供服務,在FON預設值中,會使用自身的dnsmasq,也就是會遇到相同的問題。刪除指定的那兩行,是要讓chillispot使用系統從上層網路取得的DNS Server,而不是使用dnsmasq,這樣就能解決問題。



這裡修改的是/sbin/ifup
Remove line 61:
udhcpc -i "$dev" ${ipaddr:+ -r $ipaddr} -R &
為了要讓Ethernet Port當成IP分享器使用,先前有要求Advanced->Internet Connection Settings裡需設為DHCP。設為DHCP後,系統啟動時會執行這裡的指令,而刪除此行就會變成只啟動eth0而不做額外的設定,這樣就不需要先刪除FON設定好的值,可以直接執行想要的指令。



這裡修改的是/etc/firewall.user
Append:

# make packets received from ethernet inteface can go through FON to ath2
iptables -A FORWARD -i eth0 -o ath2 -j ACCEPT
iptables -A FORWARD -i eth0 -o ath1 -j ACCEPT
iptables -A FORWARD -i ath1 -o eth0 -j ACCEPT
這個部分是為了讓Ethernet Port的電腦,可以經由FON連線至MyPlace和Internet。若未加上這些規則,Ethernet Port的電腦會無法與其它Interface連線。



以上內容都修改完成後,重新啟動後,您的FON應該可以成功與AP1連線。請繼續閱讀接下來的文章。

FON: Extend Your Internet Connection - Act III

Back

免責聲明:若您依照本文章內容修改您的FON,更改後出現任何問題,最後導致FON無法正常運作,您需自行負責,本人並未保證此修改方式適用於各種特殊情形!若您繼續閱讀本文章,則表示您同意此聲明。


這裡要介紹的部分,是如何使用我們事先做好的自動安裝檔。經由此自動安裝檔引導您輸入設定值,即能使您的FON達到本系列文章的功能。由於本自動安裝檔並無法保證在所有情形下運作,若有任何疑問,歡迎隨時回報!在使用之前,希望您已經瞭解本文Preliminary的網路架構,在後面的設定會需要這些資料。



懶人包更新歷程:

patch-20070504.tar.gz
http://tinyurl.com/2t4zze

2007.12.03: 此懶人包已確定無法正常在0.7.1 r3和更高版本運作,有興趣使用具有此功能之其它套件,請參考這裡。若您仍想下載懶人包,請自行複製下載連結。
2007.05.04: 使用Ethernet Port當成分享器時,網頁管理介面的Advanced->Port Forwarding無法套用任何設定,此問題已修正
2007.05.04: 修正install.sh的保護區域網路的部分,設定值並不會寫入至設定檔。
2007.05.02: 修正Ethernet Port無法與ath1互相route
2007.04.30: 第一次釋出



在這之前,請先把您的FON恢復至出廠預設值,並且讓FON允許SSH連線,再重新設定相關設定值,避免您先前安裝其它套件會與接下來的設定衝突,最後記得需自動更新成0.7.1 r3。完成後,請先切斷AP2的Ethernet並重新啟動,避免特殊狀況的發生。



您需先在AP2的網頁管理介面,分別設定以下功能。

分別設定兩個SSID為MyPlace 2, FON_AP 2,只要不與AP1相同即可,避免AP2與AP1連線時,相同的SSID會發生混淆,雖然連線設定檔能指定連線AP的BSSID(MAC位址),這是比較保險的做法。加密的部分則不會互相影響,也就是AP1與AP2的MyPlace可以設定不同的加密Key和加密模式。設定完成別忘了要Submit。

Advanced->Internet Connection Settings裡面,需設定Mode為DHCP,設定完成別忘了要Submit。

Advanced->Network Settings裡面,需設定與AP1的MyPlace不同的網段。您可以參考Preliminary中網路架構圖的192.168.11.1,或自行設定其它網段,以不與其它網段重疊為原則。若您設定一運作中的網域,AP2的用戶端會無法route至重疊的網段。

Advanced->Wireless Settings裡面,請設定與AP1的MyPlace相同的頻道,這樣AP2才能與AP1連線。



現在請使用PieTTY或您習慣的SSH連線程式,連線至您要調整的FON。連線後請先拔除網路線再reboot您的FON,然後再繼續後面的動作。

下載上面連結的壓縮檔至您的電腦,並使用pscp或其它工具上傳至FON的/tmp,也就是預設一登入的資料夾。若您使用pscp,務必加上-scp參數,否則會使用tftp上傳,此時會發生錯誤。在測試的過程中,使用wget從區網的Server下載檔案後,雖然看似檔案下載完成,而容量也正確,實際上解壓縮卻會讓FON當機,一定得重新啟動,直到透過無線網路使用scp上傳至FON,問題才解決,故不建議直接從FON使用wget下載此檔案。

上傳完成後,請執行下列指令解壓縮此檔案,檔名請自行依實際情形調整。若您是上傳至預設一登入的地方,解壓縮的過程會相當快,因為那裡是RAM。正常解壓縮為5秒,若解壓縮的時間超過30秒,基本上已經太久了,建議您先重新啟動,待無線網路信號出現後,立即透過無線網路使用scp上傳至FON,再試一次。
tar -zxf patch-2007-04-30.tar.gz
解壓縮完成後,會出現lazy_pack資料夾。請執行裡面的install.sh
cd lazy_pack
./install.sh



第一步會問您的問題,是您想把這些必要的檔案,都移動至哪個資料夾。若您想放在預設路徑的/etc/wireless,直接按下Enter即可。接下來會把剛才解壓縮的檔案移動從RAM至Flash Memory上,這部分速度會比較慢,一般而言約需2分30秒左右,請耐心等候。

完成後,指令檔會自動備份您現有的檔案,並把新檔案以link的方式取代原先的檔案,這些過程是自動的。若您先前已完成檔案移動的動作,可以再度執行此安裝檔,來接續先前中斷的安裝,或是覆寫現有的設定。

接下來會出現兩個問題,是和DNS Server有關的,這個部分的設定會套用至FON_AP、MyPlace和Ethernet Port的使用者。用戶端使用DHCP取得設定值時,會直接使用您這裡設定的DNS Server,而不是使用FON內建且常出問題的dnsmasq。第一個問題是要輸入您ISP的DNS Server,而第二個問題是輸入您第二個DNS Server,某些ISP會提供第二個DNS Server。若您不需設定第二個DNS Server,直接按下Enter即可。

再來出現的部分,是用來設定Ethernet Port是否要當一般的分享器來使用,若您不需要這樣的功能,請直接按Enter。您需要設定Ethernet Port的IP位址,就像您的IP分享器需要設定IP位址一樣。此IP位址所在的網段,絕對不能與現正運作的網段重複,否則route會失敗。再來是要設定分配給用戶端的起始和結束IP位址。

下一個部分,是設定您不想讓FON_AP 2使用者看到的網段。這個功能的詳細說明,請看FON: Prevent Clients to Access Unauthorized Zone。同樣的,若您不需要此功能的請直接按Enter。您只需輸入在該網段中的任一IP位址,如架構圖中的192.168.1.3,與適當的Subnet Mask,如255.255.255.240,這樣設定就會生效。

再來這一部分是與無線網路相關的設定,它關係到您是否能與AP1連線。第一個需輸入的是AP1的SSID,SSID中有空白也不影響。第二個是BSSID,也就是您AP1無線網路的MAC位址,若您有NetStumbler或類似工具,即能取得AP的MAC位址,而在AP的底部也可能就有標示,您可以找找看。若AP1為FON,底部的標籤是Ethernet Port的MAC位址,此位址的最後一位+2h就是MyPlace的位址。第三是設定使用的加密方式,假設您使用wpa加密,就直接輸入wpa即可,依此類推。若您輸入的是wep,則會要求您輸入hex或plain,表示您的key是Hex Code或是純文字。第四是設定您加密的key。若您使用wep,則會再提示您輸入目前使用的key的index,範圍是1~4,請務必與原AP設定相同,若原AP是寫0~3,則index請自行+1,使它變成1~4的格式。

最後會建立解除安裝檔uninstall.sh,它能自動移除先前安裝的檔案,並還原成未安裝前的狀態。建立完成後,您的FON會自動重新啟動,待開機完成後,剛開始您會先看到MyPlace 2可以連線,但馬上會斷線,過一小段時間又自動恢復,此時就能正常提供服務了,這是正常現象。安裝程序到這裡已經結束。



只要您完成第一階段的檔案複製,這個指令檔就可以重複執行,並會自動跳過檔案複製的程序,直接進行安裝設定。若您需事後再修改相關的設定值,可以直接執行此指令檔,它會自動覆寫先前的設定。若您手動修改過相關設定檔,不建議您再次執行此指令檔,因為可能會造成設定值遺失,或是覆蓋錯誤等問題。執行指令檔時,若未完成所有的設定,干萬不要重新啟動FON,否則FON可能會無法啟動。

經由此安裝檔設定過的FON,在網頁管理介面上有些小改變。


Fig 1: FON Router Status (Click to enlarge)


Fig 2: Advanced Router Status (Click to enlarge)

從Fig 1可以看出來,現在的Router Status中的Internet Connection,顯示的是您Station從AP1取得的IP位址和Gateway。而DNS Server雖然是系統預設值,但實際上並不是使用此DNS Server。最下面還多了Advanced Router Status,這裡會連結到Fig 2的網頁。

Advanced Router Status顯示的資訊,與您使用SSH連線至FON,在Terminal執行指令所得到的資訊是相同的。在頁首的部分,具有快速跳頁的功能,可以跳至指定的部分。而此頁設定5分鐘自動重新整理一次,若您先前點選了快速跳頁,重新整理後會回到重新整理前的位置,而不是回到頁首。



完成上述步驟後,您可以繼續閱讀下一篇文章。

FON: Extend Your Internet Connection - Act IV

Back

在前面的文章,您已經完成設定檔調整的部分,現在您的AP2應該已與AP1成功建立連線,並且AP2可以透過AP1連線至Internet。接下來要測試在這樣的架構下的效能,與電腦直接連線AP1的差異。

測試環境是使用區域網路中的192.168.1.3,上面使用Apache Web Server,並事先上傳200MB的ISO檔案,再由桌機下載檔案,並分割成10份同時下載。上傳的部分是由192.168.1.3當成用戶端,連線至桌機,並下載兩個各200MB的檔案,測試時間為1分鐘。

由區網的Server做為下載來源,最大的好處就是可以使FON盡量達到極限,不受家裡連外頻寬或其它因素的限制。每次的測試長度皆為1分鐘,使用多區段 下載,且使用DUMeter的Stop Watch來測量以下情形下的數據。數值會因實際環境不同而有所差異,您可能無法測得相同數據。



首先是基準組的測試,桌機直接與AP1連線。本次測試使用的是HG-770指向性網卡,測試前先調整至最佳接收角度,確保測試時能接收最完整的信號。從下圖得到的數據,信號強度相當好(-26dBm),所以信號接收的部分確定是正常的。


Fig 1: HG-770 Status. Connected to AP1 (Click to enlarge)




Fig 2, 3: Download, Upload with AP1

由上圖可得知,測得的數據與FON公佈的22Mbps Throughput有一段差距,22Mbps換算成Bytes需除以8,但除以10較符合實際傳輸的速率,也就是2.2MB/s。

第一部分的測試,桌機先透過Switch,並連接在AP2的Ethernet上。封包從桌機出發,經由AP2的Ethernet port進入FON,再經過Station(ath2)到達AP1的ath1,最後由AP1轉送封包出去。




Fig 4, 5: Download and upload through Ethernet connection. Connected to AP2


第二部分的測試,是由桌機使用HG-770與AP2連線,並使用同樣的方法測試。




Fig 6, 7: Download and upload through wireless connection. Connected to AP2

從以上測試的結果可知,若下載的檔案需透過AP1傳回AP2,再使用無線網路傳給用戶端,整體的頻寬會變為原來的一半左右,同時接收和傳送資料各需要一半的頻寬。若桌機透過Ethernet連線至AP2則無此現象,因為桌機接收資料不會佔用無線網路頻寬。也就是串連的AP越多,且同時一起傳送與接收自身需要的資料,每一個AP可供自己使用的頻寬會大幅減少。

測試報告結束後,您可以繼續閱讀接下來的文章。

FON: Extend Your Internet Connection - Final

Back

最後這一部分,要說明的是已知的問題和先前未補充的部分。

若AP1需先在網頁登入後,才能使用Internet,除非目前自行新增相關的登入Script,否則無法使用。

當您無法正常使用AP2時,第一件事就是先重新啟動,並放置10分鐘。若還是沒有恢復正常,您可以先把FON用網路線與電腦連接,並使用ssh程式連線至169.254.255.1,只要FON內部還能正常運作,應該都可以連線進去,並重置或修改系統設定。

若以上的方法仍無作用,您可以連續壓住FON底部Reset鈕約30秒,放開之後約10秒,系統會自動重新啟動,完成後會回復至出廠值,只要不是硬體故障,此方法應該都能讓它恢復正常。

若遇到韌體更新,建議使用新版發佈的檔案,因為原先的檔案可能會被覆蓋,或與其它官方更新的設定檔不相容,需以新韌體的檔案為基礎,重新修改相關檔案。建議您先回覆至出廠預設值,再安裝更新的檔案。

剩下的等待您來補充 :)