小米ac2100路由器输入openwrt固件
OpenWrt 可以被描述为一个嵌入式的 Linux 发行版。(主流路由器固件有 dd-wrt,tomato,openwrt,padavan四类)对比一个单一的、静态的系统,OpenWrt的包管理提供了一个完全可写的文件系统,从应用程序供应商提供的选择和配置,并允许您自定义的设备,以适应任何应用程序。
对于开发人员,OpenWrt 是使用框架来构建应用程序,而无需建立一个完整的固件来支持;对于用户来说,这意味着其拥有完全定制的能力,可以用前所未有的方式使用该设备。
固件下载
2021/9/8最新消息:
官网说明https://openwrt.org/toh/xiaomi/mi_router_ac2100
Openwrt官方已经从21.02.0版正式支持小米/红米AC2100。官网下载地址:
https://firmware-selector.openwrt.org/?version=21.02.1&target=ramips%2Fmt7621&id=xiaomi_mi-router-ac2100
需要文件
openwrt-ramips-mt7621-xiaomi_mi-router-ac2100-squashfs-kernel1.bin
openwrt-ramips-mt7621-xiaomi_mi-router-ac2100-squashfs-rootfs0.bin
openwrt-ramips-mt7621-xiaomi_mi-router-ac2100-squashfs-sysupgrade.bin
先刷入前面两个文件,之后用sysupgrade.bin更新一下即可。
开启ssh,并更改密码
利用官方固件的漏洞,通过Web注入漏洞开启SSH实现刷机
版本准备
带漏洞的官方固件,只有一个版本的固件有漏洞,版本号为AC2100 2.0.7*版本。
之后的版本漏洞已经修复,要刷机需要降级到带漏洞的版本(有人说是小米有意无意放出的那么一个版本,反正国际上一大堆玩小米路由的玩家)。
降级只需用官方更新方法手动刷入即可。带漏洞的版本在官方网站上下载:
红米RM2100:http://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/rm2100/miwifi_rm2100_firmware_d6234_2.0.7.bin
小米R2100:http://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/r2100/miwifi_r2100_firmware_4b519_2.0.722.bin
漏洞注入:降级到漏洞版本后,通过下面web命令开启SSH
使用管理员密码登录,路由器的web界面
http://192.168.1.1/cgi-bin/luci/;stok=<STOK>/web/home#router
这里的关键是号,每台机器不同,甚至每次登录都不同,拷贝下来备用。
在浏览器地址栏中输入以下链接代码,注意替换掉部分:
http://192.168.1.1/cgi-bin/luci/;stok=<STOK>/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%2Fdropbear%3B%20%2Fetc%2Finit.d%2Fdropbear%20start%3B
返回{“code”:0}即代表成功,如果返回401错误,原因可能是版本不正确或者值错误或者链接输入不完整等。
更改管理员root密码的方法:通过如下命令更改root密码为admin,在浏览器地址栏中输入以下链接代码,注意替换掉部分(有时stok值会发生改变,建议重新返回登录页面复制最新的stok值):
http://192.168.1.1/cgi-bin/luci/;stok=<STOK>/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=-h%3B%20echo%20-e%20'admin%5Cnadmin'%20%7C%20passwd%20root%3B
登录SSH进行刷机:
重启后,通过winscp登录192.168.1.1用户为root密码为刚才改过的admin。(如不能sftp找台虚拟机用scp命令拷贝,能跟路由网络通即可)先把openwrt的两个rom文件(xxx-kernel1.bin和xxx-rootfs0.bin)上传到路由器tmp目录。
再用putty登录192.168.1.1进行刷机操作,输入如下命令进行刷机:
nvram set uart_en=1&&nvram set bootdelay=5&&nvram set flag_try_sys1_failed=1&&nvram commit
mtd write /tmp/xxx-kernel1.bin kernel1
mtd -r write /tmp/xxx-rootfs0.bin rootfs0
注意上面rom文件的文件名,把xxx替换成你自己用的rom文件名。
刷完后将重启,刷机大功告成,之后便是openwrt路由的设置了。
###安装后无法登录ui
家用拨号宽带
uci set network.wan.proto=pppoe //设置wan口类型为pppoe
uci set network.wan.username=SZ6800000712444
uci set network.wan.password=712G12444 //这两行设置就是宽带账号
uci commit //保存配置到 /etc/config/network 和 /etc/config/wireless
opkg update // 更新软件列表
opkg list-installed // 查看已安装软件
opkg install luci // 安装LUCI
opkg install luci-i18n-base-zh-cn // 支持中文
输入以下命令开启支持web服务的uhttpd,并设置其为自启动:
/etc/init.d/uhttpd enable # 开机自启动
/etc/init.d/uhttpd start # 启动uhttpd
这样就可以通过 lan口的ip登陆路由器的网页管理界面了。
echo "nameserver 114.114.114.114">/tmp/resolv.conf
rm -f /var/lock/opkg.lock
OpenWrt 防火墙介绍
本章目标
了解 OpenWrt 防火墙的基本内容
Openwrt 是一个 GNU/Linux 的发行版, 和其他大多数的发行版一样,Openwrt 的防 火墙同样也是基于 iptables。在 OpenWRT下防火墙的默认行为已经可以满足路由器的需 要,一般情况下也无需修改。
1. OpenWrt 内置防火墙介绍
OpenWrt 关于 NAT、DMZ、防火墙规则等等都是由配置文件 /etc/config/firewall 文 件进行控制的,有关于什么是 NAT 或者 DMZ 等内容,下文会讲到。对于防火墙的修改工 作,我们采用 vi 进行直接的文件编辑完成。
防火墙文件总会在/etc/init.d/firewall 启动的时候由 UCI 进行解码并且生成 iptables 规则生效。因此使用者不需要了解 iptables 即可通过配置文件实现防火墙控制。
防火墙的修改生效,需要重启防火墙执行以下指令:
root@OpenWrt:/# /etc/init.d/firewall reload
或执行:
root@OpenWrt:/# /etc/init.d/firewall restart
查看当前 iptables 的已启用策略语法为:
root@OpenWrt:/# iptables – L
2. 防火墙文件内容分析
我们打开防火墙文件查看一下:
root@OpenWrt:/# vi /etc/config/firewall
我们可以看到第一部分的内容(默认参数表) :
![](https://pics6.baidu.com/feed/8c1001e93901213f749e74fba78099da2e2e95df.jpeg@f_auto?token=a8a85519acab319a7a95a817895e9b05)
这里是防火墙默认的参数表 ,其内容和相应的动作可以有如下选择 :
![](https://pics0.baidu.com/feed/f9dcd100baa1cd11f08eda354e7567f7c3ce2d5a.jpeg@f_auto?token=57d77e8bd9dba3cce8aa562390ddb590)
防火墙文件这方面的内容为:
syn_flood 1 表示: 是否启用防洪水攻击。可选值: 0 关闭, 1 启用。
input ACCEPT 表示: 设置 INPUT 链(chain)的过滤策略,可选值: ACCEPT 允许, REJECT 拒绝。
output ACCEPT 表示: 设置 OUTPUT 链(chain)的过滤策略,可选值: ACCEPT 允许, REJECT 拒绝。
forward REJECT 是 设置 FORWARD 链(chain)的过滤策略,可选值: ACCEPT 允许, REJECT 拒绝。
disable_ipv6 1 表示: 设置关闭掉 IPv6 的防火墙策略,可选值: 0 忽略, 1 关闭
这部分参考值既是系统默认的即可,无需修改:
防火墙的第二个内容(域) :
![](https://pics7.baidu.com/feed/d043ad4bd11373f00909e16d5d68e4f0faed0485.jpeg@f_auto?token=e844aff148c24aa8cebe4bd1b0eab5e0)
config 后面是表示配置项的名称,这里”zone”为域的意思。
name 表示域的名字 ,必须是唯一值,可选值:wan, lan
network 表示网络列表,用来指示哪些接口被捆绑到这个域中,可选接口的名称,比如:lan, wan, wan6
input ACCEP 允许 INPUT 链(chain)的过滤策略
output ACCEPT 允许 OUTPUT 链(chain)的过滤策略
forward ACCEPT 允许 FORWARD 链(chain)的过滤策略
masq 1 表示: 设置传输伪装,如果是 WAN 口必须为 1
mtu_fix 1 表示: 设置 MTU 的 MSS 钳制,如果是 WAN 口请为 1
简单来说:
mtu 是网络传输最大报文包。
mss 是网络传输数据最大值。
mss 加包头数据就等于 mtu.
这部分的设置作用如下:
A zone section groups one more interfaces and serves as a source or destination for forwardings, rules and redirects. Masquerading (NAT) of outgoing traffic is controlled on a per-zone basis.
防火墙的第三部分内容(转发) :
![](https://pics5.baidu.com/feed/0824ab18972bd407f8aabfbd77e1315a0eb309f0.jpeg@f_auto?token=38df32d68f6abe071899d0fd067a5b05)
src lan 是 设置转发来源
dest wan 是 设置转发目标
这部分作用描述如下:
The forwarding sections control the traffic flow between zones and may enable MSS clamping for specific directions. Only one direction is covered by a forwarding rule. To allow bidirectional traffic flows between two zones, two forwardings are required, with src and dest reversed in each.
防火墙的第四部分内容(规则) :
![](https://pics4.baidu.com/feed/21a4462309f790521a3d6109f59478c17bcbd55e.jpeg@f_auto?token=f693c22428ef6ef5dc57a9c09ec60c8c)
这里只是罗列出了几个防火墙的规则,其实防火墙规则在/etc/config/firewall 中可以有任 意数量的规则,这些规则定义了数据传输的动作和行为是被允许还是拒绝。
对于防火墙规则的作用描述如下:
Sections of the type rule can be used to define basic accept or reject rules to allow or restrict access to specific ports or hosts. Like redirects the rules are tied to
the given source zone and match incoming traffic occuring there.
我们再解释一下防火墙规则的相应选项的意思:
name 表示: 设置当前这个 rule 的名称
target 表示: 设置防火墙动作,可选值: ACCEPT 许可, REJECT 拒绝, DROP 抛弃
src 表示: 数据源的 zone 域是哪个。可选值: wan / lan src_ip 表示: 数据源的 IP 地址是哪个。 src_mac 表示: 数据源的 MAC 地址是哪个。 src_port 表示: 数据源的端口,可以是一个端口,或一个端口范围,但是必须同时指定了 协议类型
proto 表示: 数据源的协议类型, 可选值: tcp, udp, tcpudp, udplit, icmp, esp, ah, sctp, 或 all 表示全部
dest 表示: 数据目标的 zone 域是哪个。可选值: wan / lan dest_ip 表示: 数据目标的 IP 地址。 dest_port 表示:数据目标的端口,可以是一个端口,或一个端口范围,但是必须同时指定 了协议类型
family 表示: 数据的协议族,可选值: ipv4, ipv6, any
rule 规则设置可以灵活,比如允许来自 WAN 口的 ping ,例:
config rule
option name Allow-Ping
option src wan
option proto icmp
option icmp_type echo-request
option family ipv4
option target ACCEPT
防火墙的第五部分内容(重定向):
![](https://pics1.baidu.com/feed/ca1349540923dd540dfa32b6296e1cd59e8248d2.jpeg@f_auto?token=28c666e5d90cd64cc6323b6f6261ea67)
OpenWrt 防火墙允许使用者通过 WAN 口访问特定的端口重定向给局域网的一台电脑 设备(比如 WAN 口访问 80 端口(HTTP)将重定向给局域网某台网站服务器)。 端口重定向是 在防火墙配置/etc/config/firewall 中定义 redirect 段策略实现的。所有匹配的来源数据将
根据目标设置转发到目标主机上。 firewall 配置中可以有多个 redirect 策略,默认是没有开 放任何重定向的,如果你需要重定向请使用 vi 或 UCI 进行配置。
name 表示: 设置当前这个 redirect 的名称
src 表示: 转发源的 zone 域,一般转发都是转发从 wan 过来的访问
src_ip 表示: 转发源的 IP 地址指定
src_mac 表示: 转发源的 MAC 地址指定
src_port 表示: 转发源的端口指定
proto 表示:转发源的协议类型, 可选值: tcp, udp, tcpudp, udplit, icmp, esp, ah, sctp, 或 all 表示全部
dest 表示: 转发目标的 zone 域
dest_ip 表示: 转发目标的 IP 地址指定
dest_mac 表示: 转发目标的 MAC 地址指定
dest_port 表示: 转发目标的端口指定
端口重定向的可配置性很灵活。比如我们将 9020 这个端口转发给内网一台服务器的 80 端 口 ,如下 :
config redirect
option name '9020-80'
option proto 'tcp'
option src 'wan'
option src_dport '9020'
option dest 'lan'
option dest_ip '192.168.1.100'
option dest_port '80'
3. DMZ 介绍
DMZ 是英文“demilitarized zone”的缩写,中文名称为“隔离区”,也称“非军事化 区”。它是为了解决安装防火墙后外部网络不能访问内部网络服务器的问题,而设立的一个 非安全系统与安全系统之间的缓冲区,这个缓冲区位于企业内部网络和外部网络之间的小网 络区域内,在这个小网络区域内可以放置一些必须公开的服务器设施,如企业 Web 服务器、 FTP 服务器和论坛等。另一方面,通过这样一个 DMZ 区域,更加有效地保护了内部网络, 因为这种网络部署,比起一般的防火墙方案,对攻击者来说又多了一道关卡。
端口映射与 DMZ 的区别在于: 端口映射只是映射指定的端口, DMZ 相当于映射所有 的端口,并且直接把主机暴露在网关中,比端口映射方便但是不安全。
下面是关于 dmz 的一个示意图:
![](https://pics4.baidu.com/feed/f2deb48f8c5494ee680a7b53219d4ff598257ec7.jpeg@f_auto?token=72636c474e20767f63713a4f1b084155)
图 dmz 示意图
好的,结合之前简单的规则部分,这里我们给出一个将电脑 192.168.1.2 设置 DMZ 隔离区 的例子:
Simple DMZ rule
The following rule redirects all WAN ports for all protocols to the internal host
192.168.1.2.
config redirect
![](https://pics7.baidu.com/feed/4034970a304e251f07e5556055e1661c7e3e538f.jpeg@f_auto?token=82cc349ea61810cc94ca0ebd2da05f5c)