OpenWrt的网上笔记

目录

•1   简介
•2   参考文献
•3   OpenWrt介绍
•3.1   NVRAM操作
•4   准备工作
•5   关于Belkin 7231-4P
•6   内核配置与编译
•7   安装
•7.1   清空nvram
•7.2   安装firmware
•7.3   TFTP方式安装
•7.4   MTD方式安装
•7.5   对改装的路由恢复64MB内存设置
•7.6   7231-4P的WEB安装OpenWrt-kamikaze-8.09.1
•8   后期配置
•8.1   配置MAC地址,未确定版本
•8.2   设置路由的内网IP地址
•8.3   无线网络配置
•8.4   PPPoE上网配置
•8.5   简单的无线中继配置
•8.6   修改路由器交换端口
•9   软件与模块安装
•9.1   安装USB设备
•10   故障解决
•11   我的归纳
1   简介
我希望给自己的无线路由改造一下用OpenWrt,并且开放svn服务器,还有其他很多玩法。所以同时看一些网上的帖子吧。

这里主要选择OpenWrt的新版本kamikaze,对于whiterusssian版本只记录地址,不做详细阅读了。

2   参考文献
tsend time的博客: http://blog.chinaunix.net/u1/38213/

1.[r]DD-WRT初次接触: http://blog.chinaunix.net/u1/38213/showart_1889929.html
2.[r]OpenWrt-1.安装手记: http://blog.chinaunix.net/u1/38213/showart_1890101.html
3.[u]OpenWrt FAQ-入门级别的中文帮助: http://blog.chinaunix.net/u1/38213/showart_1890319.html
4.[r]OpenWrt NVRAM集合: http://blog.chinaunix.net/u1/38213/showart_1890362.html
5.[r]OpenWrt-2.投入工作: http://blog.chinaunix.net/u1/38213/showart_1890368.html
我们都很疯的博客:

1.[r]OpenWrt固件介绍: http://www.ssbbcc.com/349.html
2.[r]路由器升级版本选择(DD-WRT/TOMATO/...): http://www.ssbbcc.com/228.html
3.[i]贝尔金7231-4P 64M版介绍: http://www.ssbbcc.com/224.html (还有关于JTAG的内容)
4.[r]OpenWrt固件配置简介: http://www.ssbbcc.com/398.html
ning的个人空间:

1.[u]主页: http://www.lupaworld.com/131820/ 包含一些OpenWrt编译的笔记,不过设备不同
2.[r]非常方便的OpenWrt的嵌入式Linux开发环境: http://www.lupaworld.com/131820/viewspace-108558.html 一些没什么内容的介绍
3.[r]OpenWrt嵌入式Linux开发环境: http://www.dzkf.cn/html/qianrushixitong/2009/0525/3795.html 关于WRT的历史
4.[i]一个小型的无线路由器Linux系统OpenWRT: http://www.cppblog.com/Khan/archive/2006/11/23/15573.html (还有很多关于nvram设置的提示)
5.[u]OpenMoko移植OpenWrt: http://wiki.openmoko.org/wiki/OpenWrt/zh_cn
6.[u]OpenWrt经验小结: http://blog.liuyi.info/openwrt (主要讲WRT54G有关的)
7.[u]什么是OpenWrt: http://hi.baidu.com/fnsoxt/blog/item/c2414f10a6fa33fcc2ce79d7.html (简介)
8.[r]OpenWrt/kamikaze/8.09.1/brcm-2.4/ 7231-4P路由器安装笔记: http://hi.baidu.com/westhack/blog/item/64cdcc455b58642fcefca361.html
9.[r]备份CFE和NVRAM的命令: http://hi.baidu.com/westhack/blog/item/5a6bfe35aedcda1690ef3976.html
10.[u]刷OpenWrt教程: http://hi.baidu.com/lnas/blog/item/15497166f835f02cab184c84.html (包含一些有用的外部链接)
11.[r]OpenWrt Remote Admin: http://www.wantmoore.com/archives/2007/08/06/openwrt-remote-admin/
3   OpenWrt介绍
NVRAM是Non-Volatile RAM,在OpenWrt里面是用了Flash Rom的最后64KB区块,用于存储一些配置参数。

