Auteur Sujet: La fibre Orange à 2Gbps, sur un routeur MikroTik 10Gbps CCR2004, via un ONT SFP+  (Lu 952515 fois)

0 Membres et 3 Invités sur ce sujet

Aize147

  • Abonné Orange Fibre
  • *
  • Messages: 985
  • Orange FTTH 2G/800M - Free FTTH 8G/700M
La fibre Orange à 2Gbps, sur un routeur MikroTik 10Gbps CCR2004, via un ONT SFP+
« Réponse #2616 le: 26 novembre 2021 à 20:25:55 »
Je n'ai par contre pas vu de commande dans la liste permettant le changement du HardwareVersion.

Le HardwareVersion étant vérifié sur les OLT Alcatel/Nokia.

benj06

  • Abonné Orange Fibre
  • *
  • Messages: 61
  • Nice (06)
La fibre Orange à 2Gbps, sur un routeur MikroTik 10Gbps CCR2004, via un ONT SFP+
« Réponse #2617 le: 27 novembre 2021 à 13:08:45 »
Bon .... J'y suis presque

Rappel: macchiatobin single shot + G-010S-P en firmware d'origine stock (bien vieux).

ONU détecté par la macchiatobin en 2.5: OK (kernel maison 5.15)
Ping / SSH sur le 192.168.1.10: OK
Modification de udhcpc (Busybox) afin d'envoyer les messages avec la COS priority 6: OK (+vérif en tcpdump) (openwrt compil maison 21.02)

Par contre... chose inexplicable... :
ONU dans mon switch Ubiquiti:
errorcode=0 curr_state=5 previous_state=4 elapsed_msec=4294721672
ONY dans la macchiatobin:
errorcode=0 curr_state=1 previous_state=0 elapsed_msec=4294716076
Quelqu'un a une idée ? Un problème d'alim pas assez puissante ? Courant parasité ?

benj06

  • Abonné Orange Fibre
  • *
  • Messages: 61
  • Nice (06)
La fibre Orange à 2Gbps, sur un routeur MikroTik 10Gbps CCR2004, via un ONT SFP+
« Réponse #2618 le: 27 novembre 2021 à 18:23:48 »
Bon...

Ca marche enfin, meme si j'arrive pas a dépasser le 1500 mbps.

Je pense cependant que le problème vient de mon interface usb-c 2.5Gbps sur mon Mac. Je réessayerai a une heure plus cool voir si j'arrive a aller plus haut.

Pour info, une fois flashé en carlitox, le G-010S-P a accepté de passer en state 5 dans la macchiato. J'ignore encore pourquoi...

Résumé de toute la manip:
- G-010S-P en Carlito
- Macchiato Single shot, kernel 5.15.0 maison, Uboot maison, OpenWRT 21.02 maison
- Module SPF ethernet 10GBPS
- USB-C 2.5GBPS sur mon Mac

proap

  • Abonné MilkyWan
  • *
  • Messages: 568
La fibre Orange à 2Gbps, sur un routeur MikroTik 10Gbps CCR2004, via un ONT SFP+
« Réponse #2619 le: 27 novembre 2021 à 20:37:19 »
Je me suis rendu compte que personne n’avait pas encore fait un tuto de comment modifier un firmware directement à partir d’une extraction de la mémoire. Pour les ONU avec accès root natif, ça a peu d’intérêt parce que de toute façon a une shell avec tous les droits. Mais il arrive souvent de ne pas avoir accès root ou même telnet/ssh. Et c’est pour ces cas que ce tuto peut être utile.
Une autre raison est celle de maîtriser et comprendre ce qu’on fait quand on installe un firmware ‘rooté’ par quelqu’un d’autre. Les motivations sont diverses : ne faire que confiance à soit même, comprendre ce qu’on fait, se former, …


Préalables:
Installer binwalk
Installer squashfs-tools (pour les distros basées sur Arch. Je ne suis pas certain pour les distros Debian mais je pense que c'est pareil...)
Il faut bien évidement récupérer les images/firmwares que l'on souhaite modifier. Sur un ONU avec accès root c'est très facile mais ça se complique pour un MA5671A, par exemple. Si on a déjà l'accès root, ce tutoriel perd son intérêt... Il faut donc un bootloader débloqué et un accès en port de série pour extraire les firmwares vierges. Ou alors faire confiance à quelqu'un pour le faire à notre place ;)

On utilise un outil très pratique, binwalk. Il permet d'analyser la structure d'un fichier binaire et il cherche automatiquement des partitions connues. On peut également l'utiliser pour extraire ces partitions.

