小米路由器 3G 使用 OpenWRT

开启 SSH 功能

首先要开启小米路由器的 SSH 功能,在MIWifi开放平台开启 SSH 功能

登录小米账号后,可以获得 root 密码以及升级包

  1. 请将下载的工具包bin文件复制到U盘(FAT/FAT32格式)的根目录下,保证文件名为miwifi_ssh.bin;
  2. 断开小米路由器的电源,将U盘插入USB接口;
  3. 按住reset按钮之后重新接入电源,指示灯变为黄色闪烁状态即可松开reset键;
  4. 等待3-5秒后安装完成之后,小米路由器会自动重启,之后您就可以尽情折腾啦 :)

连接 SSH

小米路由器的 SSH 交换方法过旧,较新版本的 SSH 客户端会提醒不安全,并且禁止连接。

Unable to negotiate with 192.168.31.1 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1,diffie-hellman-group14-sha1

可以使用-oKexAlgorithms=+diffie-hellman-group1-sha1参数来允许连接。也即:

ssh root@192.168.31.1 -oKexAlgorithms=+diffie-hellman-group1-sha1

连接成功后,就可以按照正常 Linux 进行使用了

刷入 breed

既然要刷机,首先就要做好最坏的情况的准备:如果刷成砖了怎么救?

在路由器固件中,使用 breed 即可确保一定能够开机
在很多地方,breed 都被称作“不死 uboot”

首先进入breed 官网,选择breed-mt7621-xiaomi-r3g.bin下载

之后使用任意办法将文件放到路由器中(scp或者 U 盘都行)
执行如下命令

mtd -r write breed-mt7621-xiaomi-r3g.bin Bootloader

在这个过程中,会闪紫灯更新
等待重启完毕,拔掉 U 盘以及电源,长按重置按键,并且在按的过程中插入电源,设置电脑 IP 为 192.168.1.2 并且设置网关为 192.168.1.1
访问 192.168.1.1 进入 breed 管理页面

在这一步还需要在小米 R3G 设置中删除normal_firmware_md5: 442093f0d1b5f6a1f14ee623f8c59d79
这个会用于启动时检查固件的哈希值,如果不删可能会无法进入系统
同时还需要在环境变量中设置xiaomi.r3g.bootfw的值为2,用于告诉设备使用第二个系统(也即下面将刷入的 OpenWRT)1 2

刷入 OpenWRT

进入 OpenWRT 选择特定版本下载固件,如 19.07.1 版本

共涉及 4 个版本,其中用到 2 个文件:

  • openwrt-19.07.1-ramips-mt7621-xiaomi_mir3g-squashfs-rootfs0.bin
  • openwrt-19.07.1-ramips-mt7621-xiaomi_mir3g-squashfs-kernel1.bin

将电脑的 IP 改回自动获取,使用 ssh root@192.168.31.1 连接到路由器,并且将上面的固件传入到路由器中,并使用下面的命令安装并重启

mtd write openwrt-ramips-mt7621-mir3g-squashfs-kernel1.bin kernel1
mtd write openwrt-ramips-mt7621-mir3g-squashfs-rootfs0.bin rootfs0
reboot

重启后会闪烁橙色的灯,等待其启动完毕变蓝,接着访问 http://192.168.1.1/ 即可进入 OpenWRT 的配置界面(可能需要重新插入网线,让电脑重新识别下),设置好的密码就是管理界面密码与 SSH 密码

首先要设置的应该是 LAN 的地址,也即登录管理后台的地址,在 Network-Interface 中修改 LAN 的地址为不常用的地址,如 http://192.168.66.1/(否则,如果要中继的网关是192.168.1.1时,会有冲突)
由于该修改会导致连接断开,因此这里需要点击 apply unchecked,并且重插网线

给路由器插上网线,或者在“网络 - 无线”中扫描自己别的 WIFI,连接后,都可以让路由器成功联网,同时连接路由器的设备也将连接网络

由于国内访问 OpenWRT 的包管理很慢,因此使用国内的镜像

sed -i "s?downloads.openwrt.org?mirrors.ustc.edu.cn/lede?g" /etc/opkg/distfeeds.conf

使用 opkg 更新所有包

opkg update
opkg list-upgradable|cut -d ' ' -f 1 | xargs opkg upgrade

如需要开启 WIFI 热点,在“网络 - 无线”中配置并启用即可

“网络 - 无线”中这里应该会有四个设备,分别对应两种频段的 WIFI 连接(连别人)和 WIFI 热点(给别人连)

luci

要把 luci 改成中文,需要安装

opkg install luci-i18n-base-zh-cn

语言修改后,可能会导致菜单接口 404,重启后可回复

/etc/init.d/uhttpd stop
/etc/init.d/uhttpd start
/etc/init.d/uhttpd enable

透明代理

通过 OpenWRT V2Ray3和 LUCI APP V2Ray4,可以成功安装某工具,具体如下:

wget -O kuoruan-public.key http://openwrt.kuoruan.net/packages/public.key
opkg-key add kuoruan-public.key

echo "src/gz kuoruan_universal http://openwrt.kuoruan.net/packages/releases/all" >> /etc/opkg/customfeeds.conf
echo "src/gz kuoruan_packages http://openwrt.kuoruan.net/packages/releases/$(. /etc/openwrt_release ; echo $DISTRIB_ARCH)" >> /etc/opkg/customfeeds.conf
opkg update

opkg remove dnsmasq 
opkg install v2ray-core luci-app-v2ray luci-i18n-v2ray-zh-cn luci-compat

上述过程中,可能会出现 luci-compat 安装失败的问题,可以直接去 列表里下载包导入

执行以上命令后,reboot 重启即可发现多了一个“服务”菜单

进入后,导入自己的出口节点,配置路由和负载均衡,设置透明代理使用dokodemo_door,启动服务,原则上就可以完成透明代理。具体步骤可以参考《一文玩转V2ray 透明代理》5

挂载 U 盘

对于各种格式的 U 盘,可以安装下面的包识别

opkg install kmod-nls-cp437 kmod-nls-iso8859-1 kmod-usb-core kmod-usb-ohci kmod-usb-storage kmod-usb2 mount-utils
opkg install kmod-fs-vfat   // 用于挂载fat格式
opkg install kmod-fs-ext3   // 用于挂载ext3格式
opkg install ntfs-3g        // 用于挂载ntfs格式

安装完成后,使用 mount /dev/sda /mnt 即可挂在对应的 U 盘

Aria2

Aria2 是一款很优秀的下载工具
要在 OpenWRT 配置 Aria2 也很容易

opkg install aria2 ariang luci-app-aria2 luci-i18n-aria2-zh-cn

重启后,luci 的服务中会增加 Aria2 选项用于配置服务端
而安装的 AriaNG 则是 Web 客户端,安装后其会运行在 http://192.168.66.1/ariang
进入客户端后对照服务端配置连接即可

参考资料


  1. 不走弯路:小米路由器3G 刷Padavan固件简单教程 ↩︎

  2. 小米路由器3G刷原生OpenWrt ↩︎

  3. OpenWRT V2Ray ↩︎

  4. LUCI APP V2Ray ↩︎

  5. 一文玩转V2ray 透明代理 ↩︎