Auteur Sujet: Remplacement de la Livebox par un routeur Openwrt  (Lu 645294 fois)

basilix et 7 Invités sur ce sujet

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 984
Remplacement de la Livebox par un routeur Openwrt
« Réponse #1416 le: 27 septembre 2026 à 20:50:42 »
Citation de: zoc
Franchement vous vous faites des nœuds au cerveau pour rien... Ça fait 6 ans que j'ai la même chaîne d'authentification.

Je constate des zones d'ombres qui ne sont pas documentées. Cela n'aide pas à avancer et « tout bouge autour ».
De plus, personne ne me l'expliquera. Je trouve cela gênant.

L'IA a sorti un petit script. Mais il y a encore des choses qui m'échappent car je ne parviens pas à me représenter le
fonctionnement global. Je comprends le script.

#!/bin/sh

set -e

LOCK=/run/dhcp-auth-refresh.lock
AUTH=/etc/dhcp/authentication.conf
TMP="${AUTH}.tmp.$$"

exec 9>"$LOCK"
flock -x 9

trap 'rm -f "$TMP"' EXIT

ubus call network.interface.wan down
ubus call network.interface.wan6 down

while pidof udhcpc >/dev/null 2>&1 ||
      pidof odhcp6c >/dev/null 2>&1
do
    sleep 1
done

/usr/local/sbin/generate-dhcp-auth.sh > "$TMP"

chmod 600 "$TMP"
chown root:root "$TMP"

mv -f "$TMP" "$AUTH"

ubus call network.interface.wan up
ubus call network.interface.wan6 up

flock -u 9

Dans le fond je m'en fous un peu de trouver comment renouveler l'info d'authentification. C'est plus pour ne pas
être embêté.

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 984
Remplacement de la Livebox par un routeur Openwrt
« Réponse #1417 le: 01 octobre 2026 à 07:10:58 »
J'ai relu le RFC2131 car j'en ai besoin pour bien comprendre les sources d'odhcpd. L'idéal aurait été de réaliser une capture sur le réseau Orange pendant plusieurs jours
mais il aurait fallu que je reconfigure entièrement mon routeur sur l'étagère.

Phase d'initialisation (INIT) : allocation d'une adresse réseau

Il est spécifié que le message DHCPREQUEST doit réutiliser le xid du message DHCPOFFER.

Citer
If the ’xid’ of an arriving DHCPOFFER message does not match the ’xid’ of the most recent DHCPDISCOVER message, the DHCPOFFER message
must be silently discarded.
Page 36.

Citer
The DHCPREQUEST message contains the same ’xid’ as the DHCPOFFER message. Page 38.

Phase d'initialisation (INIT-REBOOT) : initialisation avec une adresse réseau connue

Citer
The client generates and records a random transaction identifier and inserts that identifier into the ’xid’ field. Page 39.

Phase de renouvellement (RENEW, REBIND)

Citer
Any DHCPACK messages that arrive with an ’xid’ that does not match the ’xid’ of the client’s DHCPREQUEST message are silently discarded. Page 40.

Ce n'est pas précisé. Mais on peut considérer qu'il s'agit d'une nouvelle transaction. En effet, le principe est que le serveur peut refuser de renouveler le bail.

Synthèse

Le même type de message DHCP peut être utilisé dans des transactions diverses. Voir le diagramme de transition d'état page 35.

Exemple : INIT-REBOOT --> REBOOTING --> BOUND ou INIT-REBOOT --> REBOOTING --> INIT.

[size=14]Conclusion[/size]

Il faudrait réaliser une capture réseau pour confirmer ou infirmer. Il semblerait que l'identifiant de transaction soit l'indicateur du changement d'info. d'authentification.

ochbob

  • Abonné Orange Fibre
  • *
  • Messages: 266
  • Beauzelle (31)
Remplacement de la Livebox par un routeur Openwrt
« Réponse #1418 le: Hier à 22:28:12 »
La table netdev, vous n'avez pas des erreurs de syntaxe ?  ???

Je test celle indiquée par unipo dans son repo: https://github.com/luneth/OpenWRT-Livebox#le-pare-feu


unipo

  • Abonné Orange Fibre
  • *
  • Messages: 55
  • 32
Remplacement de la Livebox par un routeur Openwrt
« Réponse #1419 le: Hier à 23:33:21 »
@ochbob
Tu as bien ceci? Avec kmod-nft-netdev d'installé et en modifiant correctement eth0 en fonction de ton device WAN?

table netdev orange-rules
flush table netdev orange-rules

table netdev orange-rules {
        chain orange-rules-chain {
                type filter hook egress device "eth0" priority 0; policy accept;
                vlan type ip6 udp dport 547 vlan pcp set 6 ip6 dscp set cs6 counter accept
                vlan type ip6 icmpv6 type { echo-request, echo-reply, nd-neighbor-solicit, nd-neighbor-advert, nd-router-solicit } vlan pcp set 6 ip6 dscp set cs6 counter accept
                vlan type ip6 ip6 dscp set cs0 counter accept
                vlan type ip udp dport 67 vlan pcp set 6 ip dscp set cs6 counter accept
                vlan type ip ip dscp set cs0 counter accept
                vlan type arp vlan pcp set 6 counter accept
        }
}

ochbob

  • Abonné Orange Fibre
  • *
  • Messages: 266
  • Beauzelle (31)