3.1   NVRAM操作
显示所有参数:

# nvram show
# nvram show | grep wl0_
设置:

# nvram set <param>=<value>
# nvram set lan_ipaddr=192.168.1.2
# nvram commit
# reboot
删除一些参数:

# nvran unset <param>
提交修改:

# nvram commit
4   准备工作
判断硬件支持主要是看CPU型号。查看 http://oldwiki.openwrt.org/TableOfHardware.html

把我自己的无线路由拆开看了,可以确定的配置如下:

设备 参数
型号 F5D 7231-4P
CPU Broadcom 4712 200MHz
闪存 4MB
内存 64MB
交换机芯片 ADM6996L
版本 不确定

按照硬件支持列表中来看,只剩下两种可能,一种是Support,一种是Untest。应该没问题的。

下载合适的版本: http://downloads.openwrt.org/kamikaze/8.09.1/ 其中 brcm-2.4 是linux-2.4的版本,比较稳定, brcm47xx 是linux-2.6的版本,比较新。从附带软件包数量来看, brcom-2.4 接近1500个, brcm47xx 接近1600个。不过我需要的subversion是都有的。据谣传说2.6的好像有问题。

下载的镜像有多种版本:brcm是指CPU方面的通用版本,jffs2是指文件系统可写,但是较大,squashfs是只读文件系统,但是压缩后很小。

.trx版本是通用的,.bin为了提供设备支持而做的。首先尝试.trx版本。

备份原有的CFE:

dd if=/dev/mtd/0 of=/tmp/cfe.bin
dd if=/dev/mtd/3 of=/tmp/nvram.bin
5   关于Belkin 7231-4P
先查看一下无线网卡的版本:

# nvram show | grep corerev
wl_corerev=
wl0_corerev=7
各个版本号对应的驱动版本:

1.wl0_corerev=4 :一定使用VINT版
2.wl0_corerev>=5 <=7 :使用VINT和NEWD均可,推荐VINT
3.wl0_corerev>=8 :使用VINT和NEWD均可
4.wl0_corerev>9 :一定使用NEWD
如果结果不唯一,就先刷一个试试。我的是7。市面上买到的一部分时7230-4改的。一款刷不坏的路由。建议不要碰CFE,因为坏了需要JTAG才能修复。

6   内核配置与编译
7   安装
直接下载的brcom没有bin版本,只有trx版,一个作者尝试该文件名直接刷,刷成砖头了,重新做nvram以后居然可用了。

7.1   清空nvram
如果变砖头了需要清空nvram,有三种方法:

1.30/30/30方法:最保险的方式。推荐。
2.网页法
3.命令行法,也许就是mtd方式
30/30/30方法,首先确保dd-wrt里面开了reset功能,然后:

1.接通路由器,按住复位30秒
2.不要松开,断开电源,按住30秒
3.不要松开,重新接通,按住30秒
7.2   安装firmware
安装方式有3种:

1.Web升级,最方便,但是有一定的风险会刷成砖头
2.TFTP方式,比较靠谱,不过时机不太好把握
3.telnet/ssh方式
7.3   TFTP方式安装
确保开启了Boot Wait了。

1.使用网线连接到路由器,给本机网卡设置一个静态IP地址,不要跟路由的冲突了,但是在同一个C段,如 192.168.1.9 或 192.168.2.9 。
2.将firmware存放到根目录,注意,这种方式要用.bin的firmware。
3.打开第一个命令行窗口,执行 ping 192.168.1.1 -t ,回车开始执行
4.打开第二个命令行窗口,输入 tftp -i 192.168.1.1 put dd.bin ,预备而暂时不执行
5.断开路由器电源,马上接通电源
6.看到ping通后,立刻对tftp命令按下回车,基本上没问题
7.4   MTD方式安装
1.下载固件:

wget http://downloads.openwrt.org/kamikaze/...../openwrt-brcom-2.4-squashfs.trx
2.使用mtd刷新进去:

