在安装 OpenWrt 之前,首先你要知道你所使用的无线路由器 OpenWrt 是否支持,在 OpenWrt 的网页上提供了一个路由器列表,地址是:
http://wiki.openwrt.org/TableOfHardware
当中最多人使用的是 Linksys WRT54G/GS 和 ASUS WL-500G,相关的文档也较多,Linksys在前面已经介绍过,我在这里不再重复了,其次是 ASUS WL-500G, 原因是它在市面容易找到,而且支持 USB,即使价钱比一般的无线路由器贵1百多元,也相当值得,有了USB,你可以接上一个掫像头,移动盘,硬盘和打印机等设备。接下来我会说明 OpenWrt 在 WRT54G上的安装过程。
首先,到 OpenWrt 下载 Firmware,地址是:
http://downloads.openwrt.org/whiterussian/rc4/bin/
OpenWrt 提供很多版本的 Firmware下载,例如 openwrt-brcm-2.4-jffs2-4MB.trx,其中brcm是通用版本,如果你ASUS的路由器就属于这类;2.4是所使用的 Kernel版本;jffs2是文件系统,文件系统有2种,jffs2是可读写的,没有压缩,文件较大,squashfs是只读的,由于是压缩文件系统,这意味着在相同大小的 Flash Rom 你可以安装更多软件;4MB是 Flash Rom 大小,这根据你使用的路由器版本而定,请参考刚才的路由器列表。下面是现时 OpenWrt提供的 Firmware:
[ ] openwrt-brcm-2.4-jffs2-4MB.trx 14-Sep-2005 19:21 2.1M
[ ] openwrt-brcm-2.4-jffs2-8MB.trx 14-Sep-2005 19:21 2.1M
[ ] openwrt-brcm-2.4-squashfs.trx 14-Sep-2005 19:21 1.5M
[ ] openwrt-motorola-jffs2-4MB.bin 14-Sep-2005 19:21 2.1M
[ ] openwrt-motorola-jffs2-8MB.bin 14-Sep-2005 19:21 2.1M
[ ] openwrt-motorola-squashfs.bin 14-Sep-2005 19:21 1.5M
[ ] openwrt-wrt54g-jffs2.bin 14-Sep-2005 19:21 2.1M
[ ] openwrt-wrt54g-squashfs.bin 14-Sep-2005 19:21 1.5M
[ ] openwrt-wrt54gs-jffs2.bin 14-Sep-2005 19:21 2.1M
[ ] openwrt-wrt54gs-squashfs.bin 14-Sep-2005 19:21 1.5M
[ ] openwrt-wrt54gs_v4-jffs2.bin 14-Sep-2005 19:21 2.1M
[ ] openwrt-wrt54gs_v4-squashfs.bin 14-Sep-2005 19:21 1.5M
我用的是WRT54G v2.2版,所以我下载了 openwrt-wrt54gs-jffs2.bin,有了这文件后,我可以开始设定我的路由器了。WRT54G 默认的 IP 是 192.168.1.1,在接上你的电脑之前,你要更改你电脑的网络设定,把你电脑改为固定IP,IP是192.168.1.xxx,掩码是 255.255.255.0。然后用网络线把你的电脑和 WRT54G 其中一个 LAN 接口连起来,这时候你可以在 DOS PROMPT 中输入 “ping 192.168.1.1” 这命令,如果有回应的话就证明连线没有问题,如果出现 “Request Time Out” ,请检查一下你的防火墙和网线有没有问题(不要忘了为WRT54G接上电源)。
安装 OpenWrt 有几种方法,在不拆开路由器的情况下,最简单的方法是利用TFTP 软件,把整个 OpenWrt Firmware 更新到 WRT54G 的 Flash Rom里,
现在请打开你的浏览器,在网址一栏输入“http://192.168.1.1”,这时候应该会出现一个登入画面,用户和密码都是“admin”,如果你的路由器是新买回来的话,请先把WAN设定好,你可以随便给一个固定IP,但不要设定DHCP,因为如果WAN接口没有连线而且没有IP的话,接下来我们的PING工具将无法使用,我们会利用“PING”工具的一个小BUG,更改 WRT54G 的 BOOTWAIT 设定,让我们可以把 Firmware上传到TFTP服务器。操作如下:
1. 打开 ping工具,“administration” –> “diagnostics” –> “Ping”,又或者在网址一栏输入 “192.168.1.1/ping.asp”
2. 在 “IP Address”一栏中,顺序输入下面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的DOS PROMPT,输入这条命令,但不要按 “ENTER”:
tftp -i 192.168.1.1 PUT C:openwrt-wrt54gs-jffs2.bin
*这里,我把openwrt-wrt54gs-jffs2.bin放在 C: ,如果你放在别的位置,请按你的情况更改
4. 一边接上 WRT54G 的电源,同时另一边按 “ENTER” ,如果成功的话,你会看见 WRT54G上 的 DMZ 灯不停闪动,而且画面会出现类似下面的讯息:
Transfer successful: 1537024 bytes in 6 seconds, 256170 bytes/s
5. 等待 2-3 分钟后,DMZ 灯会停止闪动,这时执行 “telnet 192.168.1.1”,如果出现 OpenWrt 的欢迎画面,代表你安装成功了。
Trying 192.168.1.1... Connected to 192.168.1.1. Escape character is '^]'. BusyBox v1.00 (2004.12.24-03:19+0000) Built-in shell (ash) Enter 'help' for a list of built-in commands. _______ ________ __ | |.-----.-----.-----.| | | |.----.| |_ | - || _ | -__| || | | || _|| _| |_______|| __|_____|__|__||________||__| |____| |__| W I R E L E S S F R E E D O M root@OpenWrt:/#
QoS with HTB
root@OpenWrt:~# tc -s class show dev vlan1class htb 20:1 root rate 256000bit ceil 256000bit burst 25Kb cburst 25KbSent 684965132 bytes 2344822 pkts (dropped 0, overlimits 0)rate 42904bit 10ppslended: 1095442 borrowed: 0 giants: 0tokens: 654132 ctokens: 654132
class htb 20:10 parent 20:1 leaf 201: prio 0 rate 90000bit ceil 120000bit burst 1919b cburst 1919bSent 6295331 bytes 38615 pkts (dropped 0, overlimits 0)rate 40bitlended: 38615 borrowed: 0 giants: 0tokens: 135732 ctokens: 101799
class htb 20:20 parent 20:1 leaf 202: prio 0 rate 150000bit ceil 250000bit burst 23039b cburst 23039bSent 20433287 bytes 317150 pkts (dropped 0, overlimits 0)rate 32bitlended: 317147 borrowed: 3 giants: 0tokens: 1004535 ctokens: 602721
class htb 20:30 parent 20:1 leaf 203: prio 0 rate 100000bit ceil 200000bit burst 12799b cburst 12799bSent 54446815 bytes 484575 pkts (dropped 1653, overlimits 0)rate 2872bit 3ppslended: 476926 borrowed: 7649 giants: 0tokens: 835715 ctokens: 417858
class htb 20:40 parent 20:1 leaf 204: prio 0 rate 10000bit ceil 40000bit burst 5Kb cburst 5KbSent 603789699 bytes 1504482 pkts (dropped 841585, overlimits 0)rate 40368bit 7ppslended: 416692 borrowed: 1087790 giants: 0tokens: -2503558 ctokens: -213973
root@OpenWrt:~# tc -s class show dev br0class htb 10:1 root rate 2000Kbit ceil 2000Kbit burst 63999b cburst 63999bSent 3043092261 bytes 3550548 pkts (dropped 0, overlimits 0)rate 64744bit 13ppslended: 373065 borrowed: 0 giants: 0tokens: 208483 ctokens: 208483
class htb 10:10 parent 10:1 leaf 101: prio 0 rate 150000bit ceil 180000bit burst 1919b cburst 1919bSent 5514580 bytes 29048 pkts (dropped 0, overlimits 0)rate 32bitlended: 29048 borrowed: 0 giants: 0tokens: 79692 ctokens: 66410
class htb 10:20 parent 10:1 leaf 102: prio 0 rate 1500Kbit ceil 1900Kbit burst 50Kb cburst 57599bSent 487978257 bytes 569274 pkts (dropped 0, overlimits 0)rate 2592bit 2ppslended: 548925 borrowed: 20349 giants: 0tokens: 223242 ctokens: 198320
class htb 10:30 parent 10:1 leaf 103: prio 0 rate 1000Kbit ceil 1900Kbit burst 12799b cburst 19199bSent 491089727 bytes 517762 pkts (dropped 2027, overlimits 0)rate 24640bit 2ppslended: 431784 borrowed: 85978 giants: 0tokens: 83257 ctokens: 65895
class htb 10:40 parent 10:1 leaf 104: prio 0 rate 500000bit ceil 1000Kbit burst 6399b cburst 6399bSent 2058509697 bytes 2434464 pkts (dropped 133179, overlimits 0)rate 33688bit 8ppslended: 2167726 borrowed: 266738 giants: 0tokens: 78958 ctokens: 39479
root@OpenWrt:~# ifconfigbr0 Link encap:Ethernet HWaddr 00:12:17:FF:32:D9inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:2990352 errors:0 dropped:0 overruns:0 frame:0TX packets:3550593 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:1108142279 (1.0 GiB) TX bytes:3043099982 (2.8 GiB)
eth0 Link encap:Ethernet HWaddr 00:12:17:FF:32:D9UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1RX packets:11233394 errors:45 dropped:0 overruns:44 frame:44TX packets:5895503 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:405123862 (386.3 MiB) TX bytes:3751677516 (3.4 GiB)Interrupt:5 Base address:0x2000
eth1 Link encap:Ethernet HWaddr 00:12:17:FF:32:D9UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)Interrupt:4 Base address:0x1000
lo Link encap:Local Loopbackinet addr:127.0.0.1 Mask:255.0.0.0UP LOOPBACK RUNNING MTU:16436 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
vlan0 Link encap:Ethernet HWaddr 00:12:17:FF:32:D9UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:2990356 errors:0 dropped:0 overruns:0 frame:0TX packets:3550593 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:1120103967 (1.0 GiB) TX bytes:3057302354 (2.8 GiB)
vlan1 Link encap:Ethernet HWaddr 00:12:17:FF:32:DAinet addr:218.186.146.114 Bcast:218.186.159.255 Mask:255.255.240.0UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:8242952 errors:0 dropped:0 overruns:0 frame:0TX packets:2344910 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:3377781787 (3.1 GiB) TX bytes:694375162 (662.2 MiB)
root@OpenWrt:~# arpIP address HW type Flags HW address Mask Device192.168.1.89 0x1 0x2 00:0B:82:02:CB:F3 * br0192.168.1.127 0x1 0x2 00:02:3F:B9:EB:EE * br0192.168.1.101 0x1 0x2 00:80:48:30:D3:FC * br0192.168.1.88 0x1 0x2 00:50:8D:EF:C7:B4 * br0218.186.144.1 0x1 0x2 00:30:B8:C1:30:B0 * vlan1192.168.1.136 0x1 0x2 00:0F:EA:30:5D:73 * br0
root@OpenWrt:~# logread | tailOct 27 23:00:01 (none) kern.notice crond[503]: USER root pid 31029 cmd /etc/init.d/S80rrdtool >> /tmp/log/rrdtool.log 2>&1Oct 27 23:05:01 (none) kern.notice crond[503]: USER root pid 31106 cmd /etc/init.d/S80rrdtool >> /tmp/log/rrdtool.log 2>&1Oct 27 23:10:01 (none) kern.notice crond[503]: USER root pid 31174 cmd /etc/init.d/S80rrdtool >> /tmp/log/rrdtool.log 2>&1Oct 27 23:10:04 (none) syslog.info — MARK –Oct 27 23:15:01 (none) kern.notice crond[503]: USER root pid 31289 cmd /etc/init.d/S80rrdtool >> /tmp/log/rrdtool.log 2>&1Oct 27 23:20:01 (none) kern.notice crond[503]: USER root pid 31357 cmd /etc/init.d/S80rrdtool >> /tmp/log/rrdtool.log 2>&1Oct 27 23:25:01 (none) kern.notice crond[503]: USER root pid 31429 cmd /etc/init.d/S80rrdtool >> /tmp/log/rrdtool.log 2>&1Oct 27 23:25:08 (none) kern.info dropbear[31497]: Child connection from 192.168.1.88:1270Oct 27 23:25:11 (none) kern.notice dropbear[31497]: password auth succeeded for ‘root’ from 192.168.1.88:1270Oct 27 23:29:01 (none) kern.notice crond[503]: USER root pid 31521 cmd /usr/sbin/ez-ipupdate -c /etc/ez-ipupdate.conf >> /tmp/log/dyndns.log 2>&1
讚讚
SSH登陆root@OpenWrt:~# uptime23:27:20 up 1 day, 10:57, load average: 0.01, 0.03, 0.00
root@OpenWrt:~# freetotal used free shared buffersMem: 14376 12320 2056 0 0Swap: 0 0 0Total: 14376 12320 2056
root@OpenWrt:~# df -hFilesystem Size Used Available Use% Mounted on/dev/root 3.2M 2.6M 572.0k 82% /none 7.0M 156.0k 6.9M 2% /tmp
root@OpenWrt:~# netstat-nat -n | moreProto NATed Address Foreign Address Statetcp 192.168.1.101:4146 221.194.51.143:7093 ESTABLISHEDtcp 192.168.1.101:1964 211.87.206.183:23759 ESTABLISHEDtcp 192.168.1.101:2008 201.242.45.97:15740 ESTABLISHED……
root@OpenWrt:~# netstat-nat -n | grep -c .125
root@OpenWrt:~# iptables -L -nChain INPUT (policy DROP)target prot opt source destinationDROP all — 0.0.0.0/0 0.0.0.0/0 state INVALIDACCEPT all — 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHEDDROP tcp — 0.0.0.0/0 0.0.0.0/0 tcp option=!2 flags:0x02/0x02input_rule all — 0.0.0.0/0 0.0.0.0/0ACCEPT all — 0.0.0.0/0 0.0.0.0/0ACCEPT icmp — 0.0.0.0/0 0.0.0.0/0ACCEPT 47 — 0.0.0.0/0 0.0.0.0/0REJECT tcp — 0.0.0.0/0 0.0.0.0/0 reject-with tcp-resetREJECT all — 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
Chain FORWARD (policy DROP)target prot opt source destinationDROP all — 0.0.0.0/0 0.0.0.0/0 state INVALIDTCPMSS tcp — 0.0.0.0/0 0.0.0.0/0 tcp flags:0x06/0x02 TCPMSS clamp to PMTUACCEPT all — 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHEDforwarding_rule all — 0.0.0.0/0 0.0.0.0/0ACCEPT all — 0.0.0.0/0 0.0.0.0/0ACCEPT all — 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy DROP)target prot opt source destinationDROP all — 0.0.0.0/0 0.0.0.0/0 state INVALIDACCEPT all — 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHEDoutput_rule all — 0.0.0.0/0 0.0.0.0/0ACCEPT all — 0.0.0.0/0 0.0.0.0/0REJECT tcp — 0.0.0.0/0 0.0.0.0/0 reject-with tcp-resetREJECT all — 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
Chain forwarding_rule (1 references)target prot opt source destinationACCEPT tcp — 0.0.0.0/0 192.168.1.88 tcp dpt:26378ACCEPT udp — 0.0.0.0/0 192.168.1.88 udp dpt:26378ACCEPT tcp — 0.0.0.0/0 192.168.1.88 tcp dpt:5900ACCEPT tcp — 0.0.0.0/0 192.168.1.89 tcp dpt:80
Chain input_rule (1 references)target prot opt source destinationDROP all — 218.234.21.151 0.0.0.0/0DROP all — 218.153.147.92 0.0.0.0/0ACCEPT tcp — 202.73.42.110 0.0.0.0/0 tcp dpt:22ACCEPT tcp — 202.73.46.142 0.0.0.0/0 tcp dpt:22ACCEPT tcp — 0.0.0.0/0 0.0.0.0/0 tcp dpts:20:21ACCEPT tcp — 0.0.0.0/0 0.0.0.0/0 tcp dpt:80ACCEPT tcp — 0.0.0.0/0 0.0.0.0/0 tcp dpt:81
Chain output_rule (1 references)target prot opt source destination
root@OpenWrt:~# iptables -t nat -L -nChain PREROUTING (policy ACCEPT)target prot opt source destinationprerouting_rule all — 0.0.0.0/0 0.0.0.0/0
Chain POSTROUTING (policy ACCEPT)target prot opt source destinationpostrouting_rule all — 0.0.0.0/0 0.0.0.0/0MASQUERADE all — 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)target prot opt source destination
Chain postrouting_rule (1 references)target prot opt source destination
Chain prerouting_rule (1 references)target prot opt source destinationDNAT tcp — 0.0.0.0/0 0.0.0.0/0 tcp dpt:26378 to:192.168.1.88DNAT udp — 0.0.0.0/0 0.0.0.0/0 udp dpt:26378 to:192.168.1.88DNAT tcp — 0.0.0.0/0 0.0.0.0/0 tcp dpt:5900 to:192.168.1.88DNAT tcp — 0.0.0.0/0 0.0.0.0/0 tcp dpt:82 to:192.168.1.89:80
讚讚