RedmiAC2100刷写Openwrt教程
Redmi AC2100刷写Openwrt教程
前⾔
此教程的书写基于 Redmi AC2100 路由器,并不保证其他路由器可⽤。
推荐使⽤的 Host 主机为 Windows 10/11 系统,当然,Linux 也可以,不过某些地⽅⽤的软件有差异,但是⽤ Linux 的⼈肯定不简单,就不⽤我多做说明了。
理论上对其他型号路由器也通⽤,不过需要改⼀下固件的型号。本教程参考了多位前辈的⽂档与教程,其实虽说是教程,更像是⼀个整合,⽂章最后会给出过程中的参考链接,在此对他们⼀并感谢!
教程
⼀、刷写官⽅固件
从官⽅固件刷⼊其他版本的官⽅固件
你可能会疑问,既然已经是官⽅固件了,为什么还需要刷写官⽅固件?
对于此教程,这⼀步可能⾮必要。但是如果你是基于 telnet 来对固件进⾏刷写,那么可能需要重刷官⽅固件,截⽌⽬前这个节点
2021.8.1 官⽅最新的固件会出现在开启 telnet 时卡 shell 的情况。
具体表现为⽆法在弹出的窗⼝中粘贴⽂本,并且不会有后续的反应。 这时候可以刷回官⽅原固件,常见⽐较稳定的有 2.0.7, 2.0.376,1.0.14 啥的,这个⼤家可以⾃⼰尝试⼀下~ 不过,此教程不是基于 telnet 的,对于 Redmi AC2100 我也不推荐使⽤ telnet 这个⽅法,因为经过我的尝试发现,他的成功率⽐较低,⽽且异常繁琐!
官⽅固件的刷写过程如下:
1. ⾸先在 下载修复⼯具包与ROM包
2. 然后接通路由器电源,⽤⽹线将路由器的 LAN ⼝与电脑连接。
3. 打开⼩⽶路由器修复⼯具,上传本地对应的刷机包。
4. 选择与路由器 LAN ⼝相连的⽹卡(这⾥如果不清楚选哪⼀个,建议在⽹络设置中把其他的⽹卡都禁⽤掉)
5. 然后断开路由器电源,⽤⽛签或者其他的按住 reset 键后,接通电源,直到路由器橙灯闪烁时松开 reset 键。
6. 等待到蓝灯闪烁时,即可访问⽹关或者 miwifi 来设置路由器,固件刷写成功。
从Breed刷写官⽅固件
Breed 是⼀个由 ⼤神⾃写的与 U-Boot 同级的 Bootloader。
每次我们刷写固件不会刷写此部分,我们通过 Reset 键重置后,此部分不会被重置。像下⾯(这⾥因为我已经刷好了固件,不想 Reset 掉,因此⽤的其他⼤佬的截图,因此这⾥的型号不是 Redmi AC2100):
可以看到上图有⼀个固件更新部分,点开后详细信息如下:
可以看到上图有包含三个部分的刷写,Bootloader、固件、EEPROM这三个部分,我们如果想要刷会官⽅的这两部分都要刷。
平时我们说的 openwrt,padavan 等都是固件部分,breed 是 Bootloader 部分。我们如果要完全刷回官⽅的部件,需要在这⾥的Bootloader 部分刷写官⽅的 Bootloader,然后按照上述官⽅的⽅法来刷写整体后⾯的固件!**我测试时如果 Bootloader 部分是 breed,那么⽆法直接通过上⾯的⽅法进⾏重置。**官⽅的 Bootloader 可以在下⽅链接到:
⼆、从官⽅部件刷写 Breed
为什么需要刷 Breed?
我们注意到在 Breed 过程中,固件更新 部分也可以刷写固件,根据以往⼤家的经验来说,固件最好从 Breed 部分刷写还是最保险的。
此外,Breed 可以使你⽅便的更换其他的固件,因为 Reset 不会重置 Breed ⽽会重置固件,因此如果你想把 Openwrt 换成 Padavan,那么只需要 Reset ⼀下,在 Breed 重刷⼀下固件就可以了!
刷写流程
打开路由器 ssh
⾸先我们⽤⽹线将路由器 LAN ⼝与电脑连接
在 Linux ⽤ ifconfig 或者在 Windows 中使⽤ ipconfig 来查看路由器分发的 ip 。
好⽐如果是 192.168.31.x 那么我们就访问 192.168.31.1 ,或者可以尝试直接访问 miwifi ,会进⼊到设置路由器的管理页⾯,我们填写⼀系列配置,然后登录。
登录后,查看地址栏,⼀般地址如下,这⾥需要注意,我地址中的 192.168.31.1 是我访问的地址为此,如果你那⾥ ip 不是这样,那么将下⾯所有的 192.168.31.1 替换成你当中对应的 ip:
192.168.31.1/cgi-bin/luci/;stok=075a9192918557c27cdbcae2175281d9/web/home#router
这⾥我们注意 stok= 到 /web 这⼀段中间的码值,好⽐设其为 KEY
KEY = 075a9192918557c27cdbcae2175281d9
然后我们在地址栏输⼊如下地址并回车,地址中 ${KEY} 的意思是这⾥就填⼊上⾯ KEY 对应的数值:
192.168.31.1/cgi-bin/luci/;stok=${KEY}/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=-h%3B%20nvram%20set%20ssh_en% 3D1%3B%20nvram%20commit%3B%20sed%20-i%20's%2Fchannel%3D.*%2Fchannel%3D%5C%22debug%5C%22%2Fg'%20%2Fetc%2Finit.d%2Fdropb ear%3B%20%2Fetc%2Finit.d%2Fdropbear%20start%3B
这样就打开了路由器的 ssh ,我们接下来在地址栏打开:
吴莫愁爸爸192.168.31.1/cgi-bin/luci/;stok=${KEY}/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=-h%3B%20echo%20-e%20'admin%5C nadmin'%20%7C%20passwd%20root%3B
这就将路由器的 ssh 密码设置为 admin 。
刷写 breed
⾸先我们下载⼀下适⽤于 Redmi AC2100 的 Breed,
我们在 Windows 左下侧搜索框中搜索 cmd 然后打开。
输⼊
ssh root@192.168.31.1
然后输⼊ admin ,回车。
不出意外的话,我们就成功使⽤ ssh 登录了路由器中的系统。
然后我们按 Ctrl + D 退出登录
输⼊
scp /path-to-breed root@192.168.31.1:/tmp
这⾥的 /path-to-breed 代表的是上⾯下载的 Breed 的路径,例如 D:\Downloads\breed-mt7621-xiaomi-r3g.bin ,这条命令即将下载的 Breed 传输到了路由器的 /tmp ⽬录中。
接下来我们按上述过程重新登录路由器后,输⼊
cd /tmp
进⼊路由器中的 /tmp ⽬录,接下来运⾏
尼格买提mtd -r write breed-mt7621-xiaomi-r3g.bin Bootloader
这样我们就成功将 Breed 刷写到了路由器中!
我们断掉路由器电源,重启⼀下,访问 192.168.1.1 即可打开 Breed 控制台。
三、从 breed 刷写固件
⾸先是下载我们需要的固件,在后⾯我会给出⼀系列现阶段尝试过的固件,并给出说明,⼤家可以⾃⼰选择合适⾃⼰的固件。
这部分很简单,我们只需要下载我们想要刷写的固件,进⼊ breed 控制台,点击固件更新,在固件那部分点击后⾯的 浏览 ,上传我们想要刷写的固件,点击 上传 ,验证后会弹出新的窗⼝,点击 刷写 即可!
四、配置 Openwrt 固件
因为我⾃⼰在⽤ Openwrt ,所以这⾥只讲⼀下配置 Openwrt 的过程。
说明⼀下,这⾥我使⽤的是 small_5 ⼤佬的 Openwrt 固件,其他的固件可能界⾯有些差别,但是其实⼤同⼩异,可以类⽐着来做。
我⽤的固件⽹关为 10.0.0.1 ,这个⼀般都是固件作者⾃⼰设定的,⽐较简单地⽅式是将路由器 LAN ⼝与电脑连接,查看⾃⼰的 ip 地址,如果是 10.0.0.x 的话就是 10.0.0.1 ,这⾥涉及到⼀个⽹关的概念,⼤家有兴趣的可以⾃⾏查资料查看。
黎明个人资料配置 IPv4 ⽹络
⾸先将⽹线与路由器的 WAN ⼝连接。
现在⽹络⽆论是学校还是家⾥⼀般都是⽤的 PPPOE 拨号上⽹。
我们打开 ⽹络 中的 接⼝ ,然后编辑 WAN ⼝信息,将协议切换为 PPPoE ,填写⽤户名和密码,其他⼀般不⽤管,直接保存即可。
可选:这⾥可以选择编辑 LAN ⼝信息,这⾥涉及的是局域⽹的信息。
好⽐你现在 ip 是 10.0.0.x ,可以注意到协议为静态地址,然后 IPv4 地址为 10.0.0.1/24 这样的,我们如果是改成 192.168.1.1 ,那么后续我们的地址⼀般就是形如 192.168.1.x 了。
因为局域⽹地址⼀般都是这样,我就也这么改了,不过这⾥改不改都⾏。但是需要注意的是!我们如果改掉了,我们后续访问管理界⾯就不是 10.0.0.1 了,⽽是 192.168.1.1 !
配置科学上⽹
说实话,我学习刷机就是为了这个,估计⼤多数⼈也是。
不过现在 Openwrt 中科学上⽹插件的种类繁多,如 Passwall 、SSR+ 、Overwall 等。这三个我都⽤过,⽤起来都差别不⼤,界⾯也是差不多的。此固件⾃带的 Overwall 如下:
我们只需要在 订阅URL 部分填⼊我们的订阅链接,然后依次点击 更新订阅设置 以及 更新所有订阅服务器节点 ,然后可以发现下⽅出现了我们的节点,点击 使⽤ ,然后 保存及应⽤ ,就完成了。
这⾥可以在页⾯调节⼀下设置,好⽐可以设置 仅常⽤端⼝⾛代理 等。
配置DDNS
⾸先说⼀下什么是动态DNS,⼜叫 DDNS。下⾯是来⾃的解释:
动态DNS(英语:Dynamic DNS,简称DDNS)是(DNS)中的⼀种⾃动更新(Name server)内容的技术。根据互联⽹的域名订⽴规则,域名必须跟从固定的IP地址。但动态DNS系统为动态⽹域提供⼀个固定的(Name server),透过即时更新,使外界⽤户能够连上动态⽤户的⽹址。
这个术语被⽤来描述两种不同的概念。在的管理层⾯来说,动态DNS更新是指创建⼀个DNS系统,能够⾃动更新传统的DNS记录,⽽不需要⼿动编辑。这个机制在RFC 2136中被解释,利⽤机制来提供安全性。
在客户端来说,动态DNS提供了⼀个轻量化机制,让本地DNS数据库可以即时的更新。它能把指往⼀
个可能经常改变的,让经常改变位置及配置的设备,能够持续性的更新IP地址。令互联⽹上的外界⽤户可以透过⼀个⼤家知道的域名,连接到⼀个可能经常动态改变的机器。其中⼀个常⽤的⽤途是在使⽤动态IP地址连线(例如在每次接通连线就会被分配⼀个新的IP地址的拨号连线,或是偶尔会被ISP变更IP地址的DSL连线等)的电脑上运⾏软件。
若要实现动态DNS,就需要将⽹域的“最⼤缓存时间”设置在⼀个⾮常短的时间(⼀般为数分钟)。此举可避免外界⽤户在缓存中保留了旧的IP地址,并且使每个新连线被创建时都会经过Name Server获取该机器的新地址。
yy2080小顶顶各种机构都有⼤规模地提供动态DNS的服务。他们会利⽤存储⽤户当前的IP地址,并会对⽤户提供更新当前IP地址的⽅法。当⼀些"客户"程序被安装了之后,会在后台运⾏并每隔数分钟检查电脑的IP地址。当发现其IP地址有所变更,程序便会提交⼀个更新IP地址的请求⾄动态DNS的服务器。有很多和其他⽹络设备也在其中包含了上述的功能。
举个例⼦:
好⽐我们⼀个公⽹ ip 对于外⽹可见,我们想要在公司设置⼀下路由器,但是我们不知道路由器的准确 ip 。那么我们可以通过⼀个域名解析为这个 ip ,好⽐域名为 sqwq ,我们只需要访问 sqwq 即可访问管理页⾯或者 ssh 过去对路由器更改。
但是这个公⽹ ip 可能随时是变的,我们不能绑定死,那么即可利⽤动态 DNS 来监视 ip 的变化,如果此 ip 变化了,我们即向供应商发送更新 ip 的请求,以保证我们每次访问 sqwq 都可以解析到正确的 ip 。
如何设置DDNS?
简单讲⼀下如何配置我所⽤固件的 ddns,可能对其他固件并不通⽤,仅供参考!
⼤多数的 Openwrt 固件中都带了 ddns,我这⾥⽤的固件⾥⾯ ddns 做了⼀个集成,如下图所⽰:
我们⾸先需要注册⼀个域名,⼤家如果有做博客或者搭建服务器啥的,应该都有域名。
没有的话可以尝试去阿⾥云或者腾讯云买⼀个,我这⾥是在腾讯云买的,因此使⽤的是腾讯的 dndpod 的解析服务,⾸先在 dnspod 中注册⼀个帐号,点击右上⾓头像,选择 API密钥 。
选择 DNSPod Token ,点击 创建密钥。
考上大学恭喜的句子
然后记下密钥的 ID 与 Token ,在 ddns 设置页⾯选择编辑对应的 ddns 服务,或者新建⼀个。
如上图所⽰,⾸先选择 DDNS 服务商,如 aliyun 、dnspod 等,然后查询主机名与域名如上图所⽰填写,注意域名那⾥要⽤ @ ,这可能是这个插件的特性,⽤其他固件的插件可能是 . 。
然后⽤户名与密码处填写刚才⽣成密钥的 ID 与 Token ,保存即可。
设置 IPv6 的 ddns 同理,设置完成后重启⼀下 ddns 才会⽣效。
之前配置完路由器,总是⽆法访问我们基地主机的服务。
后来查询了⼀下,才发现因为基地主机是内⽹ ip ,Openwrt ⼀般⽤的 dns 解析服务为 dnsmasq ,他会有⼀个 重绑定保护 ,这个是为了防⽌ ⽽开启的,⼤家有兴趣的可以⾃⾏搜索。会⾃动屏蔽解析出的内⽹ ip ,因此我们只要将其关掉,即可解析内⽹ ip 。
当然,更保险的⽅法是通过 hosts 或者其他⽅式指定。
这⾥附上 DNS重绑定攻击 的解释:
DNS重新绑定是的⼀种形式。 在这种攻击中,恶意会导致访问者运⾏,攻击⽹络上其他地⽅的计算机。 从理论上讲,可防⽌发⽣这种情况:客户端脚本只能访问为脚本提供服务的同⼀主机上的内容。 ⽐较是实施此策略的重要部分,因此DNS重新绑定通过滥⽤域名系统(DNS)来绕过这种保护。
2023跨年唯美文案这种攻击可以通过让受害者的⽹络浏览器访问专⽤IP地址的机器并将结果返回给攻击者来破坏专⽤⽹络。 它也可以⽤于使⽤受害者机器发送垃圾邮件,分布式拒绝服务攻击或其他恶意活动。
总结
本教程主要涉及了刷写原固件,breed,openwrt 的⽅案。
还介绍了⼀下关于 ⽹络接⼝、科学上⽹、动态dns 等⽅⾯的设置⽅式。
容易注意到本教程未涉及 IPv6 的设置,可能是因为学校⽹络的原因,我设置 IPv6 久久没有成功,试了很多⽅法与固件,都没有成功。后来咨询了⼀下固件作者,猜测可能是因为学校⽹络的策略问题。分发 IPv6-PD 有问题,这个还没有查证,后续有时间可以再试⼀试。
教程说的⽐较罗嗦,可能也⽐较详细。⼤家如果还有什么地⽅不懂,欢迎留⾔询问!记得留下您的邮箱,这样可以及时的收到回复提⽰。特别鸣谢各位制作固件与插件的 ,,, 等⼤佬!
下⾯给出⼀些现阶段⽐较好⽤的固件,都是我搜索筛选过的,评价看起来都不错~
固件总览
Openwrt