m0n0wall 1.3b18增加3322.org動態域名支持過程實錄

一、前言
由於本人對FreeBSD不熟悉,也不會PHP開發,所以都是拿來主義,一直使用m0n0wall 1.22中文版、1.235中文版和1.235中文插件版(30w核心)。
可是最近的項目要用無線網絡來覆蓋辦公室,而m0n0wall 1.2x基於FreeBSD4.11的原因,對無線網絡支持不好,一是支持的無線網卡很少(也比較難找),二是僅支持IEEE 802.11b標準,最高帶寬爲11Mbps。因此考慮使用基於FreeBSD 6.4的m0n0wall 1.3b18,來組建我的無線防火牆。

二、需求和問題
m0n0wall 1.3b18對無線網絡支持比較好,對IEEE 802.11g標準的54Mbps支持還是不錯的,無線網卡支持也比較多,我選用了Atheros 5005G/2413a芯片無線網卡。
由於我習慣使用1.235中文插件版,所以對其中的動態域名3322.org和shellcmd中ARP綁定等功能應用有需求,特別是3322.org動態域名。本次項目是使用ADSL/PPPoE來連接Internet,因此動態域名是必需的。
針對以上問題,尋求解決方案,於是乎就開始研究analyst在m0n0wall 1.2x上增加的3322.org動態域名的支持,找到希網(www.3322.org)提供的FreeBSD 4.x客戶端,以及m0n0wall硬盤映像文件解包、封包的相關文章,邊學邊幹,通過論壇和QQ羣取經學習,終於在m0n0wall 1.3b18上成功增加了3322.org動態域名的支持。

三、參考資料
1、analyst, m0n0Wall硬盤映像文件解包、封包HOW TO,  
http://bbs.m0n0china.org/viewthread.php?tid=1
2、analyst, 增加希網(www.3322.org)DDNS更新的m0n0wall 1.21,  
http://bbs.m0n0china.org/viewthread.php?tid=42
3、xyjn, Howto:如何定製m0n0wall鏡像文件, http://bbs.m0n0china.org/viewthread.php?tid=1&extra=&page=6
4、add1132, 關於給英文版加shellcmd ipshow 3322.org 的一點心得,
http://bbs.m0n0china.org/viewthread.php?tid=14345
對以上文章作者特別感謝。

四、工作過程
1、準備工作
☆ 從http://m0n0.ch/wall/上下載m0n0wall 1.3b18
☆ mini版FreeBSD 4.11
☆ 從希網(www.3322.org)下載ez-ipupdate-3.0.10-freebsd4.8-i386.tgz
☆ VMware workstation 5.5綠色版(不需要特別安裝,很方便)
☆ CHKenFTP Server (一款小巧的FTP服務器軟件,可以在我的博文“用g4u在VMware虛擬機上安裝m0n0wall”中下載)
☆ g4u 2.4(用來安裝測試m0n0wall)
2、過程實錄
☆ 在我的工作電腦上先安裝好VMware workstation 5.5綠色版(也就是解壓縮到指定文件夾,運行幾個批處理文件就行了),我的工作電腦爲宿主機。
☆ 從http://www.freebsd.org下載mini版的FreeBSD 4.11,並安裝在VMware上,稱爲FreeBSD虛擬機。
   以用戶root登錄。


ddns01.JPG

   創建工作目錄system和change:
# mkdir system
# mkdir change
☆ 在宿主機上開啓CHKenFTP Server,並簡單配置,創建用戶和指定該用戶的目錄,將下載好的m0n0wall映像文件generic-pc-1.3b18.img拷入這個目錄。
☆ 回到FreeBSD虛擬機,ftp <宿主機IP>,並以剛創建的用戶登錄FTP Server,從FTP Server上下載generic-pc-1.3b18.img文件到FreeBSD虛擬機上。
    對映像文件解壓縮:我們下載的generic-pc-1.3b18.img文件是壓縮文件,首先要解壓縮。


ddns02.JPG

# mv generic-pc-1.3b18.img generic-pc-1.3b18.img.gz
# gzip -d generic-pc-1.3b18.img.gz
    創建一個虛擬設備並掛載映像文件:
# vnconfig -s labels -c vn0 generic-pc-1.3b18.img
# mount /dev/vn0a system/

    這樣我們在system目錄中就能看到generic-pc-1.3b18.img映像文件的內容了,從system中複製出mfsroot.gz文件到change目錄,以便修改。