mtd -r write openwrt-brcm-2.4-squashfs.trx linux
7.5   对改装的路由恢复64MB内存设置
1.telnet登录: telnet 192.168.1.1

2.用户名root,密码admin

3.输入如下命令,一共5行:

nvram set sdram_init=0x0008
nvram set sdram_config=0x0033
nvram set sdram_ncdl=0x0000
nvran commit
reboot
4.不要断电,等待路由重启完成

恢复32MB内存的命令:

nvram set sdram_init=0x0008 #另一说0x000a
nvran set sdram_ncdl=0x0000
nvran commit
reboot
7.6   7231-4P的WEB安装OpenWrt-kamikaze-8.09.1
下载 http://downloads.openwrt.org/kamikaze/8.09.1/brcm-2.4/openwrt-brcm-2.4-squashfs.trx ,扩展名改为.bin,然后在DD-WRT或TOMATO中WEB升级到OpenWrt。

8   后期配置
8.1   配置MAC地址,未确定版本
nvram set il0macaddr=00:11:50:xx:xx:xx
nvram set et0macaddr=00:11:50:xx:xx:xx
nvram set et1macaddr=00:11:50:xx:xx:xx
nvram set wan_hwaddr=xx:xx:xx:xx:xx:xx
nvram set lan_hwaddr=xx:xx:xx:xx:xx:xx
nvram set wl0_hwaddr=xx:xx:xx:xx:xx:xx
nvram commit
reboot
8.2   设置路由的内网IP地址
nvram set lan_ipaddr=192.168.1.9
nvram commit
reboot
8.3   无线网络配置
修改文件 /etc/config/wireless ,寻找 config wifi-iface ,如下修改:

option ssid XXXXXX          #定义SSID
option mode ap              #AP的工作模式
option encryption none      #不加密
option encryption wep       #WEP加密
option key 1
option key1 XXXXXXX         #密钥,wep64为10个16进制数字,wep128为26个16进制数字
option encryption psk       #WPA-PSK加密
option key XXXXXX           #WPA密钥
option hidden 1             #启用SSID隐藏,0为广播
还要将上面的如下行给注释掉,否无线不会启动:

#option disable     1
配置好以后运行:

/etc/init.d/network restart
8.4   PPPoE上网配置
自动获取IP的PPPoE,修改 /etc/config/network ,寻找 config interface wan ,如下修改:

option ifname "eth0.1"
option proto pppoe
option username <username>          #PPPoE用户名
option password <password>          #PPPoE密码
option macaddr xx:xx:xx:xx:xx:xx    #MAC地址克隆
配置好以后运行:

/etc/init.d/network restart
检查状况,在 ifconfig 中看到ppp0就好了。

DHCP配置:

option ifname "eth0.1"
option proto dhcp
option hostname <routername>    #设置路由器机器名
8.5   简单的无线中继配置
修改 /etc/config/wireless ,添加如下配置:

config wifi-iface
    option device wl0
    option mode sta
    option ssid     #需要中继的AP的SSID
    option encryption   #加密方式
然后把 /etc/config/network 中的宽带配置修改为:

config interface wan
    option ifname "wl0"
    option proto dhcp
8.6   修改路由器交换端口
kamikaze默认交换端口与7231-4P的不同,修改 /etc/config/network 文件,找到 config switch eth0 一节的valn0和vlan1设置:

option vlan0 "0 1 2 3 5*"
option vlan1 "4 5"
9   软件与模块安装
9.1   安装USB设备
安装驱动,针对7231-4P:

opkg update
opkg install kmod-usb-ohci
opkg install kmod-usb-storage
安装文件系统模块:

opkg install kmod-fs-ext3
opkg install e2fsprogs
接入U盘,可以用dmesg看到 /dev/scsi/host0/bus0/target0/lun0 之类的信息,并可以认出型号。

格式化U盘:

mke2fs -j /dev/scsi/host0/bus0/target0/lun0/part1
挂载:

