FS GPON ONU stick cắm trong cage SFP+ của UDM-Pro: không cách nào vào được IP quản lý để ghi serial
Setup ở nhà, mình đang tìm cách loại bỏ router của ISP trên đường GPON của Cosmote. Ý tưởng là kéo sợi quang thẳng vào UDM-Pro và để cái stick làm nhiệm vụ ONU, nhưng nhà mạng chỉ chấp nhận phiên kết nối nếu trình được serial 12 ký tự và chuỗi model của CPE cũ, nên mình phải chui vào trong module để ghi cả hai giá trị đó.
- Ubiquiti UDM-Pro, stick cắm ở cổng SFP+ số 10
- FS GPON ONU stick với MAC SFP, mã hàng 133619
- Dây nhảy quang SC/APC sang SC/APC từ ổ cắm trên tường
- CPE cũ vẫn để trên bàn làm tham chiếu cho serial và chuỗi model
Vấn đề của mình còn cơ bản hơn cả việc clone: mình không tài nào chạm được vào module. Từ shell của gateway, không có gì trả lời ở địa chỉ quản lý của nó cả.
ssh root@10.10.10.1
# then, from the gateway, with the stick in port 10
ssh ONTUSER@192.168.1.10
Lệnh thứ hai cứ đứng im ở đó cho tới khi bỏ cuộc. Không banner, không bị từ chối kết nối, không gì cả.
Những gì mình đã thử:
- rút ra cắm lại stick và đổi dây nhảy quang, module vẫn lên nguồn và đèn LED hoạt động bình thường
- kiểm tra chắc chắn không có gì trên UDM-Pro đang dùng 192.168.1.0/24, LAN của mình nằm ở subnet khác
- có nghĩ tới việc dựng riêng một VLAN quản lý cho cái cage này, nhưng làm cả đống việc chỉ để ghi một lần thì hơi quá
Có cách nào định địa chỉ trực tiếp cho cage SFP từ shell của UDM-Pro để mình đăng nhập vào stick và ghi serial với device ID, mà không phải dựng hẳn một VLAN riêng cho việc này không?
Comments 4
Có hai thứ riêng biệt đang cản đường bạn, và không cái nào trong số đó là module cả.
Thứ nhất, chuyện địa chỉ. Cage SFP là một interface bình thường trên UDM-Pro, được đánh số bằng số cổng hiển thị trừ đi 1, nên cổng 10 chính là eth9. Gán cho gateway một địa chỉ nằm trong subnet của module, và đảm bảo các phản hồi được gửi đi từ chính địa chỉ đó:
Sau đó 192.168.1.10 sẽ trả lời từ shell của gateway.
Thứ hai, chuyện bắt tay (handshake). Firmware trên các stick này đủ cũ để danh sách thuật toán trao đổi khóa của nó chỉ dừng ở các thuật toán legacy, nên phải chỉ định tường minh một thuật toán:
Vào được rồi thì ghi serial của ISP bằng
set_serial_number AVMGXXXXXXXX, và clone chuỗi model bằngsfp_i2c -i7 -s. Reboot stick rồi kiểm tra xem thực sự cái gì đã được lưu lại:Hai điều cần lưu ý. Toàn bộ việc này không phải là một cấu hình được hỗ trợ chính thức: bạn đang tự tay thêm một địa chỉ và một rule NAT vào một thiết bị appliance, nên cứ coi đây là đấu nối tạm thời cho phiên ghi chương trình, và giữ CPE cũ lại cho tới khi đường line xác thực được. Nửa còn lại của cảnh báo là về tốc độ: 2.5 Gbit không phải là thứ mà nền tảng này tự chấp nhận, nên ngay cả một module quảng cáo 2.5G cũng sẽ bị ép về 1G hoặc 10G. Nếu không muốn đụng vào gateway chút nào, cách khác là lập trình cái stick trên một máy khác có cổng SFP định tuyến được, rồi chuyển nó sang sau.
Gateway tự gọi cái cage đó là gì? Trên máy này, các cổng SFP là những interface bình thường, nhưng cách đặt tên không khớp với số in trên mặt trước, nên rất dễ đẩy gói tin ra một thứ hoàn toàn không phải cái cage đó - và từ trong shell thì nhìn y hệt những gì bạn đang gặp: một phiên kết nối đứng im, đầu kia chẳng có gì.
Dán danh sách interface từ shell của gateway lên đây. Khi đã rõ interface nào ứng với cổng đó, phần địa chỉ hóa coi như xong một nửa dễ rồi.
Đúng eth9 luôn, cổng 10 trừ 1. Địa chỉ cộng với rule SNAT làm cho 192.168.1.10 trả lời ngay lần đầu, và tùy chọn thuật toán trao đổi khóa kiểu cũ là nửa còn lại của vấn đề: thiếu cờ đó thì client của mình bỏ cuộc ngay giữa chừng handshake, có nó vào thì lấy được prompt ONTUSER ngay lập tức.
Ghi serial bằng
set_serial_number AVMGXXXXXXXX, clone chuỗi model bằngsfp_i2c -i7 -s, reboot, vàfw_printenv | grep nSerialtrả lại đúng giá trị mình đã đặt. Vài phút sau đường line xác thực thành công, và CPE cũ giờ đã được rút ra.Có một điều được xác nhận theo cách khó nhằn: cổng lên ở 1G, đúng như đã cảnh báo về chuyện 2.5G trên cái cage này. Vậy là ổn với gói dịch vụ mà ISP cấp cho mình ở đây.
Cùng kiểu việc, khác linh kiện, và cái serial là chỗ mọi thứ trở nên khó chịu. Mình đang chuyển identity của một con Calix GigaPoint 801Gv2 sang stick G-010S-A bằng ritool:
Serial của ONT là 372010010470, nhưng module ghi log lại là
thiếu mất một số 0. Lý do nằm ở cách bố trí trường dữ liệu: serial GPON dài 8 byte, 4 byte đầu chứa vendor ID dưới dạng ký tự ASCII (3720 được đọc trực tiếp thành bốn chữ cái), còn 4 byte cuối chứa phần số được đóng gói dưới dạng hex. Một đuôi thập phân như 10010470 không thể nhét vừa từng chữ số một, đó là lý do phần echo lại bị mất một ký tự.
Nên trước khi ăn mừng, kiểm tra xem nhà cung cấp của bạn đăng ký ONT theo kiểu gì ngay từ đầu: serial hay SLID / registration ID. Chỉ ghi mỗi serial không phải lúc nào cũng là thứ họ đối chiếu.