Auteur Sujet: Bypass orange (G-PON/XGS-PON) sur debian (explications pas-à-pas)  (Lu 11114 fois)

0 Membres et 1 Invité sur ce sujet

Mastah

  • Abonné Orange Fibre
  • *
  • Messages: 693
  • XGS-PON et G-PON
Bypass orange (G-PON/XGS-PON) sur debian (explications pas-à-pas)
« Réponse #36 le: 04 mars 2025 à 19:17:49 »
ça fait 6mois maintenant que j'utilise un Debian basé sur ton tuto github, et franchement ça marche super bien merci encore, j'ai simplement rajouté la redirection locale de port et la reconnection automatique avec un petit script qui ping 8.8.8.8, pour les règles vlan avec nftable c'est chatgpt qui s'en est occupé  ;D

Peux-tu montrer à quoi ressemble ta redirection de port local ainsi que la reconnexion auto ?
Je les prendrais peut-être dans la doc ou alors je m'en inspirerais peut-être.

LemurExpert

  • Abonné Orange Fibre
  • *
  • Messages: 58
Bypass orange (G-PON/XGS-PON) sur debian (explications pas-à-pas)
« Réponse #37 le: 05 mars 2025 à 06:12:46 »
Peux-tu montrer à quoi ressemble ta redirection de port local ainsi que la reconnexion auto ?
Je les prendrais peut-être dans la doc ou alors je m'en inspirerais peut-être.

Le script de reconnexion auto:
#!/bin/bash
# /usr/local/sbin/network-watchdog.sh

LOGFILE="/var/log/network-watchdog.log"
TARGET="8.8.8.8"
PING_COUNT=4
MAX_FAIL=6  # 6 * 10 seconds = 1 minute of outage
FAIL_COUNT=0

# Ensure the logfile exists and has proper permissions
touch "$LOGFILE"
chmod 644 "$LOGFILE"

# Log when the service starts
echo "$(date): network-watchdog service started." >> "$LOGFILE"

# Trap termination signals to log when the service is stopping
trap 'echo "$(date): network-watchdog service stopping." >> "$LOGFILE"; exit 0' SIGTERM SIGINT

while true; do
  if ping -c "$PING_COUNT" "$TARGET" > /dev/null 2>&1; then
    FAIL_COUNT=0
  else
    ((FAIL_COUNT++))
    echo "$(date): Ping to $TARGET failed ($FAIL_COUNT/$MAX_FAIL)" >> "$LOGFILE"
  fi

  if [ "$FAIL_COUNT" -ge "$MAX_FAIL" ]; then
    echo "$(date): Connectivity lost for 1 minute. Reconnecting..." >> "$LOGFILE"
    /sbin/ifdown vlan832 && /sbin/ifup vlan832
    systemctl restart isc-dhcp-server.service radvd.service nftables.service
    echo "$(date): Network services restarted." >> "$LOGFILE"
    FAIL_COUNT=0
  fi

  sleep 10  # Check every 10 seconds
done
A utiliser dans un service rc.local

Pour la redirection de port locale c'étais une règle hairpin nftable que je n'ai plus, chatgpt m'avais aidé la aussi

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 671
Bypass orange (G-PON/XGS-PON) sur debian (explications pas-à-pas)
« Réponse #38 le: 05 mars 2025 à 08:52:21 »
Personne n'a t'il tenté de percer le mystère de l'algorithme utilisé par la Livebox ?

[...]

Respecter les cycle de vie définis dans les RFC idoines et relancer depuis le DORA / SARR en cas de perte de la connectivité montante (à tester avec ARP et ICMPv6 NS/NA) comme le fait la LiveBox

[...]

De l'importance des tests de vie :

La cnx de la LB peut être interrompue sur plusieurs segments entre la LB et le BNG.
Si vous ne testez pas la cnx montante, vous allez vous retrouver hors séquence et donc vous faire blaster régulièrement.
Cela doit être fait sur LES DEUX stacks Ipv4 et IPv6
Une capture minimal de ce que fait la LB vous permettra de comprendre la puissance de ces deux algos ....
Et quand vous détectez une fin de vie sur un stack, vous relancez celui ci (cycle DORA ou SARR suivant le stack) proprement
Faite un RELEASE (du bon stack) AVANT de relancer le cycle ....
Durant votre capture, vous verrez que le BNG fait de même dans l'autre sens ... d'où l'importance de bien répondre à ces message avec la bonne COS6


J'ai jeté un coup d’œil à ma capture réseau.