mkdir /opt
mount -t ext3 /dev/scsi/host0/bus0/target0/lun0/part1 /opt
开机自动挂载U盘,建立 /etc/init.d/optware 文件。这种太复杂,略过。

可以通过设置 /etc/fstab 来自动挂载,先启用fstab:

# uci set fstab.@mount[0].enabled=1
# uci set fstab.@mount[0].fstype=ext3
# uci set fstab.@mount[0].device=/dev/mmcblk0p1
# uci set fstab.@mount[0].target=/mnt/mmc
# uci set fstab.@mount[0].options=rw,sync,noatime
# uci commit fstab
# /etc/init.d/fstab restart
经测试来看不管用。

修改 /etc/preinit 也不管用。

修改 /etc/config/fstab 也不管用。

10   故障解决
11   我的归纳
刷firmware时可以用web界面升级,扩展名必须由.trx改成.bin。

刷完以后就可以直接进telnet来进行配置了。主要顺序如下:

1.修改交换机端口
2.修改路由器的IP地址以及内网网段
3.修改无线AP的配置
4.修改PPPoE的配置
5.重启路由器
这时应该就可以上网了,默认情况下对内网的DHCP是打开的,这个不用担心。

这时可以进入WEB管理界面看看,注意立即修改自己的管理密码。

修改管理密码以后telnet就无法使用了,但是可以使用ssh了。

通过nvram修改支持64MB内存。

我尝试在debian etch上格式化优盘来用,不过接到路由上提示错误。于是尝试安装OpenWrt里面附带的磁盘管理工具 e2fsprogs ,附加安装了另外3个软件包 libblkid 、 libext2fs 、 libuuid 。如果以后控件不够用了可以再删除掉。

安装完 kmod-usb-ohci 、 kmod-usb-storage 、 kmod-fs-ext3 这3个模块以后 /jffs 分区已经使用600KB了,剩余1.1MB。

修改使得软件安装到U盘,修改 /etc/opkg.conf

dest usb /mnt/usb
option force_space
#option overlay_root /jffs  #?
安装时使用:

mount /dev/scsi/host0/...../part1 /mnt/usb
opkg update
opkg -d usb install xxxxx
看来 /etc/profile 还是可用的,所以我将挂载U盘、设置bin和lib路径的工作都放到这里了。很好用。不过这个文件主要用于登录时修改东西的,所以不登录就不会执行。修改后我添加到 /etc/profile 的部分:

export PATH=$PATH:/mnt/usb/bin:/mnt/usb/usr/bin
export LD_LIBRARY_PATH:/mnt/usb/lib:/mnt/usb/usr/lib

mount /dev/scsi/host0/bus0/target0/lun0/part1 /mnt/usb
sleep 1
svnserve -d -r /mnt/usb/svnroot --listen-host=0.0.0.0 --listen-port=3690
添加动态域名3322的支持:

先建立文件 /etc/config/ddns ,这样就可以用uci体系进行配置了:

config 3322
    option user     username:password
    option server   www.3322.org
    option name     myname.3322.org
建立文件 /etc/hotplug.d/iface/30-update3322 ,并且可执行,内容如下:

# cat /etc/hotplug.d/iface/30-update3322
NAME=wget
CONFIG=ddns
COMMAND=/usr/bin/$NAME

[ "$ACTION" = "ifup" -a "$INTERFACE" = "wan" ] && {
       [ -x $COMMAND ] && [ -r /etc/config/$CONFIG ] && {
            . /etc/functions.sh
            config_load ddns
            ${COMMAND} -q -O - /
            "http://`config_get cfg1 user`@`config_get cfg1 server`/dyndns/update?system=dyndns&hostname=`config_get cfg1 name`" 2>&1| logger -t $NAME
        } &
}
这个脚本方式失败,但是后来发现opkg源里面有 ez-ipupdate ,也就是3322使用的IP更新客户端。

自动挂载U盘的问题在于启动服务时的顺序,可以看到如下 /etc/rc.d/S20fstab 是在 /etc/rc.d/S39usb 之后的,所以usb尚未开始使用就执行fstab当然不会挂载成功。只要建立新的符号链接即可,注意只要放在usb之后即可,不要与已有的冲突:

cd /etc/rc.d
ln -s ../init.d/fstab S42fstab
这时修改 /etc/config/fstab 中的U盘挂载就有效了。

安装ez-ipupdate以后,手动更新IP地址:

ez-ipupdate -s www.3322.org -u zerologos:zlogos
如上也是不能用的,因为ez-ipupdate最近宣布不支持3322(qdns)了。

更新自身IP可以使用3322.org的URL参数来完成,格式如下:

URL=http://<username>:<password>@members.3322.org/dyndns/update?system=dyndns&hostname=<domain>&wildcard=off
然后调用wget命令来完成:

wget -q -O - $URL
可以将如上命令写入一个脚本,然后建立脚本 /etc/hotplug.d/qdns_update.sh 该脚本用于动态管理网络接口的改变,内容如下:

sh /root/qdns_update.sh >> /mnt/usb/qdns_update.log 2>&1
这样即可,重启也无妨了。

对于在U盘上安装的软件,启动服务时注意设置好 $PATH 和 $LD_LIBRARY_PATH ,可以考虑在 /etc/init.d 目录下的启动脚本中,各个函数前加上如下语句:

source /etc/profile
当然前提是你已经在 /etc/profile 中加入了合适的环境变量定义了。

需要小心的是无论是使用ssh从哪个方向拷贝文件,都回导致OpenWrt的内存使用率急剧上升。尤其是写入到由OpenWrt管理的存储时,当内存用光时,拷贝进程会停止响应。强行结束就会导致ext3文件系统的出错,而且再次挂载也会失败。

开启远程登录-防火墙配置

开启一个指定端口到路由的连接(ssh的例子):

WAN=$(nvram get wan_ifname)
LAN=$(nvram get lan_ifname)
iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 22 -j ACCEPT
iptables -A input_rule -i $WAN -p tcp --dport 22 -j ACCEPT
疑似端口转发,不确保可以工作:

iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 22 -j NAT --to 192.168.1.50
iptables        -A forwarding_rule -i $WAN -p tcp --dport 22 -d 192.168.1.50 -j ACCEPT
未测试的指定源地址的防火墙通过规则:

iptables -s <IP> -t nat -A prerouting_wan -p tcp -dport 22 -j ACCEPT
iptables -s <IP> -A input_wan -p tcp -dport 22 -j ACCEPT
iptables -s <IP> -t nat -A prerouting_wan -p tcp -dport 1080 -j DNAT -to 192.168.0.1:80
iptables -s <IP> -A input_wan -p tcp -dport 80 -j ACCEPT
发表于 @ 2010年07月22日 12:39:00 | 评论( 0 ) | 编辑| 举报| 收藏

旧一篇:手动编译LUCI 到 openwrt中 | 新一篇:无线破解攻击工具Aircrack-ng使用详解
-
查看最新精华文章 请访问博客首页相关文章发表评论表 情:          评论内容: 用 户 名:登录 注册 匿名评论 匿名用户验 证 码:  重新获得验证码
  专区推荐内容【教程】游戏技巧特效处理
