破解华为HG8346R/HG8347R光猫 启用有线桥接

修订记录

本文兼顾多款光猫型号,并兼容Windows、OSX/Linux,内容略杂,请按目录跳跃浏览。

为何破解

  1. 联通定制版无线限制了无线最多5个客户端,根本无法满足日常使用。
  2. 无线实时性差,不支持5GHz频段,带宽也不高,虽然理论能到300Mbps,实际差得远。
  3. 定制版限制太多,很多设置作为普通用户无法修改,甚至连无线SSID都强制以CU_开头,日了狗。

由于定制版无法开启WAN口桥接,所以需要恢复光猫原生系统并使用管理员账户设置。(WAN口桥接模式,其实就是将光猫作为交换机使用,转发二层数据帧比路由三层IP包快的多,减少性能损耗。)

准备工作

本文适用于(北京)联通定制版的华为HG8346RHG8347R光纤接入终端。软件版本(可以登录web界面在“状态”中找到):V3R015C10S109, V3R016C10S135, V3R017C10S103,后文使用R15, R16, R17指代。

需要下载华为ONT维护工具包用于开启维护模式和加解密配置文件,并开启tftp服务器用于备份路由器配置。可以在我的Google DriveMega网盘下载。其中ONT工具shasum: beb12c70bf2871de4254176be42b6748176a6471

如果软件版本为R17,需要额外下载固件包:Google DriveMega。shasum: 7029508ec8f7e6a78660892557b8acdb41317803

Windows

工具包里带了tftpd32tftpd64程序,直接运行就可以启动tftp服务器。

另外建议下载putty.exe运行telnet命令,比如telnet 192.168.1.1,那么Host Name (or IP address)填写192.168.1.1,Connection Type选择Telnet,点击”Open”即可。

OSX / Linux

华为的维护工具包是Windows程序,需要安装wine模拟器:

# on OSX
brew install wine
# on Ubuntu Linux
sudo apt-get install wine

不过tftp服务器不能直接用wine模拟,所以需要单独安装。建议使用Python的开源实现,我用的TFTPy

sudo pip install TFTPy

只要三行代码就能启动一个TFTP服务器了:

import tftpy

server = tftpy.TftpServer('./tftp-dir')
server.listen('0.0.0.0', 69)

或者cd到工具包目录,sudo python tftpd.py启动tftp服务

OSX用户不要使用系统自带的tftpd服务,基于tftpd的GUI版软件也不行(比如tftpserver),因为要想上传文件(put),必须更改tftpd的启动参数(-s),但OS X EI Capitan禁用了编辑服务配置文件的权限,除非重启进入Recovery模式。另外我尝试直接运行tftpd也没戏,折腾个把小时还不如3行Python代码来的简单。

Let’s hack!

  1. 拔出光纤,电脑用网线连到光猫LAN1口,我们假定电脑获取的IP是192.168.1.2
  2. 浏览器进入192.168.1.1,按照光猫背面的用户名密码登录,在网络中关闭无线功能。
  3. 重启光猫(光猫后部有按钮开关),启动完成后,光猫的电源灯常亮,LOS灯红色闪烁(表示未接入光纤),LAN1灯闪烁(表示有数据流量)。

R17版本:降级固件进入维护模式

R17版本必须降级固件到R16才能成功进入维护模式,直接尝试开启维护模式会发现所有灯闪烁几遍后全灭,光猫无响应(重启恢复)。

  1. 运行华为ONT组播版本配置工具.exe(OSX执行wine 华为ONT组播版本配置工具.exe,下文不再赘述),选择“升级”,选择计算机本地网卡192.168.1.2,点击“浏览”选择刚刚下载的hg8347r16-rom.bin,其他参数不变。
  2. 点击“启动”,这时光猫上所有灯会一起闪烁,刷入过程大概需要8分半。等到所有灯常亮,点击停止(工具下方的进度条没有任何意义,不用管它)。
  3. 重启光猫,完成后便已开启telnet服务。
  4. 浏览器登录http://192.168.1.1,在安全设置中禁用防火墙,以防telnet无法连接。