[IPv4]

Le BNG émet une requête ARP à destination de la Livebox (unicast) toutes les 310 secondes.

La Livebox a une séquence plus complexe de requêtes ARP.

Lors des vingts première minutes, il y a une succession de paquets ARP unicast et broadcast :
broadcast, unicast, broadcast puis broadcast, unicast, unicast, broadcast.

La Livebox émet finalement une succession de requêtes ARP en diffusion générale (broadcast)
toutes les 120 secondes.

[IPv6]

Le BNG envoie trois premiers paquets NS (neighbor sollicitation) adressés à la Livebox avec un intervalle de dix secondes.

Finalement, le BNG envoie des paquets NS adressés à la Livebox toutes les 310 secondes.

La livebox envoie des paquets NS adressés au BNG toutes les 120 secondes.

Mastah

  • Abonné Orange Fibre
  • *
  • Messages: 693
  • XGS-PON et G-PON
Bypass orange (G-PON/XGS-PON) sur debian (explications pas-à-pas)
« Réponse #39 le: 05 mars 2025 à 14:12:16 »
Le script de reconnexion auto:
#!/bin/bash
# /usr/local/sbin/network-watchdog.sh

LOGFILE="/var/log/network-watchdog.log"
TARGET="8.8.8.8"
PING_COUNT=4
MAX_FAIL=6  # 6 * 10 seconds = 1 minute of outage
FAIL_COUNT=0

# Ensure the logfile exists and has proper permissions
touch "$LOGFILE"
chmod 644 "$LOGFILE"

# Log when the service starts
echo "$(date): network-watchdog service started." >> "$LOGFILE"

# Trap termination signals to log when the service is stopping
trap 'echo "$(date): network-watchdog service stopping." >> "$LOGFILE"; exit 0' SIGTERM SIGINT

while true; do
  if ping -c "$PING_COUNT" "$TARGET" > /dev/null 2>&1; then
    FAIL_COUNT=0
  else
    ((FAIL_COUNT++))
    echo "$(date): Ping to $TARGET failed ($FAIL_COUNT/$MAX_FAIL)" >> "$LOGFILE"
  fi

  if [ "$FAIL_COUNT" -ge "$MAX_FAIL" ]; then
    echo "$(date): Connectivity lost for 1 minute. Reconnecting..." >> "$LOGFILE"
    /sbin/ifdown vlan832 && /sbin/ifup vlan832
    systemctl restart isc-dhcp-server.service radvd.service nftables.service
    echo "$(date): Network services restarted." >> "$LOGFILE"
    FAIL_COUNT=0
  fi

  sleep 10  # Check every 10 seconds
done
A utiliser dans un service rc.local

Pour la redirection de port locale c'étais une règle hairpin nftable que je n'ai plus, chatgpt m'avais aidé la aussi

Ok merci !
Un systemctl restart network fonctionnait pas ?
Pour info je mettrais a jour bientôt pour automatiser la parti radvd + dhcpd avec un changement de subnet orange (ipv6).
J'ai aussi pu faire en sort d'avoir à la fois SLAAC et DHCPdv6.
Je split le /56 en 2 subnet /64. Un pour SLAAC et un pour DHCPdv6.

LemurExpert

  • Abonné Orange Fibre
  • *
  • Messages: 58
Bypass orange (G-PON/XGS-PON) sur debian (explications pas-à-pas)
« Réponse #40 le: 06 mars 2025 à 11:57:54 »
Ok merci !
Un systemctl restart network fonctionnait pas ?
Aucune idée, j'ai vu que tu utilisais ça sur ton github et j'ai pas chercher plus loin  ;D

Krapace

  • Abonné Orange Fibre
  • *
  • Messages: 2
Bypass orange (G-PON/XGS-PON) sur debian (explications pas-à-pas)
« Réponse #41 le: 22 mars 2025 à 00:09:17 »
Merci pour ce tuto

Même si j'ai un peu galéré avec nftables (c'était ma 1ere fois), un VM Debian avec un MCL220 fait super bien le taf

Mon Turris Mox va pouvoir prendre sa retraite ;)


Mastah

  • Abonné Orange Fibre
  • *
  • Messages: 693
  • XGS-PON et G-PON
Bypass orange (G-PON/XGS-PON) sur debian (explications pas-à-pas)
« Réponse #42 le: 22 mars 2025 à 22:10:48 »
Merci pour ce tuto

Même si j'ai un peu galéré avec nftables (c'était ma 1ere fois), un VM Debian avec un MCL220 fait super bien le taf

