2010年4月22日 星期四

ASUS Wl-520GU改DD-WRT

其實這教學文在dd-wrt的wiki就有了(謎之音:XD那你賣點是啥啊),所以我決定使用ubuntu環境配合上一點點shellscript來完成這件事情。

簡單敘述這個組合的威力。dd-wrt是一個開源碼中給Router的韌體,很遺憾的說,其實我買了很多次ASUS的WL-520G系列Router,但是其實從來沒有看過裡面ASUS設定的介面,因為一開箱就馬上刷DD-WRT(…..),原廠韌體不錯啊,但是dd-wrt的強大除了調整無線功率之外,還有添加很多package程式。比如說,利用WL-520GU背後的USB多加一隻隨身碟,然後變身FTP/SAMBA或P2P動物機(ok,講到這裡很多人都不相信了),或者是扮演VPN的角色(by OpenVPN)。是的~你沒看錯,你剛剛花一千多一點買的家庭用IP分享器,可以VPN,就是那個回家辦公事的VPN。

凡事起頭難,尤其是人人常說,刷機有一定風險,一個不小心就準備再買個新的(其實也沒有這麼慘,那都是唬人的)。尤其是進入工程模式常常需要一些神秘的儀式…

首先簡單講要準備的東西,到dd-wrt下載好新的韌體(如我使用的dd-wrt.v24_vpn_generic.bin),將電腦網路線插到WL-520GU的Lan1孔裡(因為在救援模式,只有這個孔開放連線),在ubuntu安裝tftp軟體(我使用的是atftp)

wget http://www.dd-wrt.com/routerdb/de/download/Asus/WL520GU/-/dd-wrt.v24_vpn_generic.bin/1966

sudo apt-get install atftp

然後調整網卡跟等一下router同個網段,因為這樣兩邊等一下才不需要路由轉換就可以連線(不要以為刷機中的路由器會幫你轉封包,要是這樣霍金還可以跑步游泳的說)。參考指令如下

sudo ifconfig eth0 192.168.1.2 netmask 255.255.255.0

要作傳說中神秘的Hard-Reset,又稱30-30-30 Reset 因為每個步驟都大約30秒,用個小小script輔助一下

#!/bin/bash
function Wait() { for (( x=30 ; x > 1 ; x-- )) ; do echo $x && sleep 1; done }
echo 將電源線拔掉後按下 Enter計時 && read a
Wait
echo 持續按住背面RESTORE時恢復供電,再次按下 Enter 計時 && read a
Wait
echo 如果電源指示燈持續閃動,恭喜你進入Restore模式

如果你可以ping到192.168.1.1,恭喜恭喜,接下來就很容易了。如果沒有,除了沒有接對線(Lan1 !! 誰教你接WAN!!) 你有沒有把網卡IP設定在192.168.1.x的同網段也是重點…真還不行,拔掉電源再來一次,這樣多插幾次還不會弄壞你的Router的(但是你也不會高潮就是了)。

接下來我們真正進入弄壞Router的領域了,歐,不是,是DD-WRT的歡樂新世界。參考指令如下

atftp -p -l dd-wrt.v24_vpn_generic.bin --verbose 192.168.1.1
sleep 300 && echo DONE

注意到傳完以後一定要等夠五分鐘,這樣韌體才會寫入FLASH,不然,就再來一次。wiki上說要等Five EARTH Minutes,請各位火星人務必忍耐一下。

然後呢?把電源拔掉再插回去(相信你已經不是今天第一次了…應該很熟悉這感覺了)就好啦,有沒有很簡單啊?~馬上打開瀏覽器連線192.168.1.1,如果看到dd-wrt威脅你一定要設定管理帳號與密碼,不然就不給你用的對話,趕快把名字簽一簽,以後就是你要對她負責啦~~

#!/bin/bash
ping –c1 192.168.1.1
[ X$? == X0 ] || $( echo 連線測試失敗,請設定完連線再開始 ; exit 1 )
which atftp
[ X$? == X0 ] || sudo apt-get install atftp
function Wait() { for (( x=$1 ; x > 1 ; x-- )) ; do echo .$x && sleep 1; done }
echo 將電源線拔掉後按下 Enter計時 && read a
Wait 30
echo 持續按住背面RESTORE時恢復供電,再次按下 Enter 計時 && read a
Wait 30
echo 如果電源指示燈持續閃動,恭喜你進入Restore模式
Wait 30
echo 開始刷機 確認輸入y && read a
[ X$a == Xy ] || exit 0
atftp -p -l dd-wrt.v24_vpn_generic.bin --verbose --trace 192.168.1.1
Wait 300 && echo DONE

沒有留言: