分类 光猫路由器 下的文章

适用:CR8809 电信版 (CR8806, CR8808 等不确定能不能用,但理论上固件是通刷的,所以各位可以试试?)

首先准备如下:

1.MIWIFIRepairTool (就是官方的那个刷机工具)
2.一份和你当前型号匹配的原版固件的备份(以供恢复)
3.一份 6.2.147 版本的 CR8808 固件(可能也有别的版本有这个能开启 Telnet 的后门,我不确定,总之我确定这个版本是可以的)
4.用来连接 Telnet/SSH 的软件,Windows 自带的那个或者 PuTTY 什么的都可以
5.一台电脑(当然)

然后开始。

1.首先在电脑上打开 MIWIFIRepairTool:

2.选择8808的固件按提示刷固件

3.蓝灯刷机成功之后,拔掉电源线重新插上,等待路由器开机。
路由器开机之后进入其后台 (可能IP会变,变了的话看 ipconfig 咯),密码应该依然是背面印的默认密码。进入后台之后网址会有一段 stok,复制下来。

4.然后就是重点,访问 http://(路由器IP)/cgi-bin/luci/;stok=(你刚复制的stok)/api/misystem/set_telnet?enable=1 这个地址,就会开启 Telnet 了。
然后,打开你的 Telnet 工具连进路由器,用户名 root,密码就是机身背面贴的管理密码 (或者访问 /api/xqsystem/bdata 找 mgtpsd 字段) 。

看到 ARE U OK 之后进入下一步。

5.接下来我们固化这个 SSH。执行这个命令,打开调试模式来解除 bdata 的写保护:

zz=$(dd if=/dev/zero bs=1 count=2 2>/dev/null) ; printf '\xA5\x5A%c%c' $zz $zz | mtd write - crash

执行完用 reboot 命令重启路由器。重启之后如果 Telnet 关上了(但调试模式应该不会?不确定)那么再走一遍上面的步骤就可以。

路由器重新开机后再 Telnet 上,继续依次执行:

bdata set ssh_en=1
bdata set telnet_en=1
bdata set uart_en=1
bdata set boot_wait=on
bdata commit

完成后 reboot 重启。

重启后再一次连上,用 bdata show 命令确定一下我们刚刚加上去的参数真的写上去了之后,执行

mtd erase crash

清除掉 crash 来关掉调试模式。然后重启。不放心的话,重启完可以再确认一下参数在不在。

这样我们应该就已经把开启 telnet 的标志写入了 bdata。

6.刷回 CR8809 的固件
还是按上面的老规矩,进刷机模式,用官方刷机工具刷回 CR8809 的固件。bdata 理论上不会受到影响,所以刷回去之后 Telnet 应该也会是开启状态。

7.开启SSH

nvram set ssh_en=1
nvram set telnet_en=1
nvram set uart_en=1
nvram set boot_wait=on
nvram commit
sed -i 's/channel=.*/channel="debug"/g' /etc/init.d/dropbear
/etc/init.d/dropbear restart
mkdir /data/auto_ssh
cd /data/auto_ssh
curl -O https://fastly.jsdelivr.net/gh/lemoeo/AX6S@main/auto_ssh.sh
chmod +x auto_ssh.sh
uci set firewall.auto_ssh=include
uci set firewall.auto_ssh.type='script'
uci set firewall.auto_ssh.path='/data/auto_ssh/auto_ssh.sh'
uci set firewall.auto_ssh.enabled='1'
uci commit firewall
uci set system.@system[0].timezone='CST-8'
uci set system.@system[0].webtimezone='CST-8'
uci set system.@system[0].timezoneindex='2.84'
uci commit

所需附件
固件
Putty

原文:原文原文2原文3

config globals 'globals'
    option mmx_mask '0x3F00'              # 设置多路径路由表掩码,控制使用的链路
    option rtmon_interval '5'             # 路由监控的间隔时间,单位为秒

config interface 'wan'
    option enabled '1'                    # 启用 WAN 接口
    option family 'ipv4'                  # 使用 IPv4 协议
    option reliability '1'                # 设置接口可靠性值
    option count '1'                      # 设置需要的连续失败次数以判断接口不可用
    option timeout '2'                    # ping 超时时间,单位为秒
    option interval '5'                   # ping 间隔时间,单位为秒
    option failure_interval '5'           # 故障发生时的 ping 间隔,单位为秒
    option recovery_interval '5'          # 恢复时的 ping 间隔,单位为秒
    option down '3'                       # 设置下线的最大失败 ping 次数
    option up '3'                         # 设置上线所需的成功 ping 次数
    option tracking_method 'ping'         # 使用 ping 跟踪方法
    option initial_state 'online'         # 初始状态为在线
    option track_method 'ping'            # 使用 ping 跟踪接口状态
    option size '56'                      # ping 包大小,单位为字节
    option max_ttl '60'                   # 最大 TTL 值
    list track_ip '8.8.8.8'               # 追踪的目标 IP 地址

