UDM-Pro的SFP+笼子里插了FS的GPON ONU棒:无法访问它的管理IP来写入序列号
家庭环境,我想在Cosmote的GPON线路上甩掉ISP路由器。思路是让光纤直接接进UDM-Pro,让这根棒充当ONU的角色,但运营商只有在收到旧CPE的12位序列号和设备型号字符串的时候才会接受这个会话,所以我得进到模块里面去写这两样东西。
- Ubiquiti UDM-Pro,棒插在SFP+端口10
- 带MAC SFP的FS GPON ONU棒,货号133619
- 从墙上插座过来的SC/APC转SC/APC跳线
- 旧CPE还放在桌上,作为序列号和型号字符串的参照
我的问题比克隆本身还基础:我根本连不上这个模块。从网关shell里,它的管理地址完全没有响应。
ssh root@10.10.10.1
# then, from the gateway, with the stick in port 10
ssh ONTUSER@192.168.1.10
第二条命令就那么卡着,直到超时放弃。没有banner,没有连接被拒绝,什么都没有。
我已经做过的事:
- 重插了棒,换了跳线,模块能正常上电,LED行为正常
- 确认UDM-Pro上没有别的东西在用192.168.1.0/24,我的局域网在另一个网段
- 考虑过给这个笼子专门建一个管理VLAN,但为了写一次数据搞这么多配置有点小题大做
有没有办法直接从UDM-Pro的shell访问这个SFP笼子,让我能登录到棒里写序列号和设备ID,而不用为它专门搭一个VLAN?
Comments 4
拦着你的是两件不相关的事,而且都不是模块本身的问题。
第一,寻址。这个SFP笼子在UDM-Pro上是一个普通接口,编号是面板上显示的端口号减一,所以端口10对应eth9。给网关一个落在模块所在网段内的地址,并确保回复是从这个地址发出的:
之后从网关shell里,192.168.1.10就会响应了。
第二,握手。这类棒的固件年头够老,密钥交换列表里只到一些老算法,所以你得显式指定一个:
进去之后,用
set_serial_number AVMGXXXXXXXX写入ISP的序列号,再用sfp_i2c -i7 -s克隆设备型号字符串。重启这根棒,确认到底写没写进去:两点要提醒。这整套做法都不是官方支持的配置——你是在一台设备上手动加地址和NAT规则,把它当成编程会话期间的临时布线,并且在线路认证成功之前先留着旧CPE别扔。另一半提醒是关于速率的:这个平台自己不会同意2.5Gbit,所以哪怕一根棒申报支持2.5G,最终协商结果也只会落在1G或10G。如果你完全不想动网关,替代方案是在另一台有可路由SFP端口的设备上先把这根棒编好程,再挪过来。
网关自己管那个笼子叫什么?这台设备上SFP端口都是普通接口,但命名和面板上印的编号对不上,所以很容易把包打到一个根本不是那个笼子的接口上——从shell里看,那正好就是你遇到的样子:一个会话卡在那里,对面什么都没有。
把网关shell里的接口列表贴出来。一旦搞清楚哪个接口对应那个端口,寻址这一半就是简单的事了。
eth9正是它,端口10减一。加上地址和SNAT规则之后,192.168.1.10第一次就响应了,老式密钥交换选项是另一半关键:没有那个开关,我的客户端在握手阶段就放弃了,加上之后立刻拿到了ONTUSER的提示符。
用
set_serial_number AVMGXXXXXXXX写了序列号,用sfp_i2c -i7 -s克隆了型号字符串,重启,fw_printenv | grep nSerial回显的正是我设的那个值。线路几分钟后就认证成功了,旧CPE现在已经拔掉了。有一件事是用实际经历确认的:端口最终是以1G起来的,正如之前提醒的那样,这个笼子不支持2.5G。对我这边ISP给的套餐来说完全够用。
同样的活,换了一套设备,而序列号这块正是最容易翻车的地方。我当时是用ritool把一个Calix GigaPoint 801Gv2的身份搬到一根G-010S-A棒上:
ONT的序列号是372010010470,但这个模块回读出来的是
少了一个零。原因在于字段布局:GPON序列号是8个字节,前四个字节是厂商ID的ASCII字符(3720按字面读成四个字母),后四个字节把数字部分打包成十六进制。像10010470这样的十进制尾巴不是逐位写进去的,这就是为什么回读会丢一个字符。
所以在宣布成功之前,先搞清楚你的运营商到底是按什么给ONT登记的——序列号,还是SLID/注册ID。只写序列号,有时候并不是他们真正核对的东西。