CodingBox Q&A Ask question

UDM-Pro的SFP+笼子里插了FS的GPON ONU棒:无法访问它的管理IP来写入序列号

Asked Active Viewed 93 AI translation from English
3

家庭环境,我想在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

Accepted answer

拦着你的是两件不相关的事,而且都不是模块本身的问题。

第一,寻址。这个SFP笼子在UDM-Pro上是一个普通接口,编号是面板上显示的端口号减一,所以端口10对应eth9。给网关一个落在模块所在网段内的地址,并确保回复是从这个地址发出的:

ip addr add dev eth9 local 192.168.1.2/24
iptables -t nat -A POSTROUTING -o eth9 -d 192.168.1.0/24 -j SNAT --to 192.168.1.2

之后从网关shell里,192.168.1.10就会响应了。

第二,握手。这类棒的固件年头够老,密钥交换列表里只到一些老算法,所以你得显式指定一个:

ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 ONTUSER@192.168.1.10

进去之后,用set_serial_number AVMGXXXXXXXX写入ISP的序列号,再用sfp_i2c -i7 -s克隆设备型号字符串。重启这根棒,确认到底写没写进去:

fw_printenv | grep nSerial

两点要提醒。这整套做法都不是官方支持的配置——你是在一台设备上手动加地址和NAT规则,把它当成编程会话期间的临时布线,并且在线路认证成功之前先留着旧CPE别扔。另一半提醒是关于速率的:这个平台自己不会同意2.5Gbit,所以哪怕一根棒申报支持2.5G,最终协商结果也只会落在1G或10G。如果你完全不想动网关,替代方案是在另一台有可路由SFP端口的设备上先把这根棒编好程,再挪过来。

4 IndonesiaedgepilotID Show original (English) AI translation

网关自己管那个笼子叫什么?这台设备上SFP端口都是普通接口,但命名和面板上印的编号对不上,所以很容易把包打到一个根本不是那个笼子的接口上——从shell里看,那正好就是你遇到的样子:一个会话卡在那里,对面什么都没有。

把网关shell里的接口列表贴出来。一旦搞清楚哪个接口对应那个端口,寻址这一半就是简单的事了。

0 GermanycoreadminDE Show original (English) AI translation

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给的套餐来说完全够用。

3 ChinasfpnodeCN Show original (English) AI translation

同样的活,换了一套设备,而序列号这块正是最容易翻车的地方。我当时是用ritool把一个Calix GigaPoint 801Gv2的身份搬到一根G-010S-A棒上:

ritool set MfrID 3720
ritool set G984Serial 10010470
ritool set YPSerialNum 10010470

ONT的序列号是372010010470,但这个模块回读出来的是

read_sn_from_RI sn is: 3720101470

少了一个零。原因在于字段布局:GPON序列号是8个字节,前四个字节是厂商ID的ASCII字符(3720按字面读成四个字母),后四个字节把数字部分打包成十六进制。像10010470这样的十进制尾巴不是逐位写进去的,这就是为什么回读会丢一个字符。

所以在宣布成功之前,先搞清楚你的运营商到底是按什么给ONT登记的——序列号,还是SLID/注册ID。只写序列号,有时候并不是他们真正核对的东西。

4 SpainoptictechES Show original (English) AI translation
Log in to comment. Log in