[andrep@plaptop V8R017C00S200]$ binwalk V8R017C00S200_mtd5_stock.img

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             uImage header, header size: 64 bytes, header CRC: 0xF58607E9, created: 2016-08-11 18:11:26, image size: 1207781 bytes, Data Address: 0x80002000, Entry Point: 0x80002000, data CRC: 0x6381A0A3, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: "SFP_7.5.3"
64            0x40            LZMA compressed data, properties: 0x5D, dictionary size: 8388608 bytes, uncompressed size: 3510372 bytes
1207845       0x126E25        Squashfs filesystem, little endian, version 4.0, compression:xz, size: 2148294 bytes, 888 inodes, blocksize: 262144 bytes, created: 2016-08-11 18:11:28
3407872       0x340000        JFFS2 filesystem, big endian


On voit le bloc de mémoire qui nous intéresse, en squashFS (compression xz et un blocksize de 262144 bytes)

On doit ensuite isoler ce bloc de mémoire afin de l'extraire et le modifier.
Pour le faire il y a plusieurs solutions. J'utilise dd de façon très basique, je suis loin d'être un linux god! Mes excuses aux maîtres qui vont trouver que je suis bête et que je pouvais faire le même avec une seule commande :)

[root@plaptop WORK]# dd if=V8R017C00S200_mtd5_stock.img bs=1 skip=0 count=1207845 of=0_header.bin
1207845+0 records in
1207845+0 records out
1207845 bytes (1,2 MB, 1,2 MiB) copied, 2,21821 s, 545 kB/s

Explications:
if=V8R017C00S200_mtd5_stock.img -> fichier d'entrée
bs=1 -> on utilise un bloc size de 1 byte, l'unité la plus petite possible
skip=0 -> dd commence à lire à partir de la position '0', soit le début du fichier
count=1207845 -> dd va effectuer l'opération sur 1207845 bytes, soit jusqu'au début du bloc avec le squashFS
of=0_header.bin -> fichier de sortie

proap

  • Abonné MilkyWan
  • *
  • Messages: 568
La fibre Orange à 2Gbps, sur un routeur MikroTik 10Gbps CCR2004, via un ONT SFP+
« Réponse #2620 le: 27 novembre 2021 à 20:37:42 »
Ensuite on va extraire le bloc correspondant au squashFS. Cette fois-ci on commence à lire à partir du 1207845 byte et on compte (3407872-1207845=2200027) bytes.
[root@plaptop WORK]# dd if=V8R017C00S200_mtd5_stock.img bs=1 skip=1207845 count=2200027 of=1_squashfs.bin
2200027+0 records in
2200027+0 records out
2200027 bytes (2,2 MB, 2,1 MiB) copied, 3,73241 s, 589 kB/s


Enfin, on termine par extraire tout ce qui vient après le bloc squashFS. Il n'est pas nécessaire de définir la variable 'count' parce que de cette façon, dd ira jusqu'à la fin.
[root@plaptop WORK]# dd if=V8R017C00S200_mtd5_stock.img bs=1 skip=3407872 of=2_tail.bin
4980736+0 records in
4980736+0 records out
4980736 bytes (5,0 MB, 4,8 MiB) copied, 9,7707 s, 510 kB/s



Maintenant la partie la plus sympathique.
On va extraire le bloc squashFS. Il est prudent de le faire avec des droits de SU.

[root@plaptop WORK]# binwalk -e -y squashfs --run-as=root --preserve-symlinks 1_squashfs.bin

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             Squashfs filesystem, little endian, version 4.0, compression:xz, size: 2148294 bytes, 888 inodes, blocksize: 262144 bytes, created: 2016-08-11 18:11:28

Explications:
-e : pour exécuter binwalk en mode extraction
-y squashfs : pour n'extraire que le squashfs. Ici ce n'est pas nécessaire parce qu'un a déjà isolé le bloc de mémoire squashfs
--run-as=root : pour éviter des erreurs parce qu'on exécute binwalk en mode root
--preserve-symlinks : binwalk n'effacera pas les symlinks si la destination n'existe pas. C'est dangereux parce qu'on pourra éventuellement se retrouver avec des symlinks qui pointent vers des fichiers dans notre root. Ce qui est bien le cas pour cette extraction... Si on n'utilise pas cette option, il aura des avertissements et notre nouveau firmware n'arrivera pas à booter (j'ai testé)

On peut désormais éditer les fichiers dont on a besoin. Dans mon cas je vais rooter le firmware, ce qui correspond à modifier le shell dans /etc/passwd pour passer de la minishell à /bin/ash
nano _1_squashfs.bin.extracted/squashfs-root/etc/passwd

proap

  • Abonné MilkyWan
  • *
  • Messages: 568
La fibre Orange à 2Gbps, sur un routeur MikroTik 10Gbps CCR2004, via un ONT SFP+
« Réponse #2621 le: 27 novembre 2021 à 20:37:58 »
On va recompresser le système de fichiers en utilisation mksquashfs. Les paramètres à utiliser sont ceux lus avec binwalk au début de ce tuto (blocksize et compression)
[root@plaptop WORK]# mksquashfs _1_squashfs.bin.extracted/squashfs-root/ 1_squashfs-root.bin -all-root -b 262144 -comp xz
Parallel mksquashfs: Using 8 processors
Creating 4.0 filesystem on 1_squashfs-root.bin, block size 262144.
[=============================================================================================================================================================================================================================|] 589/589 100%

Exportable Squashfs 4.0 filesystem, xz compressed, data block size 262144
compressed data, compressed metadata, compressed fragments,
compressed xattrs, compressed ids
duplicates are removed
Filesystem size 2113.21 Kbytes (2.06 Mbytes)
29.65% of uncompressed filesystem size (7126.96 Kbytes)
Inode table size 7124 bytes (6.96 Kbytes)
23.95% of uncompressed inode table size (29743 bytes)
Directory table size 8366 bytes (8.17 Kbytes)
48.87% of uncompressed directory table size (17120 bytes)
Number of duplicate files found 7
Number of inodes 888
Number of files 583
Number of fragments 17
Number of symbolic links 200
Number of device nodes 1
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 104
Number of ids (unique uids + gids) 1
Number of uids 1
root (0)
Number of gids 1
root (0)
   

On constate que le nouveau binaire est plus petit que l'original. Il faut impérativement ajouter des 'FF FF ...' à la fin pour avoir un fichier ayant la même taille.
La différence de taille entre les 2 fichiers est de 33243 bytes.
On va utiliser dd avec un pipe pour transformer autant de '0' en 'FF'

[root@plaptop WORK]# ls -la 1_squashfs*
-rw-r--r-- 1 root root 2200027 27 nov.  19:28 1_squashfs.bin
-rw-r--r-- 1 root root 27 nov.  20:08 1_squashfs-root.bin


[root@plaptop WORK]# dd if=/dev/zero bs=1 count=33243 | tr "\000" "\377" > padding.bin
33243+0 records in
33243+0 records out
33243 bytes (33 kB, 32 KiB) copied, 0,0463317 s, 717 kB/s


Et, pour finir, on concatène tout (l'ordre est importante):

[root@plaptop WORK]# cat 0_header.bin 1_squashfs-root.bin padding.bin 2_tail.bin > V8R017C00S200_mtd5_root.img
Et on vérifie que le firmware ancien a la même taille que le nouveau :
[root@plaptop WORK]# ls -la V8R017C00S200_mtd5_*
-rw-r--r-- 1 root root 8388608 27 nov.  20:14 V8R017C00S200_mtd5_root.img
-rw-r--r-- 1 root root 8388608 27 nov.  19:21 V8R017C00S200_mtd5_stock.img


Il ne reste qu’à flasher notre nouveau firmware cuisiné à la maison. Il est prudent d’avoir une interface UART-TTL de secours parce qu’il est très facile de faire quelque chose qui pourra soft-brick l’ONU. Surtout lors des premiers essais… Il est aussi intéréssant de s’assurer au préalable du flash que l’autre partition contient une image valide et fonctionnelle. De cette façon il suffira de se connecter en port de série et de modifier le ‘committed_image’ pour retrouver un ONU fonctionnel. Ce qui est beaucoup plus rapide que de flasher une image en série via KERMIT.



cetipabo

  • Invité
La fibre Orange à 2Gbps, sur un routeur MikroTik 10Gbps CCR2004, via un ONT SFP+
« Réponse #2622 le: 27 novembre 2021 à 21:09:21 »
Pour l'instant j'aurais tendance à dire que la solution "barbus économe" n'est pas compatible avec "plug&play".

La solution la plus facile (pour du 2G) :
ONU FS.com (~70€)
Commutateur ES-16-XG (ou US-16-XG ou US-XG-6POE) (~350€, quand on en trouve d'occaz)
Routeur CCR2004-1G-12S+2XS (~500€)

C'est le plus proche possible du plug&play (faut quand même se farcir la conf du routeur).

Soit pas loin de 1000€ si on rajoute les p'tits détails genre câbles et autres accessoires.


La solution plus barbus économe :
ONU MA5671A trouvable à ~40€ sur ebay
Carte double SFP+ 57810A, allez ~40€ si on cherche bien
Recyclage d'un vieux PC (mais pas trop vieux quand même). Allez, si faut l'acheter, je dirais dans la centaine d'euros.
Commutateur multigig pour le réseau (hé oui, la solution plug&play apporte quand même dans la vingtaine de ports 10G...) : je compte 100€ si on arrive à trouver du CRS305 d'occaz'... mais j'ai pas trop cherché, là.
Beaucoup de temps à patcher du noyau, à rooter de l'ONU, etc,....

Avec un peu de câbles, je dirais dans les ~300€, et beaucoup de temps.
a tout hasard, est-ce qu'un ER 12 à 189€ actuellement, pourrait remplacer le CCR2004 ?
https://www.wifi-france.com/ubiquiti/edgerouter-12-ports

je me réponds à moi meme: c'est des SFP gigabit  >:(  >:(

Mackila

  • Abonné Bbox fibre
  • *
  • Messages: 354
  • 33
La fibre Orange à 2Gbps, sur un routeur MikroTik 10Gbps CCR2004, via un ONT SFP+
« Réponse #2623 le: 27 novembre 2021 à 21:19:11 »

Maitre proap, Merci pour le tuto !
Maitre Gnubyte, il faudrait rajouter un lien en première page :D ! Et ajouter benj06 dans la liste des succès :) !

Gnubyte

  • Abonné Orange Fibre
  • *
  • Messages: 1 063
  • Toulon (83)
    • HSGMII intégriste
La fibre Orange à 2Gbps, sur un routeur MikroTik 10Gbps CCR2004, via un ONT SFP+
« Réponse #2624 le: 28 novembre 2021 à 08:53:49 »

Maitre proap, Merci pour le tuto !
Maitre Gnubyte, il faudrait rajouter un lien en première page :D ! Et ajouter benj06 dans la liste des succès :) !
Hahaha, excellent tuto de manipulation de partition squashfs enfouie, à coup de binwalk et de dd. J'avais commencé un tuto de ce genre pour étendre la taille de l'image disque d'un ER5PoE, sans terminer la manipulation.
Maîtriser ces manips est important pour comprendre et façonner au mieux un firmware Lantiq,-OpenWRT-Lafibre dont nous avons tous besoin.
J'epingle ça sur la première page, et je rajoute Benj06

Gnubyte

  • Abonné Orange Fibre
  • *
  • Messages: 1 063
  • Toulon (83)
    • HSGMII intégriste
La fibre Orange à 2Gbps, sur un routeur MikroTik 10Gbps CCR2004, via un ONT SFP+
« Réponse #2625 le: 28 novembre 2021 à 08:57:50 »
a tout hasard, est-ce qu'un ER 12 à 189€ actuellement, pourrait remplacer le CCR2004 ?
https://www.wifi-france.com/ubiquiti/edgerouter-12-ports

je me réponds à moi meme: c'est des SFP gigabit  >:(  >:(

Et puis le jour où on goûte à RouterOS, on ne revient plus à Ubiquiti, et à son SDN pownd.

Hugues

  • AS2027 MilkyWan
  • Modérateur
  • *
  • Messages: 12 466
  • Lyon (69) / St-Bernard (01)
    • Twitter
La fibre Orange à 2Gbps, sur un routeur MikroTik 10Gbps CCR2004, via un ONT SFP+
« Réponse #2626 le: 28 novembre 2021 à 09:54:32 »
si vous voulez économiser des sous, achetez un RB4011 ou 5009 à la place du CCR2004, pas besoin de 12 ports 10G si vous avez déjà un switch, suffit de faire du router-on-stick avec des VLAN :)

Mackila

  • Abonné Bbox fibre
  • *
  • Messages: 354
  • 33
La fibre Orange à 2Gbps, sur un routeur MikroTik 10Gbps CCR2004, via un ONT SFP+
« Réponse #2627 le: 28 novembre 2021 à 13:00:17 »
si vous voulez économiser des sous, achetez un RB4011 ou 5009 à la place du CCR2004, pas besoin de 12 ports 10G si vous avez déjà un switch, suffit de faire du router-on-stick avec des VLAN :)

Ha tiens c'est pas con ça j'avais jamais pensé à l'idée.

Enfin avec le 5009 il n'y a pas besoin, il a un port 2.5G...