config interface 'wan2'
    option enabled '1'                    # 启用 WAN2 接口
    option family 'ipv4'                  # 使用 IPv4 协议
    option reliability '1'                # 设置接口可靠性值
    option count '1'                      # 设置需要的连续失败次数以判断接口不可用
    option timeout '2'                    # ping 超时时间,单位为秒
    option interval '5'                   # ping 间隔时间,单位为秒
    option failure_interval '5'           # 故障发生时的 ping 间隔,单位为秒
    option recovery_interval '5'          # 恢复时的 ping 间隔,单位为秒
    option down '3'                       # 设置下线的最大失败 ping 次数
    option up '3'                         # 设置上线所需的成功 ping 次数
    option tracking_method 'ping'         # 使用 ping 跟踪方法
    option initial_state 'online'         # 初始状态为在线
    option track_method 'ping'            # 使用 ping 跟踪接口状态
    option size '56'                      # ping 包大小,单位为字节
    option max_ttl '60'                   # 最大 TTL 值
    list track_ip '172.16.3.1'            # 追踪的目标 IP 地址

config interface 'wan_6'
    option enabled '1'                    # 启用 WAN_6 接口
    option family 'ipv6'                  # 使用 IPv6 协议
    option reliability '1'                # 设置接口可靠性值
    option count '1'                      # 设置需要的连续失败次数以判断接口不可用
    option timeout '2'                    # ping 超时时间,单位为秒
    option interval '5'                   # ping 间隔时间,单位为秒
    option failure_interval '5'           # 故障发生时的 ping 间隔,单位为秒
    option recovery_interval '5'          # 恢复时的 ping 间隔,单位为秒
    option down '3'                       # 设置下线的最大失败 ping 次数
    option up '3'                         # 设置上线所需的成功 ping 次数
    option tracking_method 'ping'         # 使用 ping 跟踪方法
    option initial_state 'online'         # 初始状态为在线
    list track_ip '2001:4860:4860::8888'  # 追踪的目标 IPv6 地址
    option track_method 'ping'            # 使用 ping 跟踪接口状态
    option size '56'                      # ping 包大小,单位为字节
    option max_ttl '60'                   # 最大 TTL 值

config interface 'wan2_6'
    option enabled '1'                    # 启用 WAN2_6 接口
    option family 'ipv6'                  # 使用 IPv6 协议
    option reliability '1'                # 设置接口可靠性值
    option count '1'                      # 设置需要的连续失败次数以判断接口不可用
    option timeout '2'                    # ping 超时时间,单位为秒
    option interval '5'                   # ping 间隔时间,单位为秒
    option failure_interval '5'           # 故障发生时的 ping 间隔,单位为秒
    option recovery_interval '5'          # 恢复时的 ping 间隔,单位为秒
    option down '3'                       # 设置下线的最大失败 ping 次数
    option up '3'                         # 设置上线所需的成功 ping 次数
    option tracking_method 'ping'         # 使用 ping 跟踪方法
    option initial_state 'online'         # 初始状态为在线
    list track_ip '2001:4860:4860::8844'  # 追踪的目标 IPv6 地址
    option track_method 'ping'            # 使用 ping 跟踪接口状态
    option size '56'                      # ping 包大小,单位为字节
    option max_ttl '60'                   # 最大 TTL 值

config policy 'wan_wan2'
    list use_member 'wan_only'            # 策略使用 wan_only 作为主链路
    list use_member 'wan2_only'           # 使用 wan2_only 作为备用链路

config policy 'wan_6_wan2_6'
    list use_member 'wan_6_only'          # 策略使用 wan_6_only 作为主链路
    list use_member 'wan2_6_only'         # 使用 wan2_6_only 作为备用链路

config member 'wan_only'
    option interface 'wan'                # 绑定 wan 接口
    option metric '1'                     # 设置路由优先级
    option weight '19'                    # 设置负载分担权重

config member 'wan2_only'
    option interface 'wan2'               # 绑定 wan2 接口
    option weight '1'                     # 设置负载分担权重
    option metric '1'                     # 设置路由优先级

