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中国。
 

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