Qt开发者社区精彩全新呈现!
Firefox 4在meego上成功安装
IDF2011:多图详解MeeGo 3月后正式发布
PayPal助力移动支付应用
Android应用换电视,前30名有效!
【教程】笔记本安装MeeGo
微软BI解决方案开发简介
如何用Qt设置桌面背景
下载Windows Phone 中文培训包
下载 Windows Phone 开发工具
全新Windows Phone 开发中心
VS2010 SharePoint 入门
【免费下载】WebMatrix建站工具
AIX 专区有奖话题讨论
4.21日Adobe企业RIA开发者研讨会
MeeGo中文社区全新呈现
用C#实现HTTP协议下的多线程文件传输
【实战】搭建Meego Tablet开发测试平台
AppUp Center为更多程序员创造机会
【源码分享】一个多线程下载文件的程序
轻松漫画聊快速构建网站
如何创建一个简单的Qt应用程序
【赢取旧金山之旅】2011线程挑战赛
【图】爱上NOOK COLOR的5个理由
IPAD&amp;NOOK COLOR屏幕对比多图
【教程】AppUp 进阶基础篇
Nokia CEO:下一步会与谁合作?
点评三星Smart TV智能电视
太震撼了!首次参加IDF有感
【教程】基于VC色温图效果实现
<<>> 热门招聘职位 【更多】【欢网科技】诚聘系统架构师、需求分析师、开发工程师
【酷狗音乐】诚聘VC、服务端开发工程师等职位
【法国电信】诚聘研发类人才
【飞漫公司】诚聘C/C++研发工程师、软件测试等!
【文明盛世】诚聘百万年薪高级程序员
【法国电信】诚聘研发类人才
【上海电科智能】高新诚聘JAVA和C#等软件工程师
【仙掌软件】高新诚聘java、android、iPhone软件工程师等职位,期待您的加入!
【国科环宇公司】招聘VC++软件工程师4名,嵌入式开发工程师1名
【西门子电子装配系统有限公司】诚聘软件产品经理
【完美世界】(原完美时空)诚聘各类游戏领域人才
【苏州迈科网络】诚聘Linux&C研发/产品/Java/产品/项目经理
【梦擎科技】诚聘Android ,iPhone ,C++ 通讯应用开发等IT人才
【上海智涌】高薪诚聘 C++高级工程师
【创思佳天津公司】招JAVA开发爱好者人才及天才设计师
【仟游软件2K Games China】诚聘程序员/高级程序员
【西普科技】高薪诚聘.net软件工程师、网页设计、产品经理
【海慧公司】诚聘中高级程序员
【亿阳信通】诚邀您的加盟!
【点点网】诚聘英才!!!
【Amazon】亚马逊诚聘技术专家!
【趣游北京】高薪诚聘C++高级工程师/工程师 AS3工程师
【华夏纬讯】高薪诚聘C#程序员
【航天信息股份有限公司】诚聘系统架构,需求分析、JAVA开发、C/C++开发研发岗位热招中
【欢网科技】诚聘系统架构师、需求分析师、开发工程师
【酷狗音乐】诚聘VC、服务端开发工程师等职位
【法国电信】诚聘研发类人才
【飞漫公司】诚聘C/C++研发工程师、软件测试等!
【文明盛世】诚聘百万年薪高级程序员
【法国电信】诚聘研发类人才
【上海电科智能】高新诚聘JAVA和C#等软件工程师
【仙掌软件】高新诚聘java、android、iPhone软件工程师等职位,期待您的加入!
【国科环宇公司】招聘VC++软件工程师4名,嵌入式开发工程师1名
【西门子电子装配系统有限公司】诚聘软件产品经理
【完美世界】(原完美时空)诚聘各类游戏领域人才
【苏州迈科网络】诚聘Linux&C研发/产品/Java/产品/项目经理
【梦擎科技】诚聘Android ,iPhone ,C++ 通讯应用开发等IT人才
【上海智涌】高薪诚聘 C++高级工程师
【创思佳天津公司】招JAVA开发爱好者人才及天才设计师
【仟游软件2K Games China】诚聘程序员/高级程序员
【西普科技】高薪诚聘.net软件工程师、网页设计、产品经理
【海慧公司】诚聘中高级程序员
【亿阳信通】诚邀您的加盟!
【点点网】诚聘英才!!!
【Amazon】亚马逊诚聘技术专家!
【趣游北京】高薪诚聘C++高级工程师/工程师 AS3工程师
【华夏纬讯】高薪诚聘C#程序员
【航天信息股份有限公司】诚聘系统架构,需求分析、JAVA开发、C/C++开发研发岗位热招中
. 公司简介|招贤纳士|广告服务|银行汇款帐号|联系方式|版权声明|法律顾问|问题报告
北京创新乐知信息技术有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
江苏乐知网络技术有限公司 提供商务支持
 Email:webmaster@csdn.net
Copyright © 1999-2011, CSDN.NET, All Rights Reserved
 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ffilman/archive/2010/07/22/5754989.aspx

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值