前言(可跳过)
博主在4月份写过一篇刷路由固件的博,当时由于硬件限制导致想法破产。路由器刷固件 | MERCURY-MW305R | 路由器实现锐捷认证
今年小米年终大促的时候入手了一个小米路由器3
手动滑稽
网传小米路由器mini是可以实现刷固件,但是小米路由器3刷固件的资料非常少。
两个路由主要参数区别如下:
可以看到M3的ROM是SLC,Mini的ROM是SPI,这个就导致了M3路由固件的难以刷。
目前搜到M3成功刷机的案例是一俄国论坛的大神自己封装的脚本刷成了华硕RT-N56U的固件。
原博客:Прошивка Xiaomi Mi WiFi router 3 в ASUS RT-N56U скриптом Vmware Padavan Prometheus
恩山博客:小米路由器3刷华硕RT-N56U固件
本篇不在商讨小米路由器3刷固件(刷机需谨慎),保持原生小米路由器系统的同时实现锐捷认证。
所需技术(你需要了解的原理)
SSH(安全外壳协议)
SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。(来自百度)
WinSCP
WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端。同时支持SCP协议。它的主要功能就是在本地与远程计算机间安全的复制文件。.winscp也可以链接其他系统,比如linux系统(来自百度)
putty
远程管理Linux系统。
mentohust
具体百度,这个知道刷固件的都清楚。
可以理解为linux上的锐捷认证。
mentohust命令参数:
路由器基本原理
路由上ROM里其实是个linux系统,固件就是升级系统。
思路
锐捷认证三大难点:
(1)静态ip
(2)口令认证
(3)绑定单网卡
这三个限制第一限制了传统路由的设置,限制了主机的一些功能(如主机无线网卡、虚拟机网络配置等)。
核心思想
所以为了突破这些限制,主要思路就是
用路由器代替电脑进行锐捷认证
实际是网络认证就是看一个设备的mac跟ip和口令,路由完全可以替代一个pc设备进行认证。
难点
那么传统路由器LAN口的三种上网方式:
(1)PPPoe拨号上网
(2)DHCP
(3)静态ip
但是锐捷需要两项同时满足条件。
解决方法
刷固件是一种,将一些功能直接继承到路由系统,即管理界面,直接设置认证就行,但是这个要求对路由构造原理还有linux机制非常清楚才可以搞定,而且路由刷成砖的几率高,详情参考前言的博客。
在路由器原生系统中写入mentohust,将路由器的网络物理信息设置成本机的网络物理信息,在pc机上远程连接到路由器linux系统使用mentohust认证即可。
步骤
升级小米路由器3开发版官方固件
声明下目前小米3开发版固件到miwifi_r3_firmware_65c8a_2.21.166.bin
但是SSH权限开启的目前确定的开发版本是miwifi_r3_all_55ac7_2.11.20.bin
官方下载地址MiWiFi下载
设置路由
初始化路由
登录路由后台
调节路由LAN口上网方式为静态ip,填写校园网信息
设置本机ip自动获取
开启SSH权限
用浏览器登陆小米路由器后台
地址栏一般是这样:
http://192.168.31.1/cgi-bin/luci/;stok=[你的stok]/web/home#router
改成如下并回车:
http://192.168.31.1/cgi-bin/luci/;stok=[你的stok]/api/xqnetwork/set_wifi_ap?ssid=tianbao&encryption=NONE&enctype=NONE&channel=1%3Bnvram%20set%20ssh%5Fen%3D1%3B%20nvram%20commit
继续:
http://192.168.31.1/cgi-bin/luci/;stok=[你的stok]/api/xqnetwork/set_wifi_ap?ssid=tianbao&encryption=NONE&enctype=NONE&channel=1%3Bsed%20%2Di%20%22%3Ax%3AN%3As%2Fif%20%5C%5B%2E%2A%5C%3B%20then%5Cn%2E%2Areturn%200%5Cn%2E%2Afi%2F%23tb%2F%3Bb%20x%22%20%2Fetc%2Finit.d%2Fdropbear
继续:
http://192.168.31.1/cgi-bin/luci/;stok=[你的stok]/api/xqnetwork/set_wifi_ap?ssid=tianbao&encryption=NONE&enctype=NONE&channel=1%3B%2Fetc%2Finit.d%2Fdropbear%20start
继续:
http://192.168.31.1/cgi-bin/luci/;stok=[你的stok]/api/xqsystem/set_name_password?oldPwd=[你当前的后台管理密码]&newPwd=[新的后台管理密码]
每次执行代码请等待执行完成后再进行下一次操作
前三次代码执行后出现
“{"msg":"未能连接到指定WiFi(Probe timeout)","code":1616}”
最后一次代码出现
{"code":0}”
代表获取SSH成功
新的后台管理密码同样为ssh远程的root用户密码
写入mentohust
使用WinSCP登入小米的linux
将mentohust上传至/etc目录下
设置命令进行认证
打开putty登入小米路由器linux系统
用户名root,密码为新设置的密码
输入命令进行登录即可
获取权限命令
chmod a+x /etc/mentohust
登录命令
/etc/mentohust -u[用户名] -p[密码] -neth0.2 -i[ip] -g[网关] -m[子网掩码] -s[DNS] -b1 -w
这个时候其实就能上网了
路由设置开机自动认证
WinSCP写入sh文件用于保存命令
内容即为登录命令
putty获取权限命令
chmod a+x /etc/mentohust.sh
使用WinSCP工具打开etc目录下的profile文件(鼠标双击就行),在末尾加入下面的代码保存、关闭。
/etc/mentohust.sh
使用WinSCP工具打开etc目录下的rc.local文件,在exit 0前面加入下面四行代码。你上面参数怎么设置的,在这里就怎么设置,你上面的参数改了,这里一定改过来!
chmod a+x /etc/mentohust
chmod a+x /etc/mentohust.sh
/etc/mentohust -u[用户名] -p[密码] -neth0.2 -i[ip] -g[网关] -m[子网掩码] -s[DNS] -b1 -w
/etc/mentohust.sh
路由每次开机就可以自动认证了
细节强调
本机网络信息即为校园网注册信息,包括:ip地址、子网掩码、默认网关、首先DNS地址、备用DNS地址、MAC地址
(1)路由器设置为静态ip,mac地址设置为本机mac。
在windows 的cmd窗口输入
ipconfig /all
可以显示本机的网络配置
(2)本机ip设置为自动获取。
(3)传统路由器后台管理地址为192.168.1.1,小米路由器的后台管理地址为192.168.31.1。
(4)所需工具全部在github上,地址:所需工具。
(5)密码长度过短不能通过验证,导致无法使用putty或WinSCP。
(6)输入密码认证的时候校园网网线要在Lan口上插入。
结尾
保证原生的小米路由,校园网连接。