config member 'wan_6_only'
    option interface 'wan_6'              # 绑定 wan_6 接口
    option metric '1'                     # 设置路由优先级
    option weight '1'                     # 设置负载分担权重

config member 'wan2_6_only'
    option interface 'wan2_6'             # 绑定 wan2_6 接口
    option weight '1'                     # 设置负载分担权重
    option metric '2'                     # 设置路由优先级

config rule 'default_rule_v4'
    option family 'ipv4'                  # 应用 IPv4 协议的规则
    option proto 'all'                    # 适用于所有协议
    option use_policy 'wan_wan2'          # 使用 wan_wan2 策略
    option sticky '1'                     # 连接持久化设置

config rule 'default_rule_v6'
    option family 'ipv6'                  # 应用 IPv6 协议的规则
    option proto 'all'                    # 适用于所有协议
    option use_policy 'wan_6_wan2_6'      # 使用 wan_6_wan2_6 策略
    option sticky '1'                     # 连接持久化设置

config rule 'default_rule_v4_v2'
    option dest_ip '0.0.0.0/0'            # 应用于所有 IPv4 地址
    option use_policy 'wan_wan2'          # 使用 wan_wan2 策略
    option family 'ipv4'                  # 应用 IPv4 协议的规则

config rule 'default_rule_v6_v2'
    option dest_ip '::/0'                 # 应用于所有 IPv6 地址
    option use_policy 'wan_6_wan2_6'      # 使用 wan_6_wan2_6 策略
    option family 'ipv6'                  # 应用 IPv6 协议的规则

重启 mwan3:

/etc/init.d/mwan3 restart

重启网络服务:

/etc/init.d/network restart

这两个命令分别重启多路径网络监控(mwan3)和整个网络服务

创建接口:

接口-添加新接口(GM)-新接口协议必须是静态地址-接口是路由器上的wan接口

IP地址设置为和光猫同一网段的地址例如:192.168.100.251

子网掩码:255.255.255.0

点击高级:

使用网关跃点 :100

防火墙设置:wan

创建一条静态路由:

接口选择创建的GM

目标:192.168.100.0/24

网关选择:192.168.100.251

高级设置-跃点数:100

  • 准备工作:

1.下载小米路由器3的pd-boot

http://downloads.pangubox.com:6380/

