OpenWrt笔记

OpenWrt笔记
OpenWrt笔记

OpenWrt笔记

目录

? 1 简介

? 2 参考文献

? 3 OpenWrt介绍

o 3.1 NVRAM操作

? 4 准备工作

? 5 关于Belkin 7231-4P

? 6 内核配置与编译

?7 安装

o7.1 清空nvram

o7.2 安装firmware

o7.3 TFTP方式安装

o7.4 MTD方式安装

o7.5 对改装的路由恢复64MB内存设置

o7.6 7231-4P的WEB安装OpenWrt-kamikaze-8.09.1

?8 后期配置

o8.1 配置MAC地址,未确定版本

o8.2 设置路由的内网IP地址

o8.3 无线网络配置

o8.4 PPPoE上网配置

o8.5 简单的无线中继配置

o8.6 修改路由器交换端口

?9 软件与模块安装

o9.1 安装USB设备

?10 故障解决

?11 我的归纳

1 简介

我希望给自己的无线路由改造一下用OpenWrt,并且开放svn服务器,还有其他很多玩法。所以同时看一些网上的帖子吧。

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

2 参考文献

tsend time的博客:https://www.360docs.net/doc/bd17927710.html,/u1/38213/:

1.[r]DD-WRT初次接触:https://www.360docs.net/doc/bd17927710.html,/u1/38213/showart_1889929.html

2.[r]OpenWrt-1.安装手记:https://www.360docs.net/doc/bd17927710.html,/u1/38213/showart_1890101.html

3.[u]OpenWrt FAQ-入门级别的中文帮助:

https://www.360docs.net/doc/bd17927710.html,/u1/38213/showart_1890319.html

4.[r]OpenWrt NVRAM集合:https://www.360docs.net/doc/bd17927710.html,/u1/38213/showart_1890362.html

5.[r]OpenWrt-2.投入工作:https://www.360docs.net/doc/bd17927710.html,/u1/38213/showart_1890368.html

我们都很疯的博客:

1.[r]OpenWrt固件介绍:https://www.360docs.net/doc/bd17927710.html,/349.html

2.[r]路由器升级版本选择(DD-WRT/TOMATO/...):https://www.360docs.net/doc/bd17927710.html,/228.html

3.[i]贝尔金7231-4P 64M版介绍:https://www.360docs.net/doc/bd17927710.html,/22

4.html(还有关于JTAG的内容)

4.[r]OpenWrt固件配置简介:https://www.360docs.net/doc/bd17927710.html,/398.html

ning的个人空间:

1.[u]主页:https://www.360docs.net/doc/bd17927710.html,/131820/包含一些OpenWrt编译的笔记,不过设备不

2.[r]非常方便的OpenWrt的嵌入式Linux开发环境:

https://www.360docs.net/doc/bd17927710.html,/131820/viewspace-108558.html一些没什么内容的介绍

3.[r]OpenWrt嵌入式Linux开发环境:

https://www.360docs.net/doc/bd17927710.html,/html/qianrushixitong/2009/0525/3795.html关于WRT的历史

4.[i]一个小型的无线路由器Linux系统OpenWRT:

https://www.360docs.net/doc/bd17927710.html,/Khan/archive/2006/11/23/15573.html (还有很多关于nvram设置的提示)

5.[u]OpenMoko移植OpenWrt:https://www.360docs.net/doc/bd17927710.html,/wiki/OpenWrt/zh_cn

6.[u]OpenWrt经验小结:https://www.360docs.net/doc/bd17927710.html,/openwrt (主要讲WRT54G有关的)

7.[u]什么是OpenWrt:

https://www.360docs.net/doc/bd17927710.html,/fnsoxt/blog/item/c2414f10a6fa33fcc2ce79d7.html (简介)

8.[r]OpenWrt/kamikaze/8.09.1/brcm-2.4/ 7231-4P路由器安装笔记:

https://www.360docs.net/doc/bd17927710.html,/westhack/blog/item/64cdcc455b58642fcefca361.html

9.[r]备份CFE和NVRAM的命令:

https://www.360docs.net/doc/bd17927710.html,/westhack/blog/item/5a6bfe35aedcda1690ef3976.html

10.[u]刷OpenWrt教程:

https://www.360docs.net/doc/bd17927710.html,/lnas/blog/item/15497166f835f02cab184c84.html (包含一些有用的外部链接)

11.[r]OpenWrt Remote Admin:

https://www.360docs.net/doc/bd17927710.html,/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 =

# nvram set lan_ipaddr=192.168.1.2

# nvram commit

# reboot

删除一些参数:

# nvran unset

提交修改:

# nvram commit

4 准备工作

判断硬件支持主要是看CPU型号。查看https://www.360docs.net/doc/bd17927710.html,/TableOfHardware.html。

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

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

下载合适的版本:https://www.360docs.net/doc/bd17927710.html,/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.下载固件:

2.wget https://www.360docs.net/doc/bd17927710.html,/kamikaze/...../openwrt-brcom-2.4-squashfs.trx

3.使用mtd刷新进去:

4.mtd -r write openwrt-brcm-2.4-squashfs.trx linux

7.5 对改装的路由恢复64MB内存设置

1.telnet登录: telnet 19

2.168.1.1

2.用户名root,密码admin

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

4.nvram set sdram_init=0x0008

5.nvram set sdram_config=0x0033

6.nvram set sdram_ncdl=0x0000

7.nvran commit

8.reboot

9.不要断电,等待路由重启完成

恢复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

下载

https://www.360docs.net/doc/bd17927710.html,/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 #PPPoE用户名

option 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 #设置路由器机器名

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 https://www.360docs.net/doc/bd17927710.html,

option name https://www.360docs.net/doc/bd17927710.html,

建立文件 /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 https://www.360docs.net/doc/bd17927710.html, -u zerologos:zlogos

如上也是不能用的,因为ez-ipupdate最近宣布不支持3322(qdns)了。

更新自身IP可以使用https://www.360docs.net/doc/bd17927710.html,的URL参数来完成,格式如下:

URL=http://:@https://www.360docs.net/doc/bd17927710.html,/dyndns/update?system=dyndns&hostname= &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 -t nat -A prerouting_wan -p tcp -dport 22 -j ACCEPT

iptables -s -A input_wan -p tcp -dport 22 -j ACCEPT

iptables -s -t nat -A prerouting_wan -p tcp -dport 1080 -j DNAT -to 192.168.0.1:80 iptables -s -A input_wan -p tcp -dport 80 -j ACCEPT

相关主题
相关文档
最新文档