引言

今年回家发现家里宽带免费升到了千兆,电信给换了一台 烽火 HG5582A 10G 光猫。

硬件参数

这机器的底子相当不错,搭载飞思灵 FSL61167D 处理器(4 核 A53 + 8 核 NPU),配备 512MB DDR4 RAM 和 256MB Flash ROM,接口给了一个 2.5G WAN、2 个千兆 LAN、1 个 IPTV、1 个 TEL 电话口,纯粹的光猫没有 Wi-Fi,善!

功耗约在 4W 左右,即便在夏天,外壳摸着也只是微温。

根据省份,电信千兆以上宽带免费换,全新价格在 200 多左右,在小黄鱼大概 40 块钱左右就能捡漏,性价比不错,不过要注意地区是否支持。

不过换了新光猫后,前几年弄的路由器桥接拨号自然失效了,NAT 凭空多了一层,IPv6 也因为光猫防火墙成了摆设。折腾了一晚,参考了恩山论坛的不少技术帖,总算搞定,把过程记录下来供参考。

准备工作

  • 清场工作:趁家人熟睡关掉路由器,以免操作中断网被「抓包」
  • 物理取证:翻转光猫,记下背面的默认用户名、密码以及 ONU MAC 地址后 6 位(去掉连字符)
  • 连线:用网线将电脑直连光猫 LAN 口。
  • 环境准备:在 Windows 中开启 Telnet 客户端功能。

恢复出厂设置

现在电信的光猫超管密码多是随机下发的,难以直接获取。但烽火光猫有个「特性」:在恢复出厂设置后且尚未下发配置前,超管密码会重置为初始默认值。

访问管理后台 http://192.168.1.1:8080 使用普通用户登录:

  • 用户名 useradmin
  • 密码可见于光猫背面

特别提醒:务必先备份 宽带识别码 (LOID),这是后续恢复网络的唯一凭证!

backup-loid.webp

随后拔掉光纤,进入设备管理页面,执行恢复开箱状态

factory-reset.webp

静候两分钟,等待光猫重启完成。

restart.webp

超管登录

重启完成,再次访问 http://192.168.1.1:8080,此时,传说中的电信默认超管已经「门户大开」:

  • 用户名telecomadmin
  • 密码nE7jA%5m

使用以上凭据登录,顺利进入超管后台

login-success.webp

开启 Telnet

恩山论坛的大神们提供了三种思路,我尝试了后两种。

方法一:修改 JS 注入请求

参考原帖: 烽火光猫新版开 telnet 超密

首先登录超管账号,随后在新标签页打开 http://192.168.1.1:8080/html/upnp.html。按下 F12 切换到资源选项卡,定位到 upnp.js

modified-upnpjs.webp

替换 saveApply 函数为:

function saveApply() {
    var postdata = {
        // ftp: 0,
        telnet: 1,
        // dnsrelay: 1,
        // portal: 0,
        action: "telnet"
        // terminal_number: 255,
    };
    postdata.sessionid = sessionidstr; // sessionidstr已经在其他地方定义
    XHR.post("set_services", postdata, initPage);
    showOrHideLoadingWindowFromIframe("show");
}

Ctrl + S 保存更改,随后点击 UPnP 页面的保存按钮,此时神秘的 Telnet 就会启用。

save-js.webp

很遗憾,这个方式对我完全无效。

方法二:控制台构造请求

参考原帖: HG5582A/HG5382A 固化 Telnet 与关闭插件教程

这种方法更直接。登录超管账号后,按下 F12 进入控制台,执行下面代码构造一个 POST 请求

function loadScript(url, callback) {
    var script = document.createElement('script');
    script.src = url;
    script.async = false;
    script.onload = callback;
    document.head.appendChild(script);
}
loadScript('/plugins/jquery.min.js', function() {
    loadScript('/js/util.js', function() {
        loadScript('/js/upnp.js', function() {
            var postdata = new Object();
            postdata.action = "telnet";
            postdata.telnet = 1;
            postdata.sessionid = sessionidstr;
            XHR.post("set_services", postdata, initPage);
            //showOrHideLoadingWindowFromIframe("show");
        });
    });
});

如果正常没有报错,此时 Telnet 就启用成功了。

enable-telnet.webp

该方法对我有效。

Telnet 连接

万事俱备,打开终端使用 Telnet 连接

telnet 192.168.1.1
  • 用户名 telnetadmin
  • 密码 FH-nE7jA%5m