R15, R16版本:开启维护模式

  1. 运行华为ONT组播版本配置工具.exe,选择本地网卡192.168.1.2,其他保持默认,点击启动按钮。
  2. 耐心等待2分钟左右,如果所有灯常亮,说明成功开启了维护模式。点击停止并关闭工具。
  3. 重启光猫,完成后便已开启telnet服务。

备份配置

  1. 打开终端或命令行:

    telnet 192.168.1.1
    
    root #(Login用户名)
    admin #(密码不回显)
    
  2. 确保本机tftp服务已开启,在telnet中执行:

    backup cfg by tftp svrip 192.168.1.2 remotefile hw_ctree.xml
    

    如果命令执行成功,你设定的tftp目录下(tftp-dir)便有了hw_ctree.xml配置文件了。 如果遇到错误ERROR: command is not existed,请参照评论中贴出的方法导出配置。

  3. 运行华为光猫配置文件加解密工具.exe,输入文件选择hw_ctree.xml,输出文件设置为hw_ctree.dec.xml.gz,解密。
  4. 解压hw_ctree.dec.xml.gz(OSX:gzip -d hw_ctree.dec.xml.gz)得到hw_ctree.dec.xml

恢复华为出厂模式

  1. 回到telnet

    su
    shell
    restorehwmode.sh # 可以输入?查看所有可用命令
    exit
    reset
    
  2. 等待路由器重启完成(如果不成功就直接按开关重启)。这时候光猫恢复到了出厂模式,将电脑设置为静态IP192.168.100.2,子网掩码255.255.255.0,网关192.168.100.1,浏览器访问http://192.168.100.1,就可以看到华为默认的登录界面了。
  3. 用户名telecomadmin密码admintelecom登录,在系统工具栏,导出当前配置留作备份。

导入配置

简单粗暴式:备份并编辑hw_ctree.dec.xml,搜索X_HW_WebUserInfoInstance,修改为<X_HW_WebUserInfoInstance InstanceID="1" UserName="用户名" Password="密码" UserLevel="0" Enable="1" ModifyPasswordFlag="0" PassMode="0"/>即可设置管理员账户。

小心翼翼式:备份并编辑刚刚导出的hw_ctree.xml,把hw_ctree.dec.xml中的<WANDevice NumberOfInstances="1">...</WANDevice>, <LANDevice NumberOfInstances="1">...</LANDevice>, <VoiceService NumberOfInstances="1">...</VoiceService>, <X_HW_IPTV....../>的节点内容完整替换过来。并修改X_HW_WebUserInfoInstance中的用户属性(UserLevel="0"表示管理员用户,PassMode="0"表示明文密码)

将修改后的配置在浏览器中重新导入,等待光猫重启即可生效。将本机网络重新设为DHCP,待光猫重启完成后即可登录http://192.168.1.1进行后续设置。

设置WAN桥接(交换机模式)

  1. 进入WAN设置,将第二个 2_INTERNET_B_VID_3961的WAN类型改为桥接WAN
  2. 关闭WLAN,防火墙等无用功能
  3. 将光猫LAN1口接到自己的无线路由器WAN口上,在无线路由器中配置PPPoE拨号即可。

IPTV

如果要使用联通的IPTV机顶盒,可以重新打开无线WLAN1,并将WAN设置中的IPTV连接端口绑定到SSID1,这样机顶盒就可以使用光猫的无线信号观看IPTV了。

宽带测速

HG8346R

参考知乎导购网在京东249入了一台网件R6220SPEEDTEST测速,下行可以到93.28Mbps:

speedtest结果: 93.28Mbps

华为HG8346R的LAN口都是百兆网卡,除去包头和包间距的损耗,峰值也就94Mbps,这个测速足够满意了。另外联通使用单模光纤入户,理论最大速率155Mbps,换千兆猫意义也并不大,所以就这么用着吧。

HG8347R

联通去年给自动升级到了200M带宽,升级光猫后LAN1口可到千兆,下行能到186.45Mbps: 200M测速: 186.45Mbps

美滋滋~

致谢

本文参考了以下教程,在此感谢作者的无私分享:

Table of Contents