教程OpenWRT总结
更新时间:2023-10-14 09:37:01 阅读量: 综合文库 文档下载
[教程]OpenWRT总结
OpenWRT可以被描述为一个嵌入式的 Linux 发行版,(主流路由器固件有 dd-wrt,tomato,openwrt三类)而不是试图建立一个单一的、静态的系统。OpenWRT的包管理提供了一个完全可写的文件系统,从应用程序供应商提供的选择和配置,并允许您自定义的设备,以适应任何应用程序
对于开发人员,OpenWRT 是使用框架来构建应用程序,而无需建立一个完整的固件来支持;对于用户来说,这意味着其拥有完全定制的能力,可以用前所未有的方式使用该设备
由于OpenWRT是基于Linux的发行版,所以就决定了很多的Linux特性在OpenWRT上的继承性,对于路由器来说,这实在是一个极其优良的特性,意味着路由器使用者可以像使用Linux那样去使用这个固件,虽然使用方式因发行版的差距而存在区别
1、安装
OpenWRT官网:https://openwrt.org/
安装的时候要注意固件的硬件版本一定要和路由器硬件版本一致,否则会出现很多的奇葩情况,甚至直接变砖
固件下载:http://downloads.openwrt.org/
可以下载最新的barrier_breaker(14.x rc)版本,也可以选择官方稳定版本attitude_adjustment(12.09),或者是更早的backfire版本(10.x),另外在snapshot目录下还有trunk版本,选择适合自己的版本就好
固件名称的格式:
openwrt-
Example:
openwrt-ar71xx-generic-tl-wr740n-v5-squashfs-factory.bin
openwrt-ar71xx-generic-tl-wr740n-v5-jffs2-factory.bin
openwrt-ar71xx-generic-tl-wr740n-v5-squashfs-sysupgrade.bin
openwrt-ar71xx-generic-tl-wr740n-v5-jffs2-sysupgrade.bin
Firmware 常见的3种扩展名格式TRX, TRX2, BIN
还需要注意的是要分清两个文件factory和sysupgrade的区别,factory固件包含art部分,是从原厂固件升级到op用的,可以在路由器原版固件界面直接软升级,亦或是使用TTL方式刷入路由器,sysupgrade仅包含firmware部分,是已经是op的情况下升级固件用的,除非你对编程器非常了解,否则不推荐使用TTL方式刷入,升级最好的方式就是OpenWRT自带的sysupgrade功能,其次也可以使用mtd命令
当使用原版固件刷固件之后,第一次登录它只有 telnet 被启动,只有设置好root的密码后,我们才可以SSH进行操作
注意:原版固件是没有LUCI等等WEB管理界面的,所以需要文本操作
首先我们要telnet到路由器:(推荐工具:PUTTY)
#telnet 192.168.1.1
设定root密码:
#passwd
之后输入root密码,完成后SSH会自动启动,之后就可以像使用Linux那样去使用了。
2、UCI (Unified Configuration Interface)
UCI是OpenWRT的系统设置工具, 我们可以使用它设置路由器上的一切一切
所需的packages:
uci(/sbin/uci)
libuci(/lib/libuci.so )
所有设置存放在
/etc/config/xxx
常用设置文件:
/etc/config/dhcp#DHCP配置文件
/etc/config/dropbear#SSH配置文件
/etc/config/firewall#OpenWRT防火墙配置文件
/etc/config/network#网络配置文件
/etc/config/system#系统设置文件
/etc/config/timeserver#NTP配置文件
/etc/config/wireless#无线配置文件
配置文件一般格式:
package 'example'
config 'example' 'test'
option 'string' 'some value'
option 'boolean' '1'
list 'collection' 'first item'
list 'collection' 'second item'
UCI命令行使用方法:
uci
command:
commit #把修改设置写入flash, 并且应用(包括 uci 及人工修改)
show [
get #查看某个设置值 (compressed notation)
changes [config]
set
add_list
delete
revert
export [config] #导出某设置(UCI syntax)
import [config] #导入设置值
Example:
#uci set dhcp.lan.leasetime=4h
#uci set dhcp.lan.leasetime=24h
-------------------------------------
#uci get dhcp.lan.leasetime 24h
-------------------------------------
#uci show dhcp
dhcp.lan=dhcp
dhcp.lan.interface=lan
dhcp.lan.start=100
dhcp.lan.limit=150
dhcp.lan.leasetime=24h
------------------------------------
#uci changes
dhcp.lan.leasetime=1
dhcp.lan.leasetime=24h
#uci revert dhcp
#uci get dhcp.lan.leasetime
12h
#uci commit
系统现在的状态:
#uci -P /var/state show network.wan
Usage:uci -P
顺序问题:
某些设置是有次序之分的, 比如 firewall 的 rule
所以设置有另一种格式
@rule[-1] #[-1] 代表最尾
root@OpenWrt:~# uci add firewall rule
root@OpenWrt:~# uci set firewall.@rule[-1].src=wan
root@OpenWrt:~# uci set firewall.@rule[-1].target=ACCEPT
root@OpenWrt:~# uci set firewall.@rule[-1].proto=tcp
root@OpenWrt:~# uci set firewall.@rule[-1].dest_port=22
root@OpenWrt:~# uci commit firewall
root@OpenWrt:~# /etc/init.d/firewall restart
服务的开机启动:
/etc/init.d/xxx
start 立刻启动服务
enable 每次开机自动启动
3、SSH连接(Dropbear)
设置文件:
/etc/config/dropbear
----------------------------------
enable <-- on
BannerFile <-- /etc/banner
Port <-- 22
GatewayPorts <--- tunnel port
Interface <-- 0.0.0.0
RootLogin <-- default: on
RootPasswordAuth <-- default: on
SSH From Wan:
/etc/config/firewall
---------------------------------
#Allow SSH
config rule
option src wan
option proto tcp
option dest_port ssh
option target ACCEPT
4、包管理工具OPKG
OPKG可以理解为一个小型的包管理工具,具有一般包管理工具具有的主要功能。
设置文件:
/etc/opkg.conf
src/gz snapshots http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages #下載 Packages.gz
dest root /
dest ram /tmp
lists_dir ext /var/opkg-lists # /var/opkg-lists/snapshots
option overlay_root /overlay
arch all 100
# package优先次序
lock文件:
/usr/lib/opkg/lock
命令行用法:
opkg [options...] [arguments...]
update #下载可用的 package 文件(/var/opkg-lists/snapshots)
install
remove
flag
hold, noprune, user, ok, installed, unpacked
configure
upgrade
# 不建议在 SquashFS partition 上使用
download
包信息:
status [pkg|regexp]
info [pkg|regexp]
list [pkg|regexp] List available packages
list-installed List installed packages
files
search
destination for any package installation.
dest root /
dest ram /tmp
dest mnt /mnt
opkg install somepackage -d destination_name
Example:
-d ram
有用的options:
--cache
--nodeps
Example:
用 winscp 上传所需的 package 到 /tmp/package
#opkg install *.ipk
查看依賴性:
#opkg depends muninlite
muninlite depends on:
xinetd
Troubleshoot:
rm /usr/lib/opkg/lock
5、路由器初始化(FIRSTBOOT)
以下过程只适用于使用 SquashFS 的openwrt路由器
原因是squashfs 才有 failsafe mode
Step1:
把 PC 的IP地址设置为192.168.1.2(与路由器在同一网段上)
Step2:
长ping 192.168.1.1, 会看到以下情況
#ping -t 192.168.1.1
Ping 192.168.1.1:
回复自 192.168.1.101: 目的地主机无法连接。
请求超时。
回复自 192.168.1.1: 字节=32 time<1ms TTL=64
回复自 192.168.1.1: 字节=32 time<1ms TTL=64
回复自 192.168.1.1: 字节=32 time<1ms TTL=64
请求超时。
请求超时。
请求超时。
请求超时。
回复自 192.168.1.1: 字节=32 time<1ms TTL=64
回复自 192.168.1.1: 字节=32 time<1ms TTL=64
回复自 192.168.1.1: 字节=32 time<1ms TTL=64
回复自 192.168.1.1: 字节=32 time<1ms TTL=64
-----------------------------------
Step3:
在前段 4 次ping 到的期间按路由器 reset 按键,之后会看到路由器的 LED 狂闪
Step4:
当成功 ping 到路由器时,就可以telnet到路由器了
此时不需要密码即可登录路由器
Step5:
由于系统是在 Read-only file system, 所以要 mount_root 它 r/w
之后才可以重置密码
#passwd
刪除一切設定:
#mtd -r erase rootfs_data #相当于firstboot 指令 或者
#firstboot #all settings will be reseted
Step6:
#reboot -f #Force reboot (initis not running)
注意:
不在 rescuse mode 用 firstboot 是会出问题的,请不要尝试
6、系统升级
我们可以用官方工具去升級固件: sysupgrade
命令行用法:
sysupgrade [options]
options:
-f
-n do not save configuration over reflash
-v more verbose
-c 保留系统设置 #根据/lib/upgrade/keep.d来保留
base-files
firewall
base-files-essential
uhttpd
自己要保留的设置就放在 /etc/sysupgrade.conf
检查固件的完整性:
#md5sum -c md5sums
-c Check sums against list in FILEs
md5sums:
86c3f5da10a7f7350391c0fd191cd9b4
*openwrt-ar71xx-generic-tl-wr740n-v4-squashfs-sysupgrade.bin
Example:
#md5sum -c md5sums.txt
openwrt-ar71xx-generic-tl-wr740n-v4-squashfs-sysupgrade.bin: OK
#检查一次 image 的完整性再 upgrade 会避免很多问题 升級:
Example:
#sysupgrade -v openwrt-ar71xx-generic-tl-wr740n-v3-squashfs-sysupgrade.bin
Saving config files...
etc/sysctl.conf
etc/shells
etc/rc.local
etc/profile
etc/passwd
etc/inittab
etc/hosts
etc/group
etc/firewall.user
etc/dropbear/dropbear_rsa_host_key
etc/dropbear/dropbear_dss_host_key
etc/config/wireless
etc/config/timeserver
etc/config/system
etc/config/network
etc/config/firewall
etc/config/dropbear
etc/config/dhcp
Switching to ramdisk...
Performing system upgrade...
Unlocking firmware ...
Writing from
Appending jffs2 data from /tmp/sysupgrade.tgz to firmware...TRX header not found
Error fixing up TRX header
Upgrade completed
Rebooting system...
基本上是不会出现什么问题的,有时候刷一些第三方固件时会出现:
Invalid image, hardware ID mismatch, hw:07400001 image:07400003.
Image check 'platform_check_image' failed.
Error: Firmware upgrade is not implemented for this platform.
sysupgrade openwrt-ar71xx-generic-tl-wr740n-v4-squashfs-factory.bin
Firmware upgrade is not implemented for this platform.
root@OpenWrt:/tmp#
openwrt-ar71xx-generic-tl-wr740n-v4-squashfs-sysupgrade.bin
Firmware upgrade is not implemented for this platform.
sysupgrade
解決:
#mtd write openwrt-ar71xx-generic-tl-wr740n-v4-squashfs-sysupgrade.bin firmware
注意:使用mtd命令时要注意固件的写入位置,先使用cat /proc/mtd查看当前路由器的固件分区名,部分路由器可能是linux,视情况选择刷入位置
7、mtd (Memory Technology Device)
mtd 是一个类似于dd的工具,
命令行用法:
mtd [option]
command:
erase
write
查看mtd:
#cat /proc/mtd
dev: size erasesize name
mtd0: 00020000 00010000 \
mtd1: 000e5e00 00010000 \
mtd2: 002ea200 00010000 \
mtd3: 00170000 00010000 \
mtd4: 00010000 00010000 \
mtd5: 003d0000 00010000 \
配置文件:
/dev/mtdX
备份:
#dd if=/dev/mtd0 of=/tmp/boot.backup
还原:
#mtd -r write /tmp/original_firmware.bin firmware
8、LuCI
主页:http://luci.subsignal.org/trac
LuCI是OpenWRT中一个非常常用的WEB端路由器管理页面,可以让OpenWRT路由器像各大厂商路由器那样使用WEB管理界面管理路由器
安裝:
#opkg install luci
packages:
luci #Meta package,它是一大堆 depends
uhttpd, luci-mod-admin-full, luci-theme-openwrt, luci-app-firewall,
luci-proto-core, luci-proto-ppp, libiwinfo-lua
luci-ssl #https
luci-theme-openwrt
luci-i18n-*
luci-app-*
luci-app-firewall
luci-app-ddns
luci-app-ahcp
luci-app-freifunk-policyrouting
luci-app-multiwan
luci-app-ntpc
luci-app-openvpn
luci-app-qos
luci-app-statistics
luci-app-samba
luci-app-tinyproxy
luci-app-vnstat
luci-app-wol
luci-app-wshaper
luci-proto-ppp <--- PPPoE
luci-proto-pptp pptp ppp
kmod-gre
resolveip
启用:
#/etc/init.d/uhttpd enable
#/etc/init.d/uhttpd start Tips:
<-- started at every boot Hostnames:
tim-pc.lan #要配合 domain 使用
Unsaved Change:
本文出自 Server&Coding...,转载时请注明出处及相应链接。 0 OpenWRT
? [教程]CentOS6搭建PPTPVPN
[整理]OpenWRT路由器校园网IPv6大法?
发表评论
电子邮件地址不会被公开。必填项已用*标注 姓名 *
电子邮件 * 站点
正在阅读:
教程OpenWRT总结10-14
角的评价记录表06-20
公路试验用表D表10-25
NHibernate从入门到精通系列04-20
2019管理信息系统期末复习资料(原创整理精华版)09-17
的通知请修改下面的通知06-01
苏宁的发展史完整版04-07
教师创新素质与学生创新能力的培养09-09
小学班主任每周工作记录02-03
- 清真菜谱
- 我国国民经济和社会发展十二五规划纲要(全文)
- 高三物理机械振动和机械波复习2
- 浙江省公路山岭隧道机械化装备应用指导手册 doc - 图文
- 2018届高三数学文科二轮复习:专题检测(九) 导数的简单应用
- 2015年上海市公务员录用考试《行政职业能力测验》试卷(B类)
- 七年级道德与法制下册
- 大班户外游戏教案
- 病虫害预警 - 图文
- 某养鱼场为了提高经营管理水平
- 汉中市勉县尧柏余热汽机规程 10
- 烹饪试卷
- 事业单位考试公共基础知识专项分类题库训练
- 语文:第2课 走一步,再走一步 课堂导学案(人教版 七上)
- 天汉使用手册
- 人教版小学三年级数学下册教学计划
- 房地产销售管理完全操作手册122页
- 2009年评审通过具有中学高级教师专业技术资格人员名单...
- 《15秋公共关系学》作业1
- 2017最新版监理公司三标一体管理手册
- OpenWRT
- 总结
- 教程