Mon Turris Mox va pouvoir prendre sa retraite ;)

Ca va bientôt faire 1an que je tourne sur cette config et j'ai jamais eu un routeur aussi stable, facile a config / maj, sécure, performant et si peu consommateur d'électricité.

Vivement que opnsense se débarrasse au plus vite de BSD qui est un total abandon-ware...

surfinside

  • Abonné RED by SFR fibre FttH
  • *
  • Messages: 77
Bypass orange (G-PON/XGS-PON) sur debian (explications pas-à-pas)
« Réponse #43 le: 30 mars 2025 à 10:46:05 »
Salut @Mastah,

GG pour ce TUTO ;)

Dans /etc/network/interfaces.d/wan
Pourquoi utiliser up /etc/network/inject_pcp_6 & up ip l s $IFACE type vlan egress 6:6 ?

Sauf erreur de ma part, le script inject_pcp_6 configure nftable pour mettre la prio à 6 sur les paquets DHCP et ARP (IPv4)

Et après avec la commande ip l'ensemble des paquets sont de nouveau paramétrés avec une prio 6

Merci !

EDIT : Oki la prio n'est pas appliquée sur la même couche
ip -> L2
nftable -> L3
« Modifié: 30 mars 2025 à 11:53:03 par surfinside »

Mastah

  • Abonné Orange Fibre
  • *
  • Messages: 693
  • XGS-PON et G-PON
Bypass orange (G-PON/XGS-PON) sur debian (explications pas-à-pas)
« Réponse #44 le: 30 mars 2025 à 14:28:12 »
Salut @Mastah,

GG pour ce TUTO ;)

Dans /etc/network/interfaces.d/wan
Pourquoi utiliser up /etc/network/inject_pcp_6 & up ip l s $IFACE type vlan egress 6:6 ?

Sauf erreur de ma part, le script inject_pcp_6 configure nftable pour mettre la prio à 6 sur les paquets DHCP et ARP (IPv4)

Et après avec la commande ip l'ensemble des paquets sont de nouveau paramétrés avec une prio 6

Merci !

EDIT : Oki la prio n'est pas appliquée sur la même couche
ip -> L2
nftable -> L3

Non c'est surtout pour mapper le 6 vers 6. Si la table de mapping n'existe pas les packets partent sans prio.
NFTable flag/tag les packets en prio 6, l'interface est config pour supporter une prio 6 en mappant 6:6.

surfinside

  • Abonné RED by SFR fibre FttH
  • *
  • Messages: 77
Bypass orange (G-PON/XGS-PON) sur debian (explications pas-à-pas)
« Réponse #45 le: 30 mars 2025 à 15:41:59 »
Merci pour ton retour rapide !

Mastah

  • Abonné Orange Fibre
  • *
  • Messages: 693
  • XGS-PON et G-PON
Bypass orange (G-PON/XGS-PON) sur debian (explications pas-à-pas)
« Réponse #46 le: 19 avril 2025 à 13:59:02 »
J'ai maj pour supporter un dual stack DHCPd v6 et SLAAC sur deux subnet different.
Il y a donc maintenant un subnet en XXXX:XXXX:XXXX:XX02::/64 et un en XXXX:XXXX:XXXX:XX03::/64

J'en ai aussi profiter pour apporter quelques modifications et améliorations

HFR

  • Abonné Orange Fibre
  • *
  • Messages: 27
  • Rueil 92
Bypass orange (G-PON/XGS-PON) sur debian (explications pas-à-pas)
« Réponse #47 le: 21 avril 2025 à 09:40:41 »
J'ai maj pour supporter un dual stack DHCPd v6 et SLAAC sur deux subnet different.
Il y a donc maintenant un subnet en XXXX:XXXX:XXXX:XX02::/64 et un en XXXX:XXXX:XXXX:XX03::/64

J'en ai aussi profiter pour apporter quelques modifications et améliorations

Merci beaucoup je viens d'appliquer les mises à jour.


Sur la partie IPv6 je suis un newb. Je ne comprends pas pourquoi certains de mes clients (android et autre) n'arrivent pas à avoir d'ip.
Mes PC windows aucun problème.

Si quelqu'un a une idée ? Merci d'avance.

Solicit message from fe80::xxxx:xxx:xxxx:xxxx port 546, transaction ID 0xF99F9D00
2025-04-21T09:18:46.115258+02:00 edge dhcpd[781]: Unable to pick client prefix: no IPv6 pools on this shared network