最近工作中发现openwrt存在一个回滚机制,通过luci页面对可能导致失联的配置,如更改LAN口ip、修改WIFI名称和密码等,在设置后会弹出一个30秒倒计时的窗口,需要等待30秒浏览器自动刷新后弹出一个确认框,点击后才会使新配置生效,如在等待期间关闭浏览器窗口或者刷新了,系统会认为你引入了一个错误配置,会自动回滚旧配置,从而导致想更改的新配置失效!
github中关于该机制的解释:
https://github.com/openwrt/luci/pull/1769
1、
回滚机制的流程
:页面修改配置后,点击应用,设备将新配置应用到设备,同时跳出一个30秒的轮询倒计时窗口,使用者需要连接修改后的wifi,并回到配置页面来自动确认,如果超时没有完成确认,会触发回滚机制,将配置还原,如果上面的配置页面没有关闭,会出现一个二次确认的窗口,需点击“APPLY ANYWAY”,新配置会被再次应用。
倒计时等待确认窗口:
回滚后的二次确认窗口:
2、
回滚机制的作用
:应该是防止使用者错误修改,或者修改了自己不了解的配置,导致连接失联无法正常使用。
3、
怎样才能不触发回滚
?
修改配置后,点击“SAVE & APPLY”按键,在页面弹出的“Waiting for configuration to be applied... 30s”显示的30秒轮询倒计时内,当发现wifi断开后(说明配置已生效),需要手动重新连接wifi,并回到刚才的配置应用等待页面(如果修改的是LAN地址,浏览器中需要输入修改后的Lan地址来打开页面),会显示配置被应用,这样就不会触发回滚.
4、
回滚机制的处理方法
(1)保留30秒或者缩短等待时间,让用户自己做二次确认.
(2)增加等待时间,比如120秒,或者更长,用户发现wifi断开后,重新连接wifi,并打开配置页面自动确认.
通过修改配置文件/etc/config/luci:
config internal 'apply'
option rollback '
120
'
option holdoff '4'
option timeout '5'
option display '1.5'
(3)去除强制回滚.
修改页面 feeds/luci/modules/luci-base/luasrc/view/footer.htm (系统中路径:/usr/lib/lua/luci/view/footer.htm)
- uci_apply(true);
+ uci_apply(false);
最近工作中发现openwrt存在一个回滚机制,通过luci页面对可能导致失联的配置,如更改LAN口ip、修改WIFI名称和密码等,在设置后会弹出一个30秒倒计时的窗口,需要等待30秒浏览器自动刷新后弹出一个确认框,点击后才会使新配置生效,如在等待期间关闭浏览器窗口或者刷新了,系统会认为你引入了一个错误配置,会自动回滚旧配置,从而导致想更改的新配置失效!github中关于该机制的解释...
LuCI
是
OpenWrt
上的Web管理界面,
LuCI
采用了MVC三层架构,同时其使用Lua脚本开发,所以开发
LuCI
的
配置
界面不需要编辑任何的Html代码,除非想自己单独去创建网页(View层),否则我们基本上只需要
修改
Model层就可以了。
要为
LuCI
增加一个新模块,首先需要创建两个文件,一个位于Controller(/usr/lib/lua/
luci
/
feeds/
luci
/modules/
luci
-base/luasrc/view/footer.htm,强制
修改
为不需要
回滚
,应该还有更好的方法。。。
- uci_apply(true);
+ uci_apply(false);
feeds/
luci
/modul...
AX5官方固件基于
Openwrt
18.06
Snapshot
修改
;
小米官方固件web界面使用 nginx +
修改
版
luci
提供服务。
小米固件自带uhttpd,但没有使用。
期望目标:安装原生
luci
,且不影响小米web界面。
二、 实施步骤
2.1 手动下载
ip
k,解压文件
由于小米固件已经有
修改
版
luci
,因此不能使用opkg在线安装,否则会覆盖掉。
在
Openwrt
官方源 下载如下
ip
k包,下面是列好的
luci
依赖情况(重复的已剔除)。
部分文件,仅供参考,具体使用请参照官方说明:http://
luci
.subsignal.org/api/
luci
/modules/
luci
.model.uci.html
1.batmand
config batmand general
option interface ath0
option announce
option gateway_class
option orig
- p
ip
eline.id: my-p
ip
eline_1
path.config: "/etc/path/to/p1.config"
p
ip
eline.workers: 3
- p
ip
eline.id: my-other-p
ip
eline
path.config: "/etc/different/path/p2.cfg"
queue.type: persisted
# 使用注意事项
1: 在...
初步判断是dns问题,在/etc/config/network中添加以下两行:
option gateway '192.168.1.1'
option dns '192.168.1.1'
问题解决...
说实话,
openwrt
这东西的开发我都快丢下一年时间了,但是学了很多东西,但是感觉也用不到了吧,当时很想写博客记下来,可是没有,现在再去回想有点难了,尽力吧,下面根据之前学过的过程再总结一边吧。
了解
Luci
openwrt
中的
Luci
是用来编写网页界面的,比如我们通过网关访问的路由器控制界面就是用它写的。它还有一个功能就是设置参数,比如网页上
修改
的
IP
、网关等。如果我们需要在 的网页上做一些我们自己的东西,那就得了解
Luci
的使用了。
这里主要就是要有一个 MVC 模型的概念,
Luci
通
OpenWrt
系统安全改进中所做的尝试,是为了增强用户登录的鉴权
机制
(密码输错三次就禁用用户一段时间),PAM可以实现对用户登录的控制,但是进一步操作中发现WebUI的登录并没有支持PAM,前功尽弃......
了解了一下
OpenWrt
的
luci
机制
,参见http://www.360doc.com/content/14/0312/20/1964482_360072189.shtml,简单来说,就
有关
IP
table 的相关说明请见这篇文章:
http://blog.chinaunix.net/uid-22780578-id-3346350.html
openwrt
中使用 uci 可实现对
IP
table 进行
配置
。
配置
文件位于
/etc/config/firewall1 默认
配置
config defaults
option syn_flood '1'
OpenWrt
是一个针对路由器和嵌入式设备定制的 Linux 发行版,它提供了强大的网络管理和自定义功能。
LuCI
(
Luci
Configuration Interface) 是一个用户界面框架,用于构建基于 Web 的
配置
界面,使得
OpenWrt
更易于管理和
配置
。
要在
OpenWrt
中添加
LuCI
,你需要按照以下步骤操作:
1. **安装 dependencies**:
在终端中运行 `opkg update` 和 `opkg install
luci
luci
-mod-admin-full` 来更新软件包列表并安装基础的
LuCI
套件。
2. **启用
luci
**:
在 `/etc/config/
luci
` 文件中,确保 `option enable "1"` 表示启用
LuCI
。
3. **
配置
Web 服务器**:
如果你的
OpenWrt
没有集成 web 服务器(如 uhttpd),你可能需要安装一个,例如 `opkg install uhttpd`。然后
配置
web 服务器以指向 `/var/www/html`,这是
LuCI
的默认位置。
4. **启动服务**:
使用 `/etc/init.d/<webserver> start` 启动 web 服务器,例如 `/etc/init.d/uhttpd start`。
5. **访问管理界面**:
在你的设备的 Web 浏览器中输入路由器的
IP
地址(通常是 `http://<your-router-
ip
>`)加上端口 `80` 或者 `8080`(取决于你的
配置
),你应该能看到
LuCI
登录
页面
。
6. **设置管理员账户**:
如果首次使用,可能需要创建一个管理员账户。在
LuCI
中,找到“管理”部分,然后按照向导设置初始管理员用户名和密码。