Remplacement de la Livebox par un routeur Openwrt
« Réponse #1420 le: Aujourd'hui à 00:11:01 »
Yes, exactement celui ci, je vois les erreurs au boot dans /var/log/messages

Problème sur l'indentation peut être ?
Je referai un test demain.
« Modifié: Aujourd'hui à 06:59:06 par ochbob »

unipo

  • Abonné Orange Fibre
  • *
  • Messages: 55
  • 32
Remplacement de la Livebox par un routeur Openwrt
« Réponse #1421 le: Aujourd'hui à 00:14:26 »
Non, remplace "vlan id 832 [...]" par "vlan type [...]"

Je me suis planté quand j'ai copié les règles en expérimentant avec "vlan id"...

Ou alors si tu veux appliqué en fonction du vlan, les correctes règles sont:
table netdev orange-rules {
        chain orange-rules-chain {
                vlan id 832 ip6 nexthdr udp udp dport 547 vlan pcp set 6 ip6 dscp set cs6 counter accept
                vlan id 832 ip6 nexthdr icmpv6 icmpv6 type { echo-request, echo-reply, nd-neighbor-solicit, nd-neighbor-advert, nd-router-solicit } vlan pcp set 6 ip6 dscp set>
                vlan id 832 ip6 dscp set cs0 counter accept
                vlan id 832 ip protocol udp udp dport 67 vlan pcp set 6 ip dscp set cs6 counter accept
                vlan id 832 ip dscp set cs0 counter accept
                vlan id 832 vlan type arp vlan pcp set 6 counter accept
    }
}

Je vais mettre à jour le repo dans la journée
« Modifié: Aujourd'hui à 06:53:20 par unipo »

ochbob

  • Abonné Orange Fibre
  • *
  • Messages: 266
  • Beauzelle (31)
Remplacement de la Livebox par un routeur Openwrt
« Réponse #1422 le: Aujourd'hui à 06:58:42 »
Merci Unipo, je vais tester ça !

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 984
Remplacement de la Livebox par un routeur Openwrt
« Réponse #1423 le: Aujourd'hui à 07:09:53 »
L'expression est malformée. Lire le premier paragraphe de Simple Rule Management.

Première expression : VLAN HEADER EXPRESSION

vlan id 832

Seconde expression incomplète : IPV6 HEADER EXPRESSION

ip6

Comment sélectionner en fonction du protocole encapsulé dans un paquet IPv6 ? Voir « Rappel IPv6 » ci-après.

Troisième expression : UDP HEADER EXPRESSION

udp dport 547

Analyse

Ce que l'on veut c'est sélectionner les paquets IPv6.

vlan type ip6

Attention : l'expression vlan type est surchargée. Voir « Ambivalence de l'expression vlan type ».

Rappel IPv6

Il faut utiliser l'expression meta l4proto en IPv6 pour correspondre au protocole encapsulé.

nft describe meta l4proto | grep icmp
        icmp                            1
        ipv6-icmp                       58

On peut utiliser l'expression abrégée icmpv6 type <data type>.

Citer
If you specifically want to match on the ICMPv6 type, then nftables creates an implicit meta l4proto dependency that is not shown, therefore, there is no need for being verbose in your notation, ie.

% nft add rule filter input icmpv6 type { nd-neighbor-solicit, nd-router-advert, nd-neighbor-advert } accept
Hyperlien : Matching IPv6 headers

Ambivalence de l'expression vlan type

vlan type 8021ad vlan type 8021q vlan type ip6 counter

Cette expression représente explicitement une trame VLAN 802.1ad et une trame 802.1Q (enchaînement QinQ).

vlan type ip6 counter

Cette expression représente implicitement une trame VLAN 802.1q.

L'ambivalence apparaît dans la signification du type EtherType.

09:18

Finalement, il semblerait que mon interprétation soit fausse. J'ai essayé dans des espaces de nommages. nftables transforme la règle en :

table netdev test_qinq {
        chain ingress {
                type filter hook ingress device "veth_recv" priority filter; policy accept;
                ether type 8021q vlan type 8021ad vlan type 8021q vlan type ip6 counter packets 0 bytes 0 meta nftrace set 1
        }
}

09:31

Je crois que j'ai compris.

- VLAN support:

   # payload statement
   ip saddr 10.1.1.1 icmp type echo-request vlan id set 321

   # payload expression (QinQ matching)
   ether type 8021ad vlan id 10 vlan type 8021q vlan id 100 vlan type ip accept

Hyperlien : https://lwn.net/Articles/982283/

$ nft describe vlan type
payload expression, datatype ether_type (Ethernet protocol) (basetype integer), 16 bits

pre-defined symbolic constants (in hexadecimal):
        ip                              0x0800
        arp                             0x0806
        ip6                             0x86dd
        8021q                           0x8100
        8021ad                          0x88a8
        vlan                            0x8100

$ nft describe ether_type
datatype ether_type (Ethernet protocol) (basetype integer), 16 bits

pre-defined symbolic constants (in hexadecimal):
        ip                              0x0008
        arp                             0x0608
        ip6                             0xdd86
        8021q                           0x0081
        8021ad                          0xa888
        vlan                            0x0081

Donc, 8021ad ne devrait pas être utilisé dans l'expression vlan type mais uniquement dans l'expression ether type.
« Modifié: Aujourd'hui à 09:31:31 par basilix »