开启ssh(openwrt官方推荐方法:https://openwrt.org/toh/xiaomi/mir3
2.1 浏览器网址中输入如下内容,然后回车:
http://192.168.31.1/cgi-bin/luci/;stok=(这里替换你的stock)/api/xqnetwork/set_wifi_ap?ssid=tianbao&encryption=NONE&enctype=NONE&channel=1%3Bnvram%20set%20ssh%5Fen%3D1%3B%20nvram%20commit

看到网页中出现“{“msg”:“未能连接到指定WiFi(Probe timeout)”“code”:1616}”的字样,表示该命令执行成功

2.2 继续将网址替换成下面,然后回车:
http://192.168.31.1/cgi-bin/luci/;stok=(这里替换你的stock)/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
看到网页中出现“{“msg”:“未能连接到指定WiFi(Probe timeout)”“code”:1616}”的字样,表示该命令执行成功

2.3 继续将网址替换成下面,然后回车:
http://192.168.31.1/cgi-bin/luci/;stok=(这里替换你的stock)/api/xqnetwork/set_wifi_ap?ssid=tianbao&encryption=NONE&enctype=NONE&channel=1%3B%2Fetc%2Finit.d%2Fdropbear%20start
看到网页中出现“{“msg”:“未能连接到指定WiFi(Probe timeout)”“code”:1616}”的字样,表示该命令执行成功

2.4 继续将网址替换成下面,然后回车:
http://192.168.31.1/cgi-bin/luci/;stok=5c392400a7a61ef3e3b72e060dc769d8/api/xqsystem/set_name_password?oldPwd=当前后台管理密码&newPwd=重置的新密码
网页中出现“{“code”:0}”的字样,表示修改密码成功!

2.5 通过远程ssh工具或者直接ssh连接路由器执行如下命令:

nvram set uart_en=1
nvram set flag_last_success=1
nvram set boot_wait=on
nvram commit

2.6 上传pd-boot文件到/tmp目录下

2.7 然后到路由器中执行如下命令:

cd /tmp
mtd_write write 上面下载的文件名字 Bootloader
reboot

重启后等一会,我等了一分多钟,建议多等一会。

2.8 开始刷机–记住这个时候通过网线连接路由器(这个时候不能用Wi-Fi了)
然后拔掉电源,按住重置按钮并插上电源,在1~2秒后释放重置按钮,此时各个网口的灯应该已经闪过,路由器指示灯为黄色并以较慢的频率闪烁

访问 192.168.1.1,进入pd-boot界面,可以通过这个来重写系统(以后恢复原来的固件也是这里,去下载小米官网下载来这里恢复)

  • 刷X-WRT固件

这个时候可以直接刷入X-WRT (openwrt的开发版本)

官网:https://x-wrt.com/

进入固件下载(https://downloads.x-wrt.com/rom/),找到小米路由器3固件(固件很多,可以crtl+f搜索“Xiaomi Mi Router R3”),选择带有“breed-factory.bin”的固件

固件无线默认名称:X-WRT_XXXX,密码:88888888
固件管理界面:http://192.168.15.1/
管理界面账户密码:admin/admin
SSH后台登录:root/admin

  • 刷openwrt固件

固件一:

如果觉得X-WRT已经符合自己需求的就无需再看这一步了。如果希望刷openwrt请看下去。

进入https://openwrt.ai/?version=22.03&target=ramips%2Fmt7620&id=xiaomi_miwifi-r3按自己需求定制固件,或者可以直接下载官方已有的固件,下载时需留意带有sysupgrade的

需要通过X-WRT固件的“固件升级”功能刷入openwrt,不能直接从Pd-boot刷入,会无限重启。这一步不知道是否是我操作问题,但试过从Pd-boot刷4个固件都不成功,只能曲线救国先刷X-WRT。

注意:本人通过这个固件升级还是会一直重启

固件二:

https://kingq.lanzouq.com/iAbfT15k5pda

原文链接:原文1 原文2 原文3

服务器工作

  • 准备工作

平台:x86/64

固件:iStoreOS 22.03.5 2023081110 / LuCI istoreos-22.03

安装软件包

系统-软件包-更新列表

然后筛选列表,安装以下软件

kmod-wireguard
luci-app-wireguard
luci-i18n-wireguard-zh-cn
luci-proto-wireguard
wg-installer-server
wg-installer-server-hotplug-babeld
wg-installer-server-hotplug-olsrd
wireguard-tools

重启系统

  • 服务端相关配置

登陆 openwrt – 网络 – 接口 – 添加新接口

接口名随意填写例如 WGd

协议选择 WireGuard VPN

点击提交

开机自动运行 打钩

直接生成新的密钥对

监听接口改一下,然后记住例如(12345

地址改为 192.168.100.1/24 (改为私有地址,不与主网络相同)

防火墙设置 – 选择 lan

防火墙-自定义规则添加iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o br-lan -j MASQUERADE(有人说不加也行,我自己加了的)

  • 添加客户端

客户端 peer添加

网络 – 接口 –找到WGd -点击编辑-对端

添加对端

描述(对端名称) 例如PC1

直接生成新的密钥对

直接生成预共享密钥

允许的IP设置为192.168.100.2-254/32

路由允许的IP 打钩

持续 Keep-Alive 设置为:25

然后点击 生成配置

连接端点 改为:DDNS的域名

允许的IP 设置为:内网网段 、WGd的网段 例如 192.168.1.0/24、192.168.100.0/24 把原有的0.0.0.0/0::/0 删除

下方的配置文件大概格式为:

[Interface]
PrivateKey = qGXmfeG8U******
# ListenPort not defined

[Peer]
PublicKey = F7qCrMXFN0VDhc5td******
PresharedKey = i/SHaYDyZDe16C*****
AllowedIPs = 192.168.1.0/24、192.168.100.0/24
Endpoint = example.com:12345
PersistentKeepAlive = 25

需要添加一条 Address = 192.168.100.2/32[Interface]内 修改过后的配置文件如下

[Interface]
PrivateKey = qGXmfeG8U******
Address = 192.168.100.2/32
# ListenPort not defined

[Peer]
PublicKey = F7qCrMXFN0VDhc5td******
PresharedKey = i/SHaYDyZDe16C*****
AllowedIPs = 192.168.1.0/24、192.168.100.0/24
Endpoint = example.com:12345
PersistentKeepAlive = 25

配置文件保存为*.conf 导入对应的客户端就可以使用了

网络-防火墙-端口转发-添加 放行192.168.1.1 的12345端口

网络-防火墙-常规设置-lan到wan 编辑添加涵盖网络,把刚刚的WGd接口添加进去

操作完以上记得重启WGd 接口