openwrt

OpenWRT网络配置

软硬件环境

  • 硬件:Linksys WRT54G修改版,8M FLASH/64M RAM
  • OS:OpenWRT 12.09

需求

  • WAN口处于闲置状态,未连接任何网络
  • LAN IP: 192.168.44.1/24,wifi IP: 192.168.77.1/24
  • wifi与LAN这两个网段之间可互相访问
  • 在wifi口启用DHCP服务
  • wifi处于AP mode,SSID为OpenWRT,启用WPS-PSK2认证

配置

# cat /etc/config/network

config switch 'eth0'
	option enable '1'

config switch_vlan 'eth0_0'
	option device 'eth0'
	option vlan '0'
	option ports '0 1 2 3 5'

config switch_vlan 'eth0_1'
	option device 'eth0'
	option vlan '1'
	option ports '4 5'

config interface 'loopback'
	option ifname 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config interface 'lan'
	option type 'bridge'
	option ifname 'eth0.0'
	option proto 'static'
	option netmask '255.255.255.0'
	option ipaddr '192.168.44.1'

config interface 'wan'
	option ifname 'eth0.1'
	option proto 'dhcp'
	
config interface 'wifi'
	option _orig_ifname 'radio0.network1'
	option _orig_bridge 'false'
	option proto 'static'
	option ipaddr '192.168.77.1'
	option netmask '255.255.255.0'

注意:在openwrt官网中,wifi section缺乏_orig_ifname_orig_bridge这两个参数,无法正常工作。

# cat /etc/config/wireless 

config wifi-device 'radio0'
	option type 'mac80211'
	option channel '11'
	option macaddr '00:13:10:e5:bc:53'
	option hwmode '11g'
	option txpower '20'
	option country '00'

config wifi-iface
	option device 'radio0'
	option network 'wifi'
	option mode 'ap'
	option encryption 'psk2'
	option key 'secret'
	option ssid 'OpenWRT'
# cat /etc/config/dhcp

config dnsmasq
	option domainneeded '1'
	option boguspriv '1'
	option localise_queries '1'
	option rebind_protection '1'
	option rebind_localhost '1'
	option local '/lan/'
	option domain 'lan'
	option expandhosts '1'
	option authoritative '1'
	option readethers '1'
	option leasefile '/tmp/dhcp.leases'
	option resolvfile '/tmp/resolv.conf.auto'
	list server '192.168.44.254'

config dhcp 'lan'
	option interface 'lan'
	option ignore '1'

config dhcp 'wan'
	option interface 'wan'
	option ignore '1'

config dhcp 'wifi'
	option interface 'wifi'
	option start     '100'
	option limit     '20'
	option leasetime '12h'

配置完成后

# ifup wifi
# /etc/init.d/dnsmasq restart

升级OpenWRT

去年买了一款linksys wrt54g v4改造版,ROM为8M,RAM则升级到了64M,预装了tomato 1.25版。通过web界面,我把它升级到了kamikaza8.09.2,前段时间官网推出了backfire10.03.1-rc4,采用2.6.32的内核,提供更丰富的软件功能,支持的硬件类型也更多,于是我开始了曲折的升级之旅。

根据官网的文档,我执行了以下操作:

  1. 下载backfire 10.03.1-rc4镜像文件;
  2. 在kamikaza的“升级界面”upload该镜像文件,出现不支持该镜像文件的错误。

接着,我尝试将镜像文件上传到ROM中,然后通过命令行进行升级:

  1. 启动SSHd;
  2. 由于kamikaza没有SFTP,因此WinSCP无法通过SFTP将镜像文件上传至OpenWRT,于是我在笔记本上利用hfs这个小工具架设了一个web网站;
  3. 在kamikaza中,通过wget将镜像文件下载至/tmp目录下;
  4. mtd -r write openwrt-wrt54g-squashfs.bin linux

    提示:

Could not open mtd device: linux
Can't open device for writing!

接着

mtd unlock linux
mtd -r write openwrt-wrt54g-squashfs.bin linux
Bad trx header
This is not the correct file format; refusing to flash.
Please specify the correct file or use -f to force.
Image check failed.

shit,不就是升个级吗?!

于是又尝试了以下几种操作:

1.mtd -r write openwrt-wrt54g-squashfs.bin firmware

实际上并没有firmware这个分区,当时找到的文档太老了,也不了解OpenWRT的flash分区情况就病急乱投医。
{: class=“info”}

2.通过sysupgrade升级

创建/etc/sysupgrade.conf(复制wiki.openwrt.org中的/etc/sysupgrade.conf)

sysupgrade openwrt-wrt54g-squashfs.bin
Bad trx header
This is not the correct file format; refusing to flash.
Please specify the correct file or use -f to force.
Image check failed.

傻眼了,难不成经过改造后的这款Linksys无法升级?

后来忽然想到,当时是通过tomato的web页面升级到OpenWRT的,何不先将kamikaza升级至tomato,然后再从tomato升级至backfire?但又有些担心,万一变成砖头怎么办?所以google到一篇文章:Installing Tomato over OpenWRT for Linksys WRT54G,似乎DD-WRT对unbricked有一手,即便出错了还能倒退。
于是下载了一个dd-wrt.v24_mini_generic.bin,颤抖的双手终于将kamikaza升级到DD-WRT,接下来就非常顺利了,又从DD-WRT的web升级到了backfire。紧接安装所需的软件包:

opkg update
opkg install tcpdump
opkg install tmux
opkg install openvpn
opkg install iftop
opkg install iperf

至此,Linksys WRT54G又恢复了元气,甚至更为强壮。