# cp system/mfsroot.gz change/
    卸載掛載的映像文件和虛擬設備:
# umount system/
# vnconfig -u vn0
    我們得到了mfsroot.gz這個系統文件,需要先解壓縮再掛載,才能編輯內部的文件:
# gzip -d change/mfsroot.gz
# vnconfig -s labels -c vn0 change/mfsroot
# mount /dev/vn0 system/


ddns03.JPG

    此時我們就得到了詳細的m0n0wall系統文件和目錄,這就是映像文件解包過程。


ddns04.JPG

☆ 將從希網下載的ez-ipupdate-3.0.10-freebsd4.8-i386.tgz文件,解壓縮後取出其中的ez-ipupdate文件,用FTP方式下載到FreeBSD虛擬機,並拷貝到~/usr/local/bin目錄,替換掉原來的ez-ipupdate。
# cp ez-ipupdate system/usr/local/bin/


ddns05.JPG

# ln -s system/lib/libc.so.6 system/lib/libc.so.4


ddns09.JPG

# vi system/usr/local/www/services_dyndns.php
    修改$type和$vals中的相關內容,將DynDNS (custom)改爲QDNS,將dyndns-custom改爲qdns(注意是小寫字母)。


ddns08.JPG

☆ 考慮使用Shellcmd和IPshow這兩個插件,從論壇下載來插件,並以FTP方式下載到FreeBSD虛擬機中,並拷貝到~/usr/local/www目錄。
# cp shellcmd.php system/usr/local/www/
# cp ipshow.php system/usr/local/www/
# chmod 755 system/usr/local/www/shellcmd.php
# chmod 755 system/usr/local/www/ipshow.php
    然後修改fbegin.inc文件,其也位於~/usr/local/www目錄:


ddns06.JPG

# vi system/usr/local/www/fbegin.inc
    添加兩行菜單項。


ddns07.JPG


☆ 至此,我要修改的工作已經完成(如果你還需要修改其他PHP文件,可以繼續用vi編輯修改),卸載掛載的映像文件和虛擬設備:
# umount system/
# vnconfig -u vn0
    然後開始封包,對修改後的mfsroot進行壓縮,並拷回到映像文件中:
# gzip -9 change/mfsroot
# vnconfig -s labels -c vn0 generic-pc-1.3b18.img
# mount system/
# cp change/mfsroot.gz system/
# umount system/
# vnconfig -u vn0
    最後,重新壓縮映像文件,製作成你自己的m0n0wall 1.3b18映像文件:
# gzip -9 generic-pc-1.3b18.img
# mv generic-pc-1.3b18.img.gz generic-pc-1.3b18.img
☆ 用這個得到的映像文件,你可以使用g4u或physdiskwrite來安裝測試m0n0wall,或者在使用中的m0n0wall中用Firmware更新功能上傳映像文件(至少要是1.3b7版)。
    看看效果:


dyndns.JPG



ddns10.JPG



ddns11.JPG



ddns12.JPG


五、總結
    通過這次實踐,在m0n0wall 1.3b18上解決了兩個問題:希網(3322.org)動態域名支持、添加shellcmd和IPshow插件。當然起因是使用無線網絡,用修改後的的映像文件也成功實現了54Mbps的無線網絡覆蓋。
    根據這個思路,m0n0wall中的php文件,都可以根據需要進行修改,包括漢化等。在對m0n0wall映像文件修改操作中要遵循以下的操作流程,纔不會出錯:
    對img文件解壓縮→創建虛擬設備並掛載映像文件→複製出mfsroot.gz→卸載掛載的映像文件和虛擬設備→對mfsroot.gz解壓縮→創建虛擬設備並掛載mfsroot→可以在掛載點目錄中修改m0n0wall的文件,對m0n0wall進行改造→完成改造後卸載掛載的mfsroot和虛擬設備→壓縮mfsroot→創建虛擬設備並掛載映像文件→將mfsroot.gz複製回映像文件(即掛載點目錄)→卸載掛載的映像文件和虛擬設備→壓縮img文件並更名成最終img文件。

六、版權聲明
版權所有©2009,genehsu
本文版權歸genehsu所有,在承認作者版權的前提下,允許任意轉載;如需轉載,請保留該聲明,並標註出自m0n0wall中國。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章