记录一次光猫崩溃

背景

2024年2月27日,上海电信对中兴光猫G7615进行推送升级,版本变为V2.0.0P2T3。笔者是自己购买的光猫,不是电信给的,所有参数都是自己设置的,无法通过电信自动下发。在自动更新后,疑似是电信自动下发的配置文件导致光猫崩溃,先是IPTV无法使用,在光猫重启后,无法上网。同时光猫的管理员密码被电信的TR069协议修改,通过Web页面只能登陆普通用户,没有管理员权限,无法配置参数。联系运维小哥,被告知只能换回SDN光猫,无法桥接,无法使用自己的路由器来拨号。遂折腾了一天,重新配置,终于恢复如初,就此记录一下折腾的过程。
光猫被自动升级了

重置光猫

先拔掉光纤!先拔掉光纤!先拔掉光纤!

重要的事情说三遍!如果不拔掉光纤,光猫会自动通过电信的TR069协议改管理员密码。进不了光猫后台就什么都干不了!

  1. 拔掉光纤,用卡针长按光猫背面的Reset键15-30秒,等待光猫的所有指示灯都亮起,然后松开Reset键。
  2. 用一根网线连接光猫和电脑,由于光猫重置后,DHCP服务不一定会开启,所以需要手动设置电脑的IP地址为192.168.1.2,使用浏览器访问192.168.1.1,输入用户名telecomadmin和密码nE7jA%5m,进入光猫的管理页面。
  3. 需要折腾的话,还需要打开光猫的telnet,但经过实测,V2.0.0P2T3版本的光猫已经无法通过开源工具解锁telnet,所以我们需要先降级光猫的固件。这里我使用的是恩山找到的V2.0.0P1N15E版本的相对较老的固件,原帖子在这里,在我的仓库也可以下载,保证可以解锁telnet。(降级一定要确定硬件版本,选择合适自己得版本降级)

!!注意,只适用于G7615电信原版,联通版等手动刷了电信分区的机器切勿尝试,会砖,会砖,会砖!!

  1. 寻找一番发现,光猫的固件升级页面是隐藏的,需要在地址栏输入http://192.168.1.1:8080/login.cgi?username=telecomadmin&psd=nE7jA%255m&hidden=upgrade,然后点击管理->设备管理->软件版本升级,上传bin升级。
  2. 降级成功后,自动重启,重新登录管理页面,此时硬件版本显示:V1.3.0 软件版本:V2.0.0P1T1下面就开始开启telnet来折腾。

开启telnet

老版本的固件可以通过两款开源工具来解锁telnet:

  1. 来自mayi5147https://github.com/douniwan5788/zte_modem_tools
  2. 来自thank243https://github.com/thank243/zteOnu

这里我使用的是第一款工具,需要Python3环境,按照README的说明,先安装依赖:

1
2
3
conda create -n zte python=3.8
conda activate zte
pip install -r requirements.txt

我使用的是电信版固件,默认管理员用户名与密码是telecomadminnE7jA%5m,所以运行:

1
python3 zte_factroymode.py --user telecomadmin --pass nE7jA%5m --ip 192.168.1.1 --port 8080 telnet open

使用开源工具解锁Telnet

运行成功后,光猫的telnet就被打开了,同时会给一个telnet的用户名和密码,记得赶紧操作,十几分钟半个小时后,用户名和密码就会换。

Windows下可以使用putty连接telnet,或者在系统功能中安装Telnet,安装过程不再赘述。

1
telnet 192.168.1.1

Telnet登陆

固化Telnet

光猫重启后,telnet就会被关闭,所以我们需要固化telnet:

1
2
3
4
5
6
7
8
9
10
11
12
sendcmd 1 DB p TelnetCfg    #查看telnet配置
sendcmd 1 DB set TelnetCfg 0 Lan_Enable 1 #开启lan口telnet
sendcmd 1 DB set TelnetCfg 0 TS_UName root #设置telnet用户名
sendcmd 1 DB set TelnetCfg 0 TSLan_UName root #设置lan口下telnet用户名
sendcmd 1 DB set TelnetCfg 0 TS_UPwd Zte521 #设置telnet密码
sendcmd 1 DB set TelnetCfg 0 TSLan_UPwd Zte521 #设置lan口下telnet密码
sendcmd 1 DB set TelnetCfg 0 Max_Con_Num 99 #设置最大连接数
sendcmd 1 DB set TelnetCfg 0 ExitTime 999999 #设置退出时间
sendcmd 1 DB set TelnetCfg 0 InitSecLvl 3 #设置初始安全级别
sendcmd 1 DB set TelnetCfg 0 CloseServerTime 9999999 #设置关闭telnet时间
sendcmd 1 DB set TelnetCfg 0 Lan_EnableAfterOlt 1 #设置olt下lan口telnet开关
sendcmd 1 DB save #保存配置

删除万恶的TR069

一旦光猫连上光纤,电信就会通过TR069协议修改光猫的管理员密码,所以我们需要删除TR069:

1
2
3
4
sendcmd 1 DB p MgtServer   #查看MgtServer配置
sendcmd 1 DB set MgtServer 0 URL http://127.0.0.1 #将TR069服务器地址改为本地
sendcmd 1 DB set MgtServer 0 Tr069Enable 0 #关闭TR069
sendcmd 1 DB save

同时,如果不用电话,建议直接删除管理+语音连接

1
2
3
sendcmd 1 DB p WANC
sendcmd 1 DB delr WANC 0
sendcmd 1 DB save

通过以上步骤,得到一个已注册但没有配置任何连接的光猫。再更改下管理员用户名和密码。

1
2
3
sendcmd 1 DB set DevAuthInfo 0 User XXXXXX  #修改超级用户名
sendcmd 1 DB set DevAuthInfo 0 Pass XXXXXX #修改超级密码
sendcmd 1 DB save

解决DNS劫持

电信固件和联通固件部分省份没注册ITMS服务器的话会劫持所有DNS请求的结果到192.168.1.1,使用如下命令手动欺骗ITMS注册结果,解决刷完后打开任意网页自动跳转LOID注册页面。

1
2
3
sendcmd 1 DB set PDTCTUSERINFO 0 Status 0
sendcmd 1 DB set PDTCTUSERINFO 0 Result 1
sendcmd 1 DB save

重启光猫后,就可以使用新的管理员用户名和密码登录光猫的管理页面了。

上海电信光猫配置

先去管理中填入Loid,笔者这里是需要桥接网络,并且IPTV仍然接在光猫上,配置网络:

网络设置

然后是IPTV:

IPTV设置
IPTV的Vlan设置
别动DNS来源

看直播频道会卡住的话,需要配置一下组播IGMP:

组播IGMP设置

至此,光猫的配置就完成了,可以拔掉网线,接上光纤,连接路由器,就可以正常上网,看IPTV了。

总结

目前电信的光猫固件版本是V2.0.0P2T3,已经无法通过开源工具解锁telnet,所以只能通过降级固件来解锁telnet。还好没有堵上光猫固件降级的隐藏开关,不然可能要拆机用TTL刷机了。在此感谢恩山的大佬们,感谢开源工具的作者们,在此记录一下折腾的过程,以备后用(希望不会用到),希望对大家有所帮助。