一个小型的无线路由器 Linux 系统OpenWRTWord文档下载推荐.docx
《一个小型的无线路由器 Linux 系统OpenWRTWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《一个小型的无线路由器 Linux 系统OpenWRTWord文档下载推荐.docx(11页珍藏版)》请在冰豆网上搜索。
注:
转贴时请保持文章的完整性.
在安装OpenWrt之前,首先你要知道你所使用的无线路由器OpenWrt是否支持,在OpenWrt的网页上提供了一个路由器列表,地址是:
//wiki.openwrt.org/TableOfHardware。
当中最多人使用的是LinksysWRT54G/GS和ASUSWL-500G,相关的文档也较多,Linksys在前面已经介绍过,我在这里不再重复了,其次是ASUSWL-500G,原因是它在市面容易找到,而且支持USB,即使价钱比一般的无线路由器贵1百多元,也相当值得,有了USB,你可以接上一个掫像头,移动盘,硬盘和打印机等设备。
接下来我会说明OpenWrt在WRT54G上的安装过程。
首先,到OpenWrt下载Firmware,地址是:
//downloads.openwrt.org/whiterussian/rc4/bin/
OpenWrt提供很多版本的Firmware下载,例如openwrt-brcm-2.4-jffs2-4MB.trx,其中brcm是通用版本,如果你ASUS的路由器就属于这类;
2.4是所使用的Kernel版本;
jffs2是文件系统,文件系统有2种,jffs2是可读写的,没有压缩,文件较大,squashfs是只读的,由于是压缩文件系统,这意味着在相同大小的FlashRom你可以安装更多软件;
4MB是FlashRom大小,这根据你使用的路由器版本而定,请参考刚才的路由器列表。
下面是现时OpenWrt提供的Firmware:
[]openwrt-brcm-2.4-jffs2-4MB.trx14-Sep-200519:
212.1M
[]openwrt-brcm-2.4-jffs2-8MB.trx14-Sep-200519:
[]openwrt-brcm-2.4-squashfs.trx14-Sep-200519:
211.5M
[]openwrt-motorola-jffs2-4MB.bin14-Sep-200519:
[]openwrt-motorola-jffs2-8MB.bin14-Sep-200519:
[]openwrt-motorola-squashfs.bin14-Sep-200519:
[]openwrt-wrt54g-jffs2.bin14-Sep-200519:
[]openwrt-wrt54g-squashfs.bin14-Sep-200519:
[]openwrt-wrt54gs-jffs2.bin14-Sep-200519:
[]openwrt-wrt54gs-squashfs.bin14-Sep-200519:
[]openwrt-wrt54gs_v4-jffs2.bin14-Sep-200519:
[]openwrt-wrt54gs_v4-squashfs.bin14-Sep-200519:
我用的是WRT54Gv2.2版,所以我下载了openwrt-wrt54gs-jffs2.bin,有了这文件后,我可以开始设定我的路由器了。
WRT54G默认的IP是192.168.1.1,在接上你的电脑之前,你要更改你电脑的网络设定,把你电脑改为固定IP,IP是192.168.1.xxx,掩码是255.255.255.0。
然后用网络线把你的电脑和WRT54G其中一个LAN接口连起来,这时候你可以在DOSPROMPT中输入“ping192.168.1.1”这命令,如果有回应的话就证明连线没有问题,如果出现“RequestTimeOut”,请检查一下你的防火墙和网线有没有问题(不要忘了为WRT54G接上电源)。
安装OpenWrt有几种方法,在不拆开路由器的情况下,最简单的方法是利用TFTP软件,把整个OpenWrtFirmware更新到WRT54G的FlashRom里,
现在请打开你的浏览器,在网址一栏输入“http:
//192.168.1.1”,这时候应该会出现一个登入画面,用户和密码都是“admin”,如果你的路由器是新买回来的话,请先把WAN设定好,你可以随便给一个固定IP,但不要设定DHCP,因为如果WAN接口没有连线而且没有IP的话,接下来我们的PING工具将无法使用,我们会利用“PING”工具的一个小BUG,更改[/url]WRT54G的BOOTWAIT设定,让我们可以把Firmware上传到TFTP服务器。
操作如下:
1.打开ping工具,“administration”-->
“diagnostics”-->
“Ping”,又或者在网址一栏输入“192.168.1.1/ping.asp”
2.在“IPAddress”一栏中,顺序输入下面4行指令,每输入一行就按一下“PING”按钮:
;
cp${IFS}*/*/nvram${IFS}/tmp/n
*/n${IFS}set${IFS}boot_wait=on
*/n${IFS}commit
*/n${IFS}show>
tmp/ping.log
当最后一行输入后,你会看到一堆文字,如果你看到其中一行是“boot_wait=on”的话,你可以继续下一步了。
3.把你的WRT54G电源拔出来,然后准备好刚才的Firmware,在Windows的DOSPROMPT,输入这条命令,但不要按“ENTER”:
tftp-i192.168.1.1PUTC:
\openwrt-wrt54gs-jffs2.bin
*这里,我把openwrt-wrt54gs-jffs2.bin放在C:
\,如果你放在别的位置,请按你的情况更改
4.一边接上WRT54G的电源,同时另一边按“ENTER”,如果成功的话,你会看见WRT54G上的DMZ灯不停闪动,而且画面会出现类似下面的讯息:
Transfersuccessful:
1537024bytesin6seconds,256170bytes/s
5.等待2-3分钟后,DMZ灯会停止闪动,这时执行“telnet192.168.1.1”,如果出现OpenWrt的欢迎画面,代表你安装成功了。
Trying192.168.1.1...
Connectedto192.168.1.1.
Escapecharacteris'
^]'
.
BusyBoxv1.00(2004.12.24-03:
19+0000)Built-inshell(ash)
Enter'
help'
foralistofbuilt-incommands.
_________________
||.-----.-----.-----.||||.----.||_
|-||_|-__|||||||_||_|
|_______||__|_____|__|__||________||__||____|
|__|WIRELESSFREEDOM
root@OpenWrt:
/#
NVRAM全名是Non-VolatileRam,在OpenWrt里是用了FlashRom最后的64K区块,用来储存一些环境参数,OpenWrt通过这些参数来配置网络,DHCP,DNS和记载硬件版本等。
常用的nvram指令有以下4种:
1.nvramshow
列出NVRAM内所有参数,我们亦可以用grep命令来抽取部份资讯,例如
nvramshow|greplan_
这命令列出了所以用lan_开头的参数,结果如下:
lan_gateway=192.168.1.254
dr_lan_rx=0
lan_netmask=255.255.255.0
lan_lease=86400
lan_stp=1
lan_hwaddr=00:
12:
17:
E1:
56:
F5
lan_dns=211.152.179.7202.96.128.86
lan_ifnames=vlan0eth1
size:
12567bytes(20201left)
lan_ipaddr=192.168.1.1
lan_proto=static
lan_ifname=br0
lan_wins=
lan_hwnames=
2.nvramset参数=数值
用来添加或修改一些参数,例如我想把LAN的IP由192.168.1.1改为192.168.1.2,可执行:
nvramsetlan_ipaddr=192.168.1.2
nvramcommit
reboot
第1行是修改IP地址,第2行是保存,第3行是重新启动OpenWrt,因为更改IP地址后要重启才能生效。
3.nvramunset参数
用来删除一些参数,不过这个功能很少用到,因为NVRAM的64K容量足够保存大量参数,大部份人都赖得去删。
例如我想删除“dr_lan_rx=0”这个参数,请执行:
nvramunsetdr_lan_rx
4.nvramcommit
当你对NVRAM做了一大堆修改后,你需要把这些修改保存起来,否则你的路由器RESET后,这些修改便没有了,和上面一样,这时你要执行:
1.WRT54G的网络概况
下面是WRT54G的内部结构示意图:
WRT54G由包括LAN,WAN,WIFI等3部份组成,相等于图中的vlan0,vlan1,eth0。
//www.eosp.org/wp-content/photo...chitecture.png
当你安装好OpenWrt后,NVRAM里的默认配置是这样的:
lan_ifnames=”vlan0eth1”
wan_ifname=vlan1
wan_proto=dhcp
第1项lan_ifname=br0是指LAN的网络介面名称;
第2项lan_ifnames=”vlan0eth1”是指实际上LAN的真正网络介面,这里包括vlan0(Port1-4)和eth1(无线网卡接口);
第3项lan_proto=static是指LAN用固定IP方式;
第4项lan_ipaddr=192.168.1.1指定了LAN的IP是192.168.1.1;
第5项lan_netmask=255.255.255.0指定了LAN的子网络掩码;
第6项wan_ifname=vlan1指定了WAN的网络为vlan1(Port0);
第7项wan_proto=dhcp指定了WAN的网络方式为DHCP;
2.配置Lan网络参数
假设我想修改路由器的TCP/IP设定为:
IP:
192.168.0.1
掩码:
255.255.255.0
网关:
192.168.0.254
DNS1:
DNS2:
202.14.67.4
并打开DHCP服务,IP范围由192.168.0.100至192.168.0.150;
可以执行以下命令:
nvramsetlan_proto=static
nvramsetlan_ipaddr=192.168.0.1
nvramsetlan_netmask=255.255.255.0
nvramsetlan_gateway=192.168.0.254
nvramsetlan_dns=’192.168.0.254202.14.67.4’
nvramsetdhcp_start=100
nvramsetdhcp_num=50
第1项nvramsetlan_proto=static是指LAN的网络方式为固定IP
第2项nvramsetlan_ipaddr=192.168.0.1是指定LAN的IP地址为192.168.0.1
第3项nvramsetlan_netmask=255.255.255.0是指定LAN的子网络掩码为255.255.255.0
第4项nvramsetlan_gateway=192.168.0.254是指定LAN的网关为192.168.0.254
第5项nvramsetlan_dns=’192.168.0.254202.14.67.4’是指定LAN使的DNS服务器,由于DNS服务器有2个,所以用空格来分开。
第6项nvramsetdhcp_start=100是指DHCP服务器从192.168.0.100开始派发IP
第7项nvramsetdhcp_num=50是指DHCP从192.168.0.100开始派发到192.168.0.150(100+50)为止。
3.设定WAN
一般常见的上网方式有3种:
DHCP,PPPOE拨号上网及STATICIP(固定IP)
2.1DHCP
DHCP很简单,你只需告诉路由器用DHCP来上网,它便会替你自动取得IP,网络掩码,网关,DNS等资料
nvramsetwan_proto=dhcp
2.2固定IP
很多商用宽带都是使用固定IP,ISP会提供IP地址(第2项),子网络掩码(第3项),网关(第4项)及DNS(第5项)资料,DNS如果超过一个的话用空格分开。
nvramsetwan_proto=static
nvramsetwan_ipaddr=218.103.124.24
nvramsetwan_netmask=255.255.255.252
nvramsetwan_gateway=218.103.124.23
nvramsetwan_dns=’210.80.60.1210.80.60.2’
2.3PPPOE
PPPOE在家用宽带是很常见的,ISP会提供用户名及密码,你只需把下面第5和第6项换成相应的用户名及密码就可以用PPPOE上网了。
nvramsetwan_ifname=ppp0
nvramsetwan_proto=pppoe
nvramsetppp_mtu=1492
nvramsetpppoe_ifname=vlan1
nvramsetppp_username=your_isp_login
nvramsetppp_passwd=your_isp_password
第1项nvramsetwan_ifname=ppp0是指WAN使用ppp0网络介面来拨号上网
第2项nvramsetwan_proto=pppoe是指WAN使用PPPOE的方式上网
第3项nvramsetppp_mtu=1492指定MTU为1492
第4项nvramsetpppoe_ifname=vlan1指PPPOE拨号的介面是vlan1
第5项nvramsetppp_username=your_isp_login指定PPPOE的用户名是your_isp_login
第6项nvramsetppp_passwd=your_isp_password指定了PPPOE的密码是your_isp_password
4.配置无线网络
nvramsetwl0_gmode=
nvramsetwl0_ssid=
nvramsetwl0_channel=
nvramsetwl0_closed=
wifiup
关闭WEP和WPA
nvramsetwl0_wep=disabled
nvramsetwl0_akm=open
开启WEP
nvramsetwl0_wep=
nvramsetwl0_wep_bit=
nvramsetwl0_key=
nvramsetwl0_key1=
nvramsetwl0_key2=
nvramsetwl0_key3=
nvramsetwl0_key4=
nvramsetsecurity_mode_last=wep
ifdownwifi
ifupwifi
WPA
nvramunsetwl0_auth_mode
nvramsetwl0_akm=psk
nvramsetwl0_crypto=
nvramsetwl0_wpa_psk=
nvramsetwl0_radius_key=
nvramsetwl0_radius_ipaddr=
nvramsetwl0_radius_port=
nvramsetsecurity_mode_last=wpa
无线网络–MACFilter
nvramsetwl0_macmode=allow
nvramsetwl0_mac_list=
nvramsetwl0_mac_deny=
5.加强OpenWrt的安全性
我认为没有密码和使用Telnet是不安全的,OpenWrt在设定密码后会把Telnet关闭,改用SSH服务
passwd
ipkg是OpenWrt内的一个软件安装管理工具,在OpenWrt内输入
root@Linksys:
~#ipkg
你会得到ipkg的说明和帮助,接下来我会说明ipkg常用的几个命令:
1.ipkgupdate
ipkg会到http:
//downloads.openwrt.org/whiterussian/packages/下载并更新最新的软件包列表(这个列表的位置在/etc/ipkg.conf指定):
~#ipkgupdate
Downloadinghttp:
//downloads.openwrt.org/whiteru...kages/Packages
Updatedlistofavailablepackagesin/usr/lib/ipkg/lists/whiterussian
//downloads.openwrt.org/whiteru...-free/Packages
Updatedlistofavailablepackagesin/usr/lib/ipkg/lists/non-free
Successfullyterminated.
2.ipkglist
在更新之后,我们可以用ipkglist这命令查看一下有什么软件包可供安装,这里我会列出部份结果:
~#ipkglist
aiccu–2005.01.31-1–SixXSAutomaticIPv6ConnectivityClientUtility
arptables–0.0.3-1–ARPfirewallingsoftware
arpwatch–2.1a11-1–Ethernetmonitorprogramforkeepingtrackofethernet/ipaddresspairings
asterisk–1.0.7-1–AnopensourcePBX
...
3.ipkginstall
安装软件包,有2种方法,例如我想安装OpenSSH的SFTP服务器(注1),方便我以后上传文件到OpenWrt,我可以执行ipkglist或到OpenWrt的软件包网址取得软件SFTP服务器的资料:
Package:
openssh-sftp-server
Version:
4.0p1-1
Depends:
zlib,libopenssl
Section:
net
Architecture:
mipsel
Maintainer:
bugs@openwrt.org
MD5Sum:
145c72f82f2404b991a96bf5f3ef2262
Size:
14086
Filename:
openssh-sftp-server_4.0p1-1_mipsel.ipk
Source:
buildrootinternal
Description:
OpenSSHSFTPserver
之后我可以选择第1个方法用软件包名来安装,这方法会自动把软件包下载并安装:
ipkginstallopenssh-sftp-server
或者选择第2个方法从网站把安装包下载到路由器上,然后输入文件名安装:
ipkginstallopenssh-sftp-server_4.0p1-1_mipsel.ipk
4.ipkglist_inst