密码会因地区差异而有所不同,上面的密码确认适合浙江/安徽电信。若提示密码错误,可以尝试下面密码组合,应该适配大多数地区。

# FH-nE7jA%5m + ONU MAC 后 6 位
# 示例:若 MAC 后 6 位为 1A2B3E
# 则,密码为
FH-nE7jA%5m1A2B3E

连接成功,切换到超级用户

su

超级用户密码

Fh@ + ONU MAC 后 6 位
# 示例:若 MAC 后 6 位为 1A2B3E
# 则 su 用户密码为
Fh@1A2B3E

telnet-login.webp

修改 Telnet 密码,下发配置后不会被覆盖

# yourStrongPWD 是你 Telnet 新密码
cfg_cmd set InternetGatewayDevice.DeviceInfo.X_CT-COM_TeleComAccount.Password yourStrongPWD

密码里有些特殊字符如 $会被截断,修改后一定要验证一下

cfg_cmd showvalue InternetGatewayDevice. 1 | grep -i 'password'

注册并下发配置

插上光纤,访问 http://192.168.1.1:8080 点击 设备注册,输入之前记录的宽带识别码 (LOID)

loid-register.webp

等待配置下发完成,光猫会自动重启,等待约 2 分钟

issuing-configuration.webp

完成后,宽带、IPTV 和语音电话应该都能正常使用了。但是随着配置下发,超管密码又被系统顺手改成了随机值 😅。

禁止远程控制

尽管超管密码又成为了谜题,但此前开启的 Telnet 权限依然可用,再次使用 Telnet 连接并切换到超级用户

# 管理后台允许删除 tr069 连接
cfg_cmd set InternetGatewayDevice.X_FH_HttpdConf.isTr069Modifiable 1
# 停止 tr069 进程
cfg_cmd set InternetGatewayDevice.ManagementServer.EnableCWMP 0
# 关闭 IMTS 上报
cfg_cmd set InternetGatewayDevice.ManagementServer.PeriodicInformEnable 0
# 修改 RMS 认证为环回地址
cfg_cmd set InternetGatewayDevice.ManagementServer.URL http://127.0.0.1/
# 关闭IPv6防火墙
cfg_cmd set InternetGatewayDevice.X_FH_FireWall.IPv6FirewallEnable 0
# 更改超管密码 yourStrongPWD 为新的超管密码
cfg_cmd set InternetGatewayDevice.DeviceInfo.X_CT-COM_ServiceManage.TelnetPassword yourStrongPWD

光猫改桥接

再次登录 http://192.168.1.1:8080,进入网络配置,找到 TR069 连接删除

del-tr069.webp

2 INTERNET R VID 41 连接模式由 路由 改为 桥接,点击保存

bridge-mode.webp

注意:

改完桥接后,电脑会立即与光猫断开连接,且常规情况下无法再访问光猫后台和 Telnet 连接 😂。不过目的已经达到,现在光猫只负责转换信号,电信也无法再随意下发配置。

小技巧: 如果你的路由器支持 SSH 登录,其实可以通过静态路由或地址转换再次访问光猫。具体可以参考: 【通杀所有】路由器访问光猫(桥接模式)

最后,在路由器后台设置 PPPoE 拨号 即可上网;IPv6 建议设置为 Native 模式,享受真正的公网畅连。

测试效果

网速测试

在不同测速平台进行了轮番测试发现:IPv4 的表现和桥接前几乎无异,最明显的提升在于 IPv6,从之前的 600Mbps 限制直接拉满,恢复到了正常的千兆水平。

NAT 类型测试

IPv4 公网 IP 成功从桥接前的端口限制型变为 FullCone 全锥形 NAT

ipv4-fullcone.webp

IPv6 公网 IP 为 OpenInternet 开放式连接,实测在本地监听服务端口,远程服务器能直接访问。

ipv6-openinternet.webp

目前网络唯一的瓶颈,只剩下 Redmi AX6 这台老路由了。5GHz 频段尚能应战,但 2.4GHz 过低的速率在千兆宽带面前确实有些力不从心。

奇奇怪怪的各种限制,中间不知道反复重置了多少次。最糟心的莫过于改完桥接后进不去后台,有时还不得不捅光猫菊花来重置,从昨晚 11 点开始弄,弄完已经是凌晨 3 点半了🤗。

bt-download.webp

这波折腾终归是值的,BitTorrent 下载终于如获新生,下载速度不再感人。 至于其他的,等 AI 泡沫完,内存硬盘回到正常价格,再考虑组 NAS 吧😂。

鸣谢