my-home-network

上一次折腾家里的网络还是去年(单线复用解决一根网线同时 IPTV 和宽带问题),前几天刷论坛的时候看到了 Redmi AX6000 的车,不到 400 元的价格性价比很高,目前用着华硕 RT-AC1200-GU,表现很稳定,但 5G 穿墙信号有点弱,很快就说服自己可以入手,虽然大概率是再包装的退换货。

既然买了新路由器,自然得创造一个新的伪需求。

光猫桥接

换了一个性能更强的路由器,首先想到了直接路由器拨号,虽然现在的光猫拨号几乎不存在性能瓶颈,但使用路由器拨号有一个好处是可以完全掌控家里的网络,让光猫安安心心拨号就行了。

获取超级密码

  • 运营商:四川电信
  • 光猫:友华 PT926E
  • 网关:10.0.0.1

网上有不少获取超级密码的教程,我这里使用的是 U 盘 + F12 获取。

将 U 盘插入光猫,登录后台:

http://10.0.0.1/cgi-bin/luci/admin/storage/settings

按 F12,在 Console 控制台输入:

get_path_files("/mnt/usb1_2/../..")

进入根目录,找到 /var/config/lastgood.xml 拷贝到 U 盘上,之后取下 U 盘插上电脑查找关键字 SUSER_PASSWORD 即可获得超级密码。

你可以在光猫登录页面直接输入超级密码进入管理后台(不用修改用户名为 telecomadmin 也可以)

进入网络设置,选中连接名称为 4_INTERNET_B_VID,将模式修改为 Bridge 后应用。

telecom-onu-superadmin

设置路由器拨号

进入路由器设置上网方式为 PPPoE,输入宽带账号密码,本以为直接前面获取的 lastgood.xml 文件中搜索到的 pppUserpppPasswd 就可以了。可折腾了两个小时怎么也拨号不成功,一度让我陷入自我怀疑,到底是哪里出了问题... 情急之下直接将光猫恢复默认设置,可之后又出现了新的问题,网关地址恢复为了默认的 192.168.1.1,以前为了输入方便,家里的网络使用了 10.0.0.0/8 段(不知道为什么国内的网络设备都喜欢默认使用 192.168.0.0/16 段 - -),导致我无法进入光猫后台,只得找一根网线直接将笔记本接到光猫上才进入设置。为了以后折腾方便,还是决定将所有设备地址改回 192.168.0.0/16 段,包括两个交换机、路由器、PC 和树莓派,因为已经很晚了,迫于第二天还要搬砖,结束了第一天的战斗。

第二天,想了想是不是宽带拨号密码错了,有可能 lastgood.xml 中的密码是经过加密的,在光猫后台使用 F12 改文本框类型行不通,后来网上一篇文章中终于找到了光猫 PPPoE 密码的加密方式:

  • 假设明文是 m,则首先将明文倒过来,得到 m’
  • 将 m’ 的每个字符在 ASCII 层面 +1,新的字符组成密文 c

因此解密步骤如下:

  • 将密文 c 倒过来得到 c’
  • 将 c’ 的每个字符在 ASCII 层面 -1,得到 PPPoE 密码 m

例如我的 lastgood.xml 文件中 pppPasswd 为 2345678,则正确的密码为 7654321。

尝试之后终于成功拨号上网了,目前的家庭网络拓扑如下:

my-home-network-topology

还有一些其它的接法:光猫设置宽带和 IPTV 为一个 VLAN 可节省一根光猫到交换机的网线;光猫当 VLAN 交换机,可节省一个交换机。这里为了物尽其用,就不研究了。

Redmi AX6000 开启 SSH

Redmi AX6000 开启 SSH 参考了恩山上某大佬的帖子,我到手后将路由器固件升级为了 1.0.64,方法依然有效。这里也简单的记录下,防止以后迷路。

  • 路由器初始密码:找到 Redmi AX6000 的 SN 码(包装盒上和路由器背面都有),并在此计算初始密码,将其保存下来,路由器恢复出厂设置后会用到
  • 路由器的 stok:登录路由器的 web 端管理界面,从上方地址栏即可获得 stok

开启开发者模式

1.更改路由器的 crash 分区,使其进入到开发者模式,在浏览器地址栏输入:

http://192.168.31.1/cgi-bin/luci/;stok=token/api/misystem/set_sys_time?timezone=%20%27%20%3B%20zz%3D%24%28dd%20if%3D%2Fdev%2Fzero%20bs%3D1%20count%3D2%202%3E%2Fdev%2Fnull%29%20%3B%20printf%20%27%A5%5A%25c%25c%27%20%24zz%20%24zz%20%7C%20mtd%20write%20-%20crash%20%3B%20

将其中 stok=token 的 token 替换成前面获取的路由器 stok,下面相同。

2.设置 Bdata 参数,在浏览器地址栏输入:

http://192.168.31.1/cgi-bin/luci/;stok=token/api/misystem/set_sys_time?timezone=%20%27%20%3B%20bdata%20set%20telnet_en%3D1%20%3B%20bdata%20set%20ssh_en%3D1%20%3B%20bdata%20set%20uart_en%3D1%20%3B%20bdata%20commit%20%3B%20

3.重启路由器,在浏览器地址栏输入:

http://192.168.31.1/cgi-bin/luci/;stok=token/api/misystem/set_sys_time?timezone=%20%27%20%3b%20reboot%20%3b%20

* 每次重启路由器 stok 值都会改变。

通过 Telnet 开启 ssh

在 Windows Terminal 中输入:

telnet 192.168.31.1

输入后会直接进入【ARE U OK】的界面,表示 Telnet 成功。

开启 SSH 并修改密码为 admin123:

bdata set boot_wait=on
bdata commit
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
echo -e 'admin123\nadmin123' | passwd root

目前从 Telnet 开启的 SSH,路由器重启会失效,因此添加一个开启自动运行的脚本,来实现自动开启 SSH。缺点就是恢复出厂设置或重新刷机后需要重新添加。

ssh root@192.168.31.1
mkdir /data/auto_ssh && cd /data/auto_ssh
curl -O https://cdn.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

修改时区

在 SSH 中执行:

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

关闭开发者模式

mtd erase crash
reboot

注意事项

每次升级固件或重置固件都可能需要在 Telnet 下重新开启 SSH:

sed -i 's/channel=.*/channel="debug"/g' /etc/init.d/dropbear
/etc/init.d/dropbear restart
echo -e 'remember3\nremember3' | passwd root

然后在 SSH 中执行:

mkdir /data/auto_ssh && cd /data/auto_ssh
curl -O https://cdn.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

Redmi AX6000 的固件本身就是小米定制的 OpenWrt,开启 SSH 之后就可以发挥想象自己探索各种玩法了。

一天体验下来,以前的死角也能上网了,虽然速度比较慢,红米 Redmi AX6000 的信号确实比老华硕 RT-AC1200-GU 强一些,但不多。总的来说升级还是不亏的,开启 SSH 后如果要求不高,也能一定程度上替代软路由了,适合退烧养老。


Update: 2022-12-19

AX6000 的一些问题

迫于某🐱速度只能跑到 60M 左右,一番折腾无果,怀疑是固件的问题,这几天又把最近几个固件试了一遍,发现了一些问题:

  • 1.0.48 固件重启后 5G WiFi 过几分钟之后才能搜到
  • 1.0.60 固件无法搜到 5G WiFi 信号
  • 1.0.64 固件正常

而且我不是一个人,也有不少网友遇到,果然某夕夕水还是深。几个固件试下来速度并没有多少区别,先用着最新的 1.0.64 固件,有空再仔细研究或者刷 OpenWrt 试试。