La Fibre

Datacenter et équipements réseaux => Routeurs => Orange fibre Remplacer la LiveBox par un routeur => Discussion démarrée par: moviuro le 05 mars 2023 à 12:10:08

Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: moviuro le 05 mars 2023 à 12:10:08
Hello,

Je vais récapituler ici ce que j'ai fait, et qui est fonctionnel pour une machine OpenBSD 7.2+ (il y a eu des changements impactants dans la 7.2, entre autres la simplification de dhclient qui nous est dorénavant inutile).

Si vous êtes ici, vous avez probablement une bonne idée de ce que vous faites (chers collègues barbus au chapeau d'alu) ; et si non, lisez le manuel, c'est surtout pour ça qu'on utilise OpenBSD. Mon article original est en anglais (https://try.popho.be/securing-home2.html).

Paquets nécessaires : dhcpcd(8) (une version qui inclut ce patch (https://github.com/NetworkConfiguration/dhcpcd/commit/79c3ba7c2a5ac95647512ef58d8973aac206cb77) : fin mai 2023, il s'agit donc de la version dhcpcd-10.0.1pl20230518v0 du paquet, disponible dans les ports ou paquets (https://cvsweb.openbsd.org/ports/net/dhcpcd/Makefile?rev=1.102&content-type=text/x-cvsweb-markup)) ; igmpproxy(8) pour la TV.

(Pour info, dibbler est mort en 2017 (https://klub.com.pl/dhcpv6/))

On crée les fichiers hostname.if(5) qui vont bien pour le VLAN832 (Internet).

# /etc/hostname.vlan832
# llprio c'est pour les paquets DHCP
parent em1 vnetid 832 llprio 6
description "ISP uplink"
up

# /etc/hostname.em1
# lladdr c'est la véritable MAC de la Livebox
lladdr "xx:xx:xx:xx:xx:xx"
up

Les tokens d'authentification à envoyer à Orange périment, donc on doit : générer régulièrement un token, l'intégrer dans dhcpcd.conf(5) et demander à dhcpcd(8) de MAJ la lease.

# cat /etc/dhcpcd.conf.head
# dual-stack IPv4 et IPv6
noipv4ll
nohook hostname ntp.conf
allowinterfaces vlan832
debug

# based on https://blog.brimbelle.org/index.php/2018/04/30/fibre-orange-ipv6-et-dhcpcd/
interface vlan832
        # 00030001<MAC_ADDRESS_LIVEBOX_SANS_DEUXPOINTS> dans /var/db/dhcpcd/duid
        # iaid below = 4 derniers octets de la MAC de la livebox
        iaid    01234567
        # on demande une route IPv6 par défaut -- pas besoin de hook spécifique
        ipv6rs
        # delegation de /64s à d'autres interfaces. rad(8) s'en occupera
        # les interfaces ci-dessous dépendent bien sûr de votre config... j'ai un VLAN pour les invités, les enfants, l'IoT...
        ia_pd   01234567 vlan49//64 vlan50//64 vlan51//64 em0//64
        option auth
        userclass FSVDSL_livebox.Internet.softathome.Livebox4
        vendclass 1038 sagem
        authprotocol token 0x123/0x456
        # Le token 0x456 ci-dessous est un magic string (dhcplivebox250) qu'Orange renvoie
        authtoken 0x456 "" forever 64:68:63:70:6c:69:76:65:62:6f:78:66:72:32:35:30
        # TRÈS IMPORTANT, PAS DE RETOUR À LA LIGNE, JUSTE UNE ESPACE
        # TRÈS IMPORTANT, FONCTIONNEL UNIQUEMENT AVEC dhcpcd > 9.4.1
        authtoken 0x123 "" forever 🚫

Pour effacer le retour à la ligne à la fin du fichier, on utilise :

dest=/etc/dhcpcd.conf.head
dd if=/dev/null of="$dest" obs="$(( $(wc -c < "$dest") -1 ))" seek=1

Orange ne délivre pas d'IPv6 pour le routeur dans la lease DHCPv6, c'est pour ça qu'on a le ipv6rs.

Pour générer le token d'authentification (option 90, etc.) : un script largement inspiré du présent forum (https://git.sr.ht/~moviuro/moviuro.bin/tree/master/item/orange_hexauth)

# cat /usr/local/bin/orange_hexauth
#!/bin/sh

# Heavily inspired by https://lafibre.info/remplacer-livebox/tuto-remplacer-la-livebox-par-un-routeur-dd-wrt-internet-tv/

__usage(){
  cat << EOH
$0 [-h]

$0 creates a hex stream (that is not \\n terminated) that can be used in DHCP
clients (v4 and v6) to authenticate to Orange France's network. The hex stream
is intended to be cat(1)-ed with configuration parts to create a complete file
(such as dhclient.conf(5)).

-h : display this help text

ENVIRONMNENT VARIABLES

You MUST specify FTI_USER and FTI_PASS as written in your (paper) contract with
Orange.

EXAMPLES

In crontab:

  FTI_USER=fti/...
  FTI_PASS=...

  ~ 1 * * 0 $0 > /etc/orange_auth_string
  ~ 2 * * 0 cat /etc/dhclient.conf.head /etc/orange_auth_string /etc/dhclient.conf.tail > /etc/dhclient.conf
  ~ 3 * * 0 dhclient vlan832

CAVEATS

Only tested on OpenBSD
EOH
}

while getopts ':h' _opt; do
  case "$_opt" in
    h) __usage ; exit 0 ;;
    *) __usage >&2 ; exit 1 ;;
  esac
done

shift "$((OPTIND-1))"

: "${FTI_USER?"Missing mandatory variable, see $0 -h"}"
: "${FTI_PASS?"Missing mandatory variable, see $0 -h"}"

if ! command -v openssl >/dev/null 2>&1; then
  echo "openssl(1) was no found. WTF?" >&2
  exit 2
fi

if ! command -v md5 >/dev/null 2>&1; then
  md5() {
    openssl md5 | cut -d' ' -f2
  }
fi

# translates individual characters to their hex counterpart and prefixes each
# with `:`
# __tohex foo
# > :66:6f:6f
__tohex() {
  printf '%s' "$1" | hexdump -ve '1/1 ":%.2x"'
}

case "$FTI_USER" in
  fti/*) : ;;
  *) FTI_USER="fti/$FTI_USER" ;;
esac

# random strings
# let's hope this never changes, because if Orange starts using "predictable"
# strings, we're in deep (think: TOTP)
: "${_r:="$(openssl rand -base64 12)"}"
: "${_c:="$(openssl rand -base64 1 | cut -c 1)"}"
# "header"
_o90="1a:09:00:00:05:58:01:03:41"
_o90="$_o90:01:0d$(__tohex "$FTI_USER")"
_o90="$_o90:3c:12$(__tohex "$_r")"
_o90="$_o90:03:13$(__tohex "$_c")"
_o90="$_o90$(printf '%s' "$_c$FTI_PASS$_r" | md5 | sed 's/\(..\)/:\1/g')"

cat << EOM >&2
Generated on $(date) with _r=$_r and _c=$_c
EOM
echo -n "${_o90}"

Avant de vérifier que ça fonctionne, on doit s'occuper des priorités de paquets dans pf.conf(5) :

# cat /etc/pf.conf
# martians also includes IPv6 martians
table <martians> { ... }
...
# tous les paquets ont priorité 1 et TOS 0x00
# (la priorité 0 limitait l'upload à 3Mbps alors que prio 1 : 300Mbps+)
match out log on egress set prio 1 tos 0x00
# pas de règle pour DHCPv4, c'est priorité 6 car llprio dans /etc/hostname.vlan832
# https://lafibre.info/remplacer-livebox/durcissement-du-controle-de-loption-9011-et-de-la-conformite-protocolaire/
# DHCPv6 COS 6
match out log on egress inet6 from (self) to ff02::1:2 set prio 6
match out log on egress inet6 proto icmp6 from (self) to fe80::ba0:bab icmp6-type { neighbrsol neighbradv } set prio 6
# peut-être n'est-ce pas nécessaire d'être aussi stricte dans les règles ci-dessus ? ce qui donne...
#match out log on egress inet6 proto icmp6 from (self) set prio 6
...
pass  in  quick log inet6 from fe80::ba0:bab to (self)
...

# NAT interieur -> extérieur pour les invités
match out log on egress inet  from ($guest_if:network)  to ! (self:network) nat-to (egress)
pass  in quick log on $guest_if to ! (self:network)

# Martians should never be a source on packets going out
block out quick log on egress from <martians>
pass  out quick log

# pfctl -vf /etc/pf.conf
Et maintenant on peut faire un premier test de dhcpcd:

# FTI_PASS="..." FTI_USER="fti/..." /usr/local/bin/orange_hexauth > /etc/orange_auth_string
# cat !$
1a:09:00:00:05:58........
# cat /etc/dhcpcd.conf.head !$ > /etc/dhcpcd.conf
# dhcpcd -V
....
# ifconfig vlan832
vlan832: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        lladdr xx:xx:xx:xx:xx:xx
        description: ISP link
        index 11 priority 0 llprio 3
        encap: vnetid 832 parent em1 txprio packet rxprio outer
        groups: vlan egress
        media: Ethernet autoselect (1000baseT full-duplex)
        status: active
        inet6 fe80::xxxx:xxff:fexx:xxxx%vlan832 prefixlen 64 scopeid 0xb
        inet 90.xx.xx.xx netmask 0xfffffc00 broadcast 90.xx.xx.255
# netstat -nrfinet
Routing tables

Internet:
Destination        Gateway            Flags   Refs      Use   Mtu  Prio Iface
default            90.xx.xx.1         UG         6   123631     -    56 vlan832
...
# netstat -nrfinet6                                                                                                                 
Routing tables                                                                                                                                     
                                                                                                                                                   
Internet6:                                                                                                                                         
Destination                        Gateway                        Flags   Refs      Use   Mtu  Prio Iface
default                            fe80::ba0:bab%vlan832          UGS        1   101587     -     8 vlan832
...

Et on automatise dans crontab(5):

# retrouvez les valeurs dans votre contrat papier
FTI_USER=fti/...
FTI_PASS=...

~ 1 * * 0 /usr/local/bin/orange_hexauth > /etc/orange_auth_string
~ 2 * * 0 cat /etc/dhcpcd.conf.head /etc/orange_auth_string > /etc/dhcpcd.conf
# dhcpcd rebind
~ 3 * * 0 dhcpcd -n

Et pour lancer le service dhcpcd avec le reste, on va piquer directement dans les sources du port : dhcpcd.rc (https://raw.githubusercontent.com/openbsd/ports/master/net/dhcpcd/pkg/dhcpcd.rc)

Voilà, une machine OpenBSD connectée au réseau Orange. Reste plus qu'à configurer dhcpd(8) pour servir les clients en IPv4 dans les réseaux locaux et rad(8) pour l'IPv6, le firewall, etc.

Pour la TV : lire cet article. (https://undeadly.org/cgi?action=article;sid=20110222002946)

# cat /etc/pf.conf
# interface interne
tv_in_if = "vlan52"
# uplink TV... à définir dans /etc/hostname.vlan840 bien sûr
tv_if    = "vlan840"

# NAT pour le boîtier TV qui a besoin d'accéder un peu à internet
match out log on egress inet  from ($tv_in_if:network)  to ! (self:network) nat-to (egress)
pass  in quick log on $tv_in_if proto { tcp udp } to ! (self:network) port { ntp domain https http 1443 2443 3443 5443 6443 7443 8443 9443 }
# je suis pas trop sûr pour les ports non standards... j'ai un peu bâclé

# IGMP et flux TV
pass  in quick log on $tv_in_if to 224.0.0.0/4 allow-opts
pass out quick log on $tv_if    to 224.0.0.0/4 allow-opts
pass  in quick log on $tv_if    inet proto udp from any to 224.0.0.0/4 port { 8200 8202 }
pass     quick log on { $in_phy_if $tv_if $tv_in_if } proto igmp allow-opts

# grep -vE '^[$#]' /etc/igmpproxy.conf

chroot /var/empty
user _igmpproxy

quickleave

phyint vlan840 upstream  ratelimit 0
        altnet 0.0.0.0/0

phyint vlan52 downstream  ratelimit 0

phyint em1 disabled
phyint em2 disabled

Et bien sûr, le boîtier TV réclame une option DNS bizarre... certaines infos sont à récupérer dans /var/db/dhcpcd/vlan832.lease

# cat /etc/dhcpd.conf
[snip]
# TV
subnet 10.207.52.1 netmask 255.255.255.0 {
  option routers 10.207.52.1;
  # DNS fournis par Orange dans la lease DHCP 2023-03-01
  option domain-name-servers 80.xx.xx.xx, 81.xx.xx.xx;
  range 10.207.52.100 10.207.52.200;

  host decodeur-tv {
    hardware ethernet 44:d4:54:48:72:03;
    # https://forums.framboise314.fr/viewtopic.php?f=57&t=5960
    option option-125 00:00:0D:E9:24:04:06:xx:xx:xx:xx:xx:xx:05:0F:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:06:0d:4C:69:76:65:62:6F:78:20:34;
    #                 ............^^.......^^^^^^^^^^^^^^^^^.......^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^....^^..L..i..v..e..b..o..x.. ..4
    #                             `length  `hex(first 3 bytes of Livebox MAC)  `hex(serial Livebox)                `length of next item
    option domain-name "orange.fr";
    option domain-search "XXX.access.orange-multimedia.net";
    #                     ^^^- vérifier la lease DHCP, c'est dedans aussi
  }
}

Et j'ai juste des problèmes avec l'accès aux chaînes HD+ (https://lafibre.info/remplacer-livebox/decodeur-uhd-fonctionnement-degrade-hd-seulement-livebox-remplacee-par-openbsd/msg1005482/#msg1005482), mais l'ensemble des chaînes reste fonctionnel (dont TF1, M6, replay, etc.)

Édit 2023-04-15 : dans les réponses DHCPv6 du serveur Orange, j'ai une option 17 ; et selon les indications de levieuxatorange (https://lafibre.info/remplacer-livebox/durcissement-du-controle-de-loption-9011-et-de-la-conformite-protocolaire/), ça indiquerait que je suis "migré" et donc mes propositions de configuration sont fonctionnelles.

Aussi, avec les sorties de dhcpcd-9.5.0 et 10.0.0 (11 avril 2023 et 13 avril 2023), et OpenBSD 7.3 (10 avril 2023), j'ai pu tester et valider que toute la conf fonctionnait encore (commit 257259dd (https://github.com/NetworkConfiguration/dhcpcd/tree/257259dd79d103f23342b1f0a3d608571a0ad549) sur OpenBSD 7.3).

2024-04-30 : je vous confirme que tout est encore parfaitement fonctionnel sur OpenBSD 7.4 et 7.5.
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: kgersen le 05 mars 2023 à 14:58:23
Orange ne délivre pas d'IPv6 pour le routeur. On gère cette situation bizarre avec un dhcpcd-run-hooks(8). (fe80::ba0:bab%vlan832 c'est le routeur Orange)

Cela n'a rien de bizarre c'est même une pratique recommandée.

La route par défaut vers fe80::ba0:bab peut s'obtenir en écoutant les ICMPv6/RA.

En IPv6, la logique est simple:
- fourniture d'un /56 via DHCPv6-PD
- fourniture d'une route par défaut via RA

p: j'ai ajouté ce sujet dans l'index général  (https://lafibre.info/remplacer-livebox/index-des-solutions-de-remplacement-de-la-livebox/).
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: kgersen le 05 mars 2023 à 17:36:20
La manip avec dhclient.conf.head peut etre simplifier..

On peux utiliser sed(1) (https://man.openbsd.org/sed.1) pour replacer la chaine d'auth dans le fichier dhcpcd.conf sans utiliser une 2eme fichier donc:

fichier /etc/dhcpcd.conf
        authtoken 0x456 "" forever 64:68:63:70:6c:69:76:65:62:6f:78:66:72:32:35:30
        # TRES IMPORTANT NE PAS CHANGER OU SUPPRIMER LE COMMENTAIRE EN FIN DE LIGNE
        # TRÈS IMPORTANT, FONCTIONNEL UNIQUEMENT AVEC dhcpcd > 4.9.1
        authtoken 0x123 "" forever 00#CLEAUTH
        # suite du fichier

commande pour remplacer la ligne ou il y a CLEAUTH par le résultat de orange_hexauth:

sed -i.bak -e 's/\(^.*forever\).*\#CLEAUTH/\1 '$(FTI_PASS="PASS" FTI_USER="fti/USER" /usr/local/bin/orange_hexauth.sh)' #CLEAUTH/' /etc/dhcpcd.conf

explication:
pour chaque ligne du fichier /etc/dhcpcd.conf qui contient '...forever...#CLEAUTH...', remplacer par '...forever X #CLEAUTH' ou X est le résultat (output) de la commande 'FTI_PASS="PASS" FTI_USER="fti/USER" sh orange_hexauth.sh'
l'ancienne version de  /etc/dhcpcd.conf est sauvegarder dans /etc/dhcpcd.conf.bak

Il convient avant de modifier orange_hexauth pour  qu'il n'affiche que le token => supprimer les 3 avant dernières lignes (cat EOM). On peut éventuellement les garder mais ca complique la commande car il faut filtrer stderr. Sinon fait comme dans ton cron par un fichier intermédiaire (orange_auth_string) mais je ne recommande pas trop d'utiliser trop de fichiers a usage intermédiaire (surtout pour des infos sensibles).

si on ne veut pas de 'data' dans les scripts (recommandé),  on peut mettre FTI_PASS et FTI_USER directement dans /etc/dhcpcd.conf et utliser sed pour récupèrer leur valeurs:


/etc/dhcpcd.conf:
# parametres:
# FTI_PASS="pass&word!"
# FTI_USER="fti/user3615"
....
        authtoken 0x456 "" forever 64:68:63:70:6c:69:76:65:62:6f:78:66:72:32:35:30
        # TRES IMPORTANT NE PAS CHANGER OU SUPPRIMER LE COMMENTAIRE EN FIN DE LIGNE
        # TRÈS IMPORTANT, FONCTIONNEL UNIQUEMENT AVEC dhcpcd > 4.9.1
        authtoken 0x123 "" forever 00#CLEAUTH
        # suite du fichier si besoin
....

script pour récupère les valeurs puis remplacer la chaine d'auth:

export FTI_PASS=$(sed -n -e 's/^# FTI_PASS="\(.*\)"/\1/p' /etc/dhcpcd.conf)
export FTI_USER=$(sed -n -e 's/^# FTI_USER="\(.*\)"/\1/p' /etc/dhcpcd.conf)
sed -i.bak -e 's/\(^.*forever\).*\#CLEAUTH/\1 '$(/usr/local/bin/orange_hexauth.sh)' #CLEAUTH/' /etc/dhcpcd.conf

L'intérêt est d'avoir la conf et tous ses paramètres/données dans un seul fichier (dhcpcd.conf) et les scripts ou le crontab n'ont aucune données.
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: moviuro le 05 mars 2023 à 18:02:39
Citer
La manip avec dhclient.conf.head peut etre simplifier..

Question de point de vue. cat a b > c c'est vraiment ultra simple.

Citer
Il convient avant de modifier orange_hexauth pour  qu'il n'affiche que le token

Pas nécessaire, stderr est utilisé. 2>/dev/null si besoin.

Citer
L'intérêt est d'avoir la conf et tous ses paramètres/données dans un seul fichier (dhcpcd.conf) et les scripts ou le crontab n'ont aucune données.

Inversement, l'idée quand j'ai tout installé, c'était d'utiliser la même chaîne d'authentification dans dhclient.conf(5) et dhcpcd.conf(5). Entre deux, dhclient(8) a été remplacé par un truc plus simple (et inutile).
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: kgersen le 05 mars 2023 à 22:04:16
Question de point de vue. cat a b > c c'est vraiment ultra simple.

Ca le rend trop spécifique (on ne peut configurer une autre interface après dans le même ficher par exemple) et ce n'est pas une bonne pratique de coller des morceaux de fichiers comme cela (ce n'est pas que mon avis). Et devoir enlever une fin de ligne avec dd  ce n'est pas simple comme façon de faire...

Si on veut un tuto adaptable a toute sorte d'usage et de cas il faut éviter ce genre de manips.

Inversement, l'idée quand j'ai tout installé, c'était d'utiliser la même chaîne d'authentification dans dhclient.conf(5) et dhcpcd.conf(5). Entre deux, dhclient(8) a été remplacé par un truc plus simple (et inutile).

A ce propos, le tuto est incohérent :

Pour effacer le retour à la ligne à la fin du fichier, on utilise :

dest=/etc/dhclient.conf.head
dd if=/dev/null of="$dest" obs="$(( $(wc -c < "$dest") -1 ))" seek=1
mais juste avant le fichier présenté est /etc/dhcpcd.conf.head

il ne devrait plus y avoir de dhclient.conf.head dans le tuto non ?
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: petrus le 05 mars 2023 à 22:10:54
Nice !

Merci pour ce topic Moviuro, tu t'es vraiment donné du mal.

J'avoue avoir un peu laissé tombé de mon côté openbsd + orange, pour deux raisons. Déjà je suis en adsl, donc il me faut un modem en bridge. J'utilisais un cisco 2811, ce qui est un peu overkill (et qui consomme), et qui ne permettait que de bridger l'ipv4, et puis bon le fait que dhclient ne soit plus supporté me demandait pas mal de temps de reverse pour adapter ma config, temps que je n'ai pas forcément...

Vu qu'en plus l'adsl ne me sert qu'à monter des tunnels wireguard vers ailleurs, et qu'avant même le durcissement de la chaine d'auth j'avais réussi à me faire mettre en quarantaine (probablement une race condition entre le modem et le dhcp), j'ai remis la livebox et je supporte le nat de la livebox aujourd'hui, et je route mes ip publiques, ou bien je double nat en fonction des réseaux...

Merci en tout cas pour les autres ;)
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: B3nJ1 le 29 mars 2023 à 18:30:09
Je n'ai pas réussi à avoir une IPv4 en suivant ton tuto. On dirait que les requêtes DHCPv4 étaient toujours en prio 3.

Pour l'IPv6 c'était correctement taggé en prio 6, mais je n'ai pas reçu de prefix.

Une coquille que j'ai relevé:

Citer
# 0003001<MAC_ADDRESS_LIVEBOX_SANS_DEUXPOINTS> dans /var/db/dhcpcd/duid

C'est 00030001<MAC_ADDRESS_LIVEBOX_SANS_DEUXPOINTS>
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: moviuro le 29 mars 2023 à 21:08:48
Je n'ai pas réussi à avoir une IPv4 en suivant ton tuto. On dirait que les requêtes DHCPv4 étaient toujours en prio 3.

C'est très étrange ça, mais je viens de vérifier et de mon côté aussi mes paquets sont prio 3 ! (oops)

# tcpdump -s 65535 -tttnei em1 vlan 832 and dst 255.255.255.255
Mar 29 19:00:33.145609 xx:xx:xx:xx:xx:xx ff:ff:ff:ff:ff:ff 8100 519: 802.1Q vid 832 pri 3 0.0.0.0.68 > 255.255.255.255.67:  xid:0xfe686e8a secs:16 vend-rfc1048

Pour corriger : on passe vlan832 en prio 6 : ifconfig vlan832 llprio 6 et on peut faire sauter la règle de pare-feu.

J'imagine que l'absence d'IPv6 et de préfixe est liée à ton IPv4 cassé (genre : le serveur DHCP ne t'a pas authentifié, donc c'est mort).

J'ai corrigé la coquille, sorry (0 manquant dans duid).

cat /etc/hostname.vlan832
# llprio 6 is for DHCP messages that use bpf(4)
# see https://misc.openbsd.narkive.com/7SGmbxm0/allow-dhcpd-with-pf#post4
parent em1 vnetid 832 llprio 6
description "ISP link"
up

# cat /etc/pf.conf
# martians also includes IPv6 martians
table <martians> { ... }
...
# tous les paquets ont priorité 1 et TOS 0x00
# (la priorité 0 limitait l'upload à 3Mbps alors que prio 1 : 300Mbps+)
match out log on egress set prio 1 tos 0x00
# aucune règle qui ajoute la priorité 6 -- les paquets DHCP utilisent bpf(4) et bypassent les règles pf.conf(5)
...
pass  in  quick log inet6 from fe80::ba0:bab to (self)
...

# NAT interieur -> extérieur pour les invités
match out log on egress inet  from ($guest_if:network)  to ! (self:network) nat-to (egress)
pass  in quick log on $guest_if to ! (self:network)

# Martians should never be a source on packets going out
block out quick log on egress from <martians>
pass  out quick log

On vérifie que ça fonctionne comme ça devrait :

# tcpdump -s 65535 -tttnei em1 vlan 832 and dst 255.255.255.255
Mar 29 20:54:47.493290 xx:xx:xx:xx:xx:xx ff:ff:ff:ff:ff:ff 8100 519: 802.1Q vid 832 pri 6 0.0.0.0.68 > 255.255.255.255.67:  xid:0xb86eec2b ...
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: B3nJ1 le 29 mars 2023 à 21:19:16
Merci, je retente ça demain matin :)

En effet llprio semple être pile ce qu'il faut
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: B3nJ1 le 30 mars 2023 à 10:21:30
Les paquets DHCP v4 et v6 sont bien tagués en prion6, mais j'ai jamais de réponses...

En IPv6 je vois les neighbors adv de ba0bab mais c'est tout. Je suis un peu perdu, j'ai même pas de parcage en 172.x, c'est le vide.
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: B3nJ1 le 30 mars 2023 à 11:20:47
J'arrive pas à déchiffrer les requetes DHCPv4 avec tcpdump, mais en DHCPv6 je vois pas les options d'authentification:

11:15:39.133773 50:39:XX:XX:XX:XX 33:33:00:01:00:02 8100 255: 802.1Q vid 832 pri 6 fe80::5239:2fff:fe02:xxxx.546 > ff02::1:2.547: DHCPv6 Solicit xid d53fd
        option 1 len 10 xxxxxxxxxxxx0019000c
        option 25 len 12 000000000000000000060004
        option 6 len 4 00080002
        option 8 len 2 0000 [|dhcp6opt] [hlim 1] (len 197)

Mais c'est peut-être normal...
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: moviuro le 30 mars 2023 à 12:03:21
tcpdump(8) ne sait pas déchiffrer complètement les messages DHCP, j'utilise wireshark sur une autre machine pour ça.

# tcpdump -w "capture_$(date +%Y-%m-%dT%H:%m:%S).pcap" -s 65535 -tttnei em0 vlan 832
Ailleurs, rcctl restart dhcpcd

Je lis que ta MAC est 50:39:2f:xx:xx:xx... ça ne ressemble pas à une MAC de Livebox (https://macaddress.io/mac-address-lookup/K54zZ33GRo) à ma connaissance ?
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: B3nJ1 le 30 mars 2023 à 13:01:46
J'ai édité pour anonymiser, mais oui c'est bien la bonne;
1.5 Adresse MAC        50:39:XX:XX:XX:XX
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: moviuro le 30 mars 2023 à 14:18:07
Du coup, je ne vois pas. Si tu as bien le même fichier dhcpcd.conf(5) que moi et dhcpcd master, il faudra que tu compares les captures de paquets de la Livebox avec celles de ton boîtier OpenBSD.

Je viens de refaire une capture :

Paquet Solicit XID > DHCPv6 > Authentication (dans wireshark)
0000   00 0b 00 46 00 00 00 e7 cf fd 5c 2f 52 0e 36 1a   ...F......\/R.6.
0010   09 00 00 05 58 01 03 41 01 0d 66 74 69 2f xx xx   ....X..A..fti/xx
0020   xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx   xxxxxxxxxxxxxxxx
0030   xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx   xxxxxxxxxxxxxxxx
0040   xx xx xx xx xx xx xx xx xx xx                     xxxxxxxxxx

Paquet DHCP Request > DHCP Request > Option: (90) Authentication
0000   5a 46 00 00 00 e7 cf fd 52 fc 32 03 ba 1a 09 00   ZF......R.2.....
0010   00 05 58 01 03 41 01 0d 66 74 69 2f xx xx xx xx   ..X..A..fti/xxxx
0020   xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx   xxxxxxxxxxxxxxxx
0030   xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx   xxxxxxxxxxxxxxxx
0040   xx xx xx xx xx xx xx xx                           xxxxxxxx
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: B3nJ1 le 31 mars 2023 à 14:33:46
Je ne vois pas l'option 61 pour le DHCPv4.

J'ai modifié la config avec clientid et j'ai bien l'option 61, avec comme valeur l'adresse mac.

J'ai changé les options pour n'inclure que celle mentionnée dans le fil "durcissement". Toujours rien, jamais de réponse.

Je vais essayer de capturer le traffic de la LB.
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: B3nJ1 le 31 mars 2023 à 16:53:36
J'ai enlevé vendclass 1038 sagem et mis vendorclassid sagem.

J'ai copié la valeur de l'option 90 issue d'une capture de la livebox, toujours sans succès. La seule différence que je vois, c'est la valeur RDM: elle est toujours à zero dans le cas de la livebox.
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: B3nJ1 le 31 mars 2023 à 22:13:45
C'est bon ça marche :) IPv4 + IPv6 ok!

J'avais mal recopié le token authentication. Je posterai ma config ce weekend. J'aurais dû faire un dump de la Livebox tout de suite, ça aurait été plus efficace :)
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: B3nJ1 le 02 avril 2023 à 14:26:36
Ma config dhcpcd.conf qui marche IPv4 + IPv6 (à peu près...)

# dual-stack IPv4 et IPv6
noipv6rs
noipv4ll
nohook hostname ntp.conf
allowinterfaces vlan832
debug

interface vlan832
        # 00030001<MAC_ADDRESS_LIVEBOX_SANS_DEUXPOINTS> dans /var/db/dhcpcd/duid
        # iaid below = 4 derniers octets de la MAC de la livebox
        iaid    XXXXXXXX
        clientid
        # delegation de /64s à d'autres interfaces. rad(8) s'en occupera
        # remplacer les XX par les 4 derniers octets de la MAC de la livebox (comme pour l'iad)
        ia_pd    XXXXXXXX aq1/2/64
        option auth
        authprotocol token 0x123/0x456
        userclass FSVDSL_livebox.Internet.softathome.Livebox5
        vendorclassid sagem
        option 1 3 6 15 28 51 58 59 90 119 120 125
        nooption 33 57
        # Le token 0x456 ci-dessous est un magic string (dhcplivebox250) qu'Orange renvoie
        authtoken 0x456 "" forever 64:68:63:70:6c:69:76:65:62:6f:78:66:72:32:35:30
        authtoken 0x123 "" forever # < token d'authentification ici >

Après ~24h j'ai perdu le réseau, avec ça dans les logs:

dhcpcd[75339]: vlan832: no authentication from 80.10.XX.XX
Je ne sais pas si c'est parceque je ne fais pas de rotation de la clef? Je vais laisser tcpdump tourner pour voir si dhcpcd fait bien une demande de renouvellement, ou si c'est orange qui me rejete... Ce qui est bizarre c'est qu'un simple rcctl restart dhcpcd et tout rentre dans l'ordre.

Je suis sûr qu'il y a aussi moyen d'ajouter la route par défaut de manière automatique.

EDIT: J'ai ajouté comme option noauthrequired, on verra dans 24h...

Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: B3nJ1 le 03 avril 2023 à 20:53:08
On dirait que c'était la bonne option :)

Je me demande si c'est pas le même problème rencontré sur pf/opnsense.

Apr  3 19:35:09 obsd dhcpcd[71969]: vlan832: no authentication from 80.YY.YY.YY
Apr  3 19:35:09 obsd dhcpcd[71969]: vlan832: NAK:   from 80.YY.YY.YY
Apr  3 19:35:09 obsd dhcpcd[71969]: vlan832: message:
Apr  3 19:35:09 obsd dhcpcd[71969]: vlan832: deleting route to 86.XX.XX.0/23
Apr  3 19:35:09 obsd dhcpcd[71969]: vlan832: deleting default route via 86.XX.XX.1
Apr  3 19:35:09 obsd dhcpcd[71969]: vlan832: soliciting a DHCP lease
Apr  3 19:35:10 obsd dhcpcd[71969]: vlan832: offered 86.XX.XX.XX from 80.YY.YY.YY
Apr  3 19:35:10 obsd dhcpcd[71969]: vlan832: probing address 86.XX.XX.XX/23
Apr  3 19:35:15 obsd dhcpcd[71969]: vlan832: leased 86.XX.XX.XX for 259200 seconds
Apr  3 19:35:15 obsd dhcpcd[71969]: vlan832: adding route to 86.XX.XX.0/23
Apr  3 19:35:15 obsd dhcpcd[71969]: vlan832: adding default route via 86.XX.XX.1
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: Sisyphe le 03 avril 2023 à 23:52:26
Hello,

La piste noauthrequired est intéressante. Existe-t-il une option similaire sur OPNsense ?

Merci !
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: shrd le 04 avril 2023 à 03:09:03
je teste dès que je peux, vous avez réussi à avoir le prefix /56 ?

Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: B3nJ1 le 04 avril 2023 à 09:58:42
Hello,

La piste noauthrequired est intéressante. Existe-t-il une option similaire sur OPNsense ?

Merci !

Je ne sais pas trop, pour confirmer il faudrait les logs du client DHCP de opnsense.

je teste dès que je peux, vous avez réussi à avoir le prefix /56 ?

J'arrive à assigner plusieurs /64, je n'ai pas essayé d'assigner directement le /56 si c'est ce que tu veux faire ?
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: shrd le 04 avril 2023 à 12:40:55
J'arrive à assigner plusieurs /64, je n'ai pas essayé d'assigner directement le /56 si c'est ce que tu veux faire ?

plus pour voir si ça marche pour l'instant, ce serait pour mettre un serveur dhcpd v6 ensuite pour creer les sous reseaux automatiquement
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: nitro le 11 avril 2023 à 14:43:07
Bon mise a jour ce matin sans vraiment regarder le changelog et boum, plus de dhclient :(
Du coup j'essaye d'utiliser dhcpcd sans succès. Est-ce bien celui des packages ? car la version ne correspond pas a celle que vous mentionnez.

Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: B3nJ1 le 11 avril 2023 à 15:49:29
Non, il faut builder la version depuis la branche master du repo git: https://github.com/NetworkConfiguration/dhcpcd

Un simple
./configure
make
doas make install

a suffit pour moi (en 7.2).

Je tente l'upgrade en 7.3 ce weekend :)

J'aimerai quand même comprendre pourquoi je reçois un NAK au moment du renouvellement. Je suppose que la demande de renew de dhcpcd ne plait pas à orange ?
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: nitro le 11 avril 2023 à 16:02:23
Du coup c'est pas le meme que celui qui est dans le tree packages d'openbsd ? il est en version 9.4.1... ou c'est un fork ?
De mon cote je ne veux pas d'ipv6 mais juste ipv4, je ne suis pas sense avoir besoin du patch vu qu'il est pour ipv6.
J'ai deja du mal a envoyer l'option 90... un coup ca passe, un coup non...

Non, il faut builder la version depuis la branche master du repo git: https://github.com/NetworkConfiguration/dhcpcd

Un simple
./configure
make
doas make install

a suffit pour moi (en 7.2).

Je tente l'upgrade en 7.3 ce weekend :)

J'aimerai quand même comprendre pourquoi je reçois un NAK au moment du renouvellement. Je suppose que la demande de renew de dhcpcd ne plait pas à orange ?
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: B3nJ1 le 11 avril 2023 à 16:12:45
La 9.4.1 est trop ancienne, y a peut-être eu d'autres fix entre temps...

Je viens de voir que l'auteur a tout juste sorti une version stable 9.5.0, celle-ci devrait marcher: https://github.com/NetworkConfiguration/dhcpcd/releases

Par curiosité, pourquoi ne pas vouloir d'IPv6 ?
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: nitro le 11 avril 2023 à 16:23:44
Je comprend pas pourquoi alors dans l'article on parle de 4.9.1...

Pourquoi pas d'ipv6 ? parce que pas besoin et que ya trop de zones d'ombres pour moi encore dessus. je ne maitrise pas assez :/

Par contre je sens bien que je vais me tapper le support des options pour dhcpleased au lieu d'utiliser un truc non natif !

La 9.4.1 est trop ancienne, y a peut-être eu d'autres fix entre temps...

Je viens de voir que l'auteur a tout juste sorti une version stable 9.5.0, celle-ci devrait marcher: https://github.com/NetworkConfiguration/dhcpcd/releases

Par curiosité, pourquoi ne pas vouloir d'IPv6 ?
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: B3nJ1 le 11 avril 2023 à 16:53:24
C'est la version 4.9.1 qui est dans les ports. Elle n'est PAS compatible avec les options nécessaires pour se connecter au réseau orange (peut être en passant les options en "raw"?).

La toute dernière release devrait être compatible.

Pour IPv6 c'est dommage de pas s'en servir, ça marche très bien. Les devices par défaut auront des adresses temporaires (si c'est ça qui t'inquiète), et avec PF c'est simple de bloquer par défaut toutes les connexions entrantes.
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: nitro le 11 avril 2023 à 17:09:11
dhcpcd-9.4.1p2v0.tgz pour le packages en 7.3

Je viens d'ugrade en master et rien n'y fait. Apres je suis sur une zone ou j'ai pas encore ce système de token a renew tout le temps.
J'ai une box pro donc peut être pas le meme mécanisme.



C'est la version 4.9.1 qui est dans les ports. Elle n'est PAS compatible avec les options nécessaires pour se connecter au réseau orange (peut être en passant les options en "raw"?).

La toute dernière release devrait être compatible.

Pour IPv6 c'est dommage de pas s'en servir, ça marche très bien. Les devices par défaut auront des adresses temporaires (si c'est ça qui t'inquiète), et avec PF c'est simple de bloquer par défaut toutes les connexions entrantes.
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: B3nJ1 le 11 avril 2023 à 17:45:05
Je ne sais pas pour l'offre pro, en effet. Mais tu es sûr d'utiliser la version master maintenant ?

Pour le moment ça marche avec une string statique pour l'authentification, c'est ce que j'ai configuré. Le token d'authentification est configuré en dur dans ma config pour le moment.

À terme je pense que c'est faisable d'utiliser les hooks pour génerer la chaine à la volée.

Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: nitro le 11 avril 2023 à 17:46:28
Je ne sais pas pour l'offre pro, en effet. Mais tu es sûr d'utiliser la version master maintenant ?

Pour le moment ça marche avec une string statique pour l'authentification, c'est ce que j'ai configuré. Le token d'authentification est configuré en dur dans ma config pour le moment.

À terme je pense que c'est faisable d'utiliser les hooks pour génerer la chaine à la volée.

Bon en fait j'ai pu générer mes anciennes trames dhcp et elles sont différentes de celles de dhcpcd sur l'auth.
dhcpcd me construit une trame de 188 bytes avec un RDM truc muche alors que dhclient me faisait une trame de 77 bytes et rien dans RDM. bref, je vais matter le code voir comment ca genre tout ca...
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: B3nJ1 le 11 avril 2023 à 17:52:26
Oui les RDM qui viennent de la livebox sont toujours à zero, alors que dhcpcd utilise un vrai nombre. Mais visiblement orange l'ignore pour le moment.

Je suppose que ta chaine est pas bonne: les génerateurs en ligne inclus le RDM, il faut l'enlever de la trame génerée.

Si t'as des dumps de ta LB, recopie juste la valeur du token d'authentification, c'est ce que j'ai fait :)
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: nitro le 11 avril 2023 à 17:54:02
yep, version 9.99 qui vient de master.


Je ne sais pas pour l'offre pro, en effet. Mais tu es sûr d'utiliser la version master maintenant ?

Pour le moment ça marche avec une string statique pour l'authentification, c'est ce que j'ai configuré. Le token d'authentification est configuré en dur dans ma config pour le moment.

À terme je pense que c'est faisable d'utiliser les hooks pour génerer la chaine à la volée.
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: B3nJ1 le 11 avril 2023 à 17:55:41
Le token d'authentification doit commencer par "1a:09". Tu peux virer ce qu'il y a avant si tu utilises un truc qui vient d'un génerateur.
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: nitro le 11 avril 2023 à 17:56:22
Oui les RDM qui viennent de la livebox sont toujours à zero, alors que dhcpcd utilise un vrai nombre. Mais visiblement orange l'ignore pour le moment.

Je suppose que ta chaine est pas bonne: les génerateurs en ligne inclus le RDM, il faut l'enlever de la trame génerée.

Si t'as des dumps de ta LB, recopie juste la valeur du token d'authentification, c'est ce que j'ai fait :)

J'utilise tous les scripts qu'il y a sur ce post. Ma chaine commence par un 1a...
Que ce soit une générée ou celle que j'ai dans mon ancien dhclient, meme combat =)
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: nitro le 11 avril 2023 à 17:59:17
Le token d'authentification doit commencer par "1a:09". Tu peux virer ce qu'il y a avant si tu utilises un truc qui vient d'un génerateur.

On dirait que dhcpcd encode mon token un coup de plus, en gros quand je décode avec Wireshark une ancienne trame, je vois bien fti/... mais quand je decode une actuelle, je vois que de l'hexadécimale, et ca fait quasiment le double en taille...
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: B3nJ1 le 11 avril 2023 à 18:01:38
Met la en dur dans ta config, ça éliminera un potentiel problème.

T'as essayé de prendre ma config?

# dual-stack IPv4 et IPv6
noipv6rs
noipv4ll
nohook hostname ntp.conf
allowinterfaces vlan832
debug

# based on https://blog.brimbelle.org/index.php/2018/04/30/fibre-orange-ipv6-et-dhcpcd/
interface vlan832
        # 00030001<MAC_ADDRESS_LIVEBOX_SANS_DEUXPOINTS> dans /var/db/dhcpcd/duid
        # iaid below = 4 derniers octets de la MAC de la livebox
        iaid    XXXXXXXX
        clientid
        # delegation de /64s à d'autres interfaces. rad(8) s'en occupera
        # les interfaces ci-dessous dépendent bien sûr de votre config... j'ai un VLAN pour les invités, les enfants, l'IoT...
        ia_pd    XXXXXXXX vether0/1/64
        option auth
        noauthrequired
        authprotocol token 0x123/0x456
        userclass FSVDSL_livebox.Internet.softathome.Livebox5
        #vendclass 1038 sagem
        vendorclassid sagem
        option 1 3 6 15 28 51 58 59 90 119 120 125
        nooption 33 57
        # Le token 0x456 ci-dessous est un magic string (dhcplivebox250) qu'Orange renvoie
        authtoken 0x456 "" forever 64:68:63:70:6c:69:76:65:62:6f:78:66:72:32:35:30
        authtoken 0x123 "" forever # 1a:09:xx:xx:xx:xx...
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: nitro le 11 avril 2023 à 18:05:49
yep, tout pareil !
J'ai teste authtoken 0x123 avec un # ou avec un espace comme dans l'autre config.
Avec le # il me dit que dhcp_auth_encode: Invalid argument

Met la en dur dans ta config, ça éliminera un potentiel problème.

T'as essayé de prendre ma config?

# dual-stack IPv4 et IPv6
noipv6rs
noipv4ll
nohook hostname ntp.conf
allowinterfaces vlan832
debug

# based on https://blog.brimbelle.org/index.php/2018/04/30/fibre-orange-ipv6-et-dhcpcd/
interface vlan832
        # 00030001<MAC_ADDRESS_LIVEBOX_SANS_DEUXPOINTS> dans /var/db/dhcpcd/duid
        # iaid below = 4 derniers octets de la MAC de la livebox
        iaid    XXXXXXXX
        clientid
        # delegation de /64s à d'autres interfaces. rad(8) s'en occupera
        # les interfaces ci-dessous dépendent bien sûr de votre config... j'ai un VLAN pour les invités, les enfants, l'IoT...
        ia_pd    XXXXXXXX vether0/1/64
        option auth
        noauthrequired
        authprotocol token 0x123/0x456
        userclass FSVDSL_livebox.Internet.softathome.Livebox5
        #vendclass 1038 sagem
        vendorclassid sagem
        option 1 3 6 15 28 51 58 59 90 119 120 125
        nooption 33 57
        # Le token 0x456 ci-dessous est un magic string (dhcplivebox250) qu'Orange renvoie
        authtoken 0x456 "" forever 64:68:63:70:6c:69:76:65:62:6f:78:66:72:32:35:30
        authtoken 0x123 "" forever # 1a:09:xx:xx:xx:xx...
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: B3nJ1 le 11 avril 2023 à 18:08:50
Ah oui, faut pas le #, c'est juste pour faire un commentaire.

Le serveur dhcp d'orange ne répond pas du tout ?
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: nitro le 11 avril 2023 à 18:11:09
Nope, rien du tout, mais d'un autre cote la chaine d'auth est double encodee... donc bon...

Ah oui, faut pas le #, c'est juste pour faire un commentaire.

Le serveur dhcp d'orange ne répond pas du tout ?
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: B3nJ1 le 11 avril 2023 à 18:12:47
Tu l'as bien mise en hexa, avec les ':', sans guillemets, etc?
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: nitro le 11 avril 2023 à 18:18:48
noipv6rs
noipv4ll
noipv6
allowinterfaces vlan832
nohook hostname ntp.conf
debug

interface vlan832
iaid DD8XXXX
ia_pd DD8AXXXX vlan832/1/64
clientid
option auth
noauthrequired
authprotocol token 0x123/0x456
userclass FSVDSL_livebox.Internet.softathome.Livebox4
vendorclassid sagem
option 1 3 6 15 28 51 58 59 90 119 120 125
nooption 33 57
authtoken 0x456 "" forever 64:68:63:70:6c:69:76:65:62:6f:78:66:72:32:35:30
authtoken 0x123 "" forever  1a:09:00:00:05:00:01:03:00:01:0d:66:74:69:2f:00:00:........:e2:a4:f2:06:7f:31:d5

Tu l'as bien mise en hexa, avec les ':', sans guillemets, etc?
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: B3nJ1 le 11 avril 2023 à 18:22:01
Cette ligne

ia_pd DD8AXXXX vlan832/1/64
Ne va pas marcher (mais c'est pas ça qui te bloque actuellement je pense).

On dirait que tu as deux espaces entre forever et 1a:..., t'as essayé avec un seul? Sinon j'avoue que je vois pas trop du coup...
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: nitro le 11 avril 2023 à 18:23:01
si j'enlève cet espace, j'ai un dhcp_auth_encode qui me met invalid argument :(

Cette ligne

ia_pd DD8AXXXX vlan832/1/64
Ne va pas marcher (mais c'est pas ça qui te bloque actuellement je pense).

On dirait que tu as deux espaces entre forever et 1a:..., t'as essayé avec un seul? Sinon j'avoue que je vois pas trop du coup...
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: B3nJ1 le 11 avril 2023 à 18:26:00
Du coup je pense que ton token doit pas être valide... J'ai pas essayé les scripts de ce thread, j'ai utilisé la valeur que j'ai capturé venant de ma livebox :( T'as essayé https://jsfiddle.net/kgersen/3mnsc6wy/ ? (en enlevant les 00 avant 1a)

EDIT: ton token devrait commencer par "1a:09:00:00:05:58:01:03:41:01:0d", ça a pas l'air d'être le cas ici.
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: nitro le 11 avril 2023 à 18:33:02
Bon ca marche !!!!
Merci pour ton aide !

en fait je testai des fois avec rcctl et des fois en lançant direct le daemon que j'avais compile. Je l'avais installé dans /sbin mais il y avait un reliquat de dhcpcd dans /usr/local/sbin :(
Je comprend pas pourquoi rcctl le prenait la...

Je comfirme que le dhcp_auth_encode: invalid Argument vient bien de la version. en 9.4.1 ca ne passe pas, avec la version master c'est bon.


si j'enlève cet espace, j'ai un dhcp_auth_encode qui me met invalid argument :(
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: nitro le 11 avril 2023 à 18:35:10
Par contre le passage en 7.1 -> 7.3 je perds pas mal en vitesse :/ j'étais a ~1200Mbits en download avant, je plafonne a 600 la...
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: nitro le 11 avril 2023 à 18:37:29
Je l'avais modifie lors du copie/colle pour l'anonymiser

Du coup je pense que ton token doit pas être valide... J'ai pas essayé les scripts de ce thread, j'ai utilisé la valeur que j'ai capturé venant de ma livebox :( T'as essayé https://jsfiddle.net/kgersen/3mnsc6wy/ ? (en enlevant les 00 avant 1a)

EDIT: ton token devrait commencer par "1a:09:00:00:05:58:01:03:41:01:0d", ça a pas l'air d'être le cas ici.
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: B3nJ1 le 11 avril 2023 à 18:39:19
Bon au moins ça marche :)

La perte de vitesse me parait bizarre... mais ça serait pas la première fois que je vois ça, j'avais déjà vu des regressions comme ça dans le passée. Et si t'as le malheur de t'en plaindre sur la dl, tu vas t'en prendre plein la figure :( (fallait tester avant ! Pourquoi tu as pas utiliser current avant !, etc)

T'as quoi comme config (CPU, chipset réseau, etc) ? T'as bien mis match out log on egress set prio 1 tos 0x00 dans pf.conf? Sans ça j'avais vraiment pas un bon débit.

Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: nitro le 11 avril 2023 à 18:40:17
hmm j'ai change avec vlan1000 mais ca n'a pas l'air de fonctionner, je vais regarder un peu plus pour ipv6

Cette ligne

ia_pd DD8AXXXX vlan832/1/64
Ne va pas marcher (mais c'est pas ça qui te bloque actuellement je pense).

On dirait que tu as deux espaces entre forever et 1a:..., t'as essayé avec un seul? Sinon j'avoue que je vois pas trop du coup...
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: B3nJ1 le 11 avril 2023 à 18:41:33
Pour l'IPv6 faut vraiment les régles de prio mises dans pf.conf, sans ça ça marchait pas pour moi.
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: nitro le 11 avril 2023 à 18:42:02
Yep !

J'ai une machiatobin single shot, 4 core ARM a 1,6Ghz et 8Gig de ram.
600 Mbits c'est pas bien grave =) ca suffit pour ce que je dois en faire...

Bon au moins ça marche :)

La perte de vitesse me parait bizarre... mais ça serait pas la première fois que je vois ça, j'avais déjà vu des regressions comme ça dans le passée. Et si t'as le malheur de t'en plaindre sur la dl, tu vas t'en prendre plein la figure :( (fallait tester avant ! Pourquoi tu as pas utiliser current avant !, etc)

T'as quoi comme config (CPU, chipset réseau, etc) ? T'as bien mis match out log on egress set prio 1 tos 0x00 dans pf.conf? Sans ça j'avais vraiment pas un bon débit.
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: B3nJ1 le 11 avril 2023 à 18:45:56
Je pense qu'il faut quand même le faire remonter, au cas où... j'ai vu pleins de fix smp pour pf, j'esperais ne pas perdre en perf en upgradant... on verra ce weekend :)

Avec un Atom C3558 sous 7.2, j'ai l'impression de plafonner à ~1.5G en téléchargement.
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: nitro le 11 avril 2023 à 18:51:13
C'est deja pas mal ! Faut pas oublier que openbsd a encore un giantlock et que les perfs seront toujours inférieures...


Je pense qu'il faut quand même le faire remonter, au cas où... j'ai vu pleins de fix smp pour pf, j'esperais ne pas perdre en perf en upgradant... on verra ce weekend :)

Avec un Atom C3558 sous 7.2, j'ai l'impression de plafonner à ~1.5G en téléchargement.
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: B3nJ1 le 11 avril 2023 à 20:22:12
Certes, mais il me semble que l'objectif est d'éliminer petit à petit ce giantlock, les perfs devraient augmenter au fil des releases (sans tenir compte des patchs de sécurité, qui doivent ralentir le tout...)
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: shrd le 12 avril 2023 à 11:48:10
vous avez la config pour mettre la livebox derrière pour garder le tel (ou même la tv éventuellement)
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: hj67 le 12 avril 2023 à 22:38:26
Il faut donner à la LB :
- les DNS Orange domain-name-servers
- l'option 15 domain-name
- l'option 119 domain-search
- l'option 90 rfc3118-authentication
- l'option 125  vendor-specific-infos

Toutes les valeurs sont dans le bail reçu sur l'interface wan 832. Il faut les reprendre pour le serveur DHCP qui va répondre à la LB cliente (sur un vlan 832 également).

Pour la TV, il faudra configurer le vlan 840 sur l'interface wan et un igmp proxy sur le routeur (et non plus sur la LB). Le décodeur se branchera sur le routeur et non la LB.
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: pitalugue le 13 avril 2023 à 08:17:13
C'est deja pas mal ! Faut pas oublier que openbsd a encore un giantlock et que les perfs seront toujours inférieures...

Le réseau n'est plus couvert par un giantlock depuis un bon moment.
Actuellement l'écueil principal est, d'une manière générale, le nombre de queues mises à disposition ou exploitables au travers de tel ou tel driver.

Quant aux performances inférieures, un peu de prudence suivant le cas d'utilisation et lorsque c'est testé par des professionnels. Voici un exemple ou fatalement avec OpenBSD on ne traverse qu'une queue via le controlleur intel i211. L'objectif de l'article est de montrer ce qu'une petite machine peut réaliser dès qu'on "vectorise" mais pour référence les perfs des piles Linux et OpenBSD sont aussi visibles avec des versions d'il y a 2 ans et demi.
https://ipng.ch/s/articles/2021/07/19/pcengines-apu6.html

Au travers de i210 puis i211
imix: Linux 150 Kpps - OpenBSD 145 Kpps
64B: Linux 97 Kpps - OpenBSD 152 Kpps
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: B3nJ1 le 13 avril 2023 à 10:31:11
Dans une autre vie j'étais connecté en gigabit en câble, via un APU2. Je plafonnais à 600 Mbit/s. Après une upgrade (sans changer les règle PF) j'étais à 300.

J'avais pas des règles folles non plus, just du nat en gros... Opennsd est peut-être plus performant à gérer des milliers et plus de connections que Linux ? Possible. Est-ce applicable à notre scénario ? Je ne pense pas.

Du coup j'étais reparti sur debian + nftables et j'avais bien mon gigabit.

J'ai toujours plusieurs APU, quand/si j'ai le temps j'aimerais bien faire des tests de régression.
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: nitro le 13 avril 2023 à 13:25:17
En 7.2 il y a encore des parties du réseau qui sont sous big lock, donc bon, a voir. Je vais aller jeter un coup d'oeil aux commits de mon driver mvpp.
Je dois faire encore pas mal de tests pour valider que les perfs sont moins bonnes...

Dans une autre vie j'étais connecté en gigabit en câble, via un APU2. Je plafonnais à 600 Mbit/s. Après une upgrade (sans changer les règle PF) j'étais à 300.

J'avais pas des règles folles non plus, just du nat en gros... Opennsd est peut-être plus performant à gérer des milliers et plus de connections que Linux ? Possible. Est-ce applicable à notre scénario ? Je ne pense pas.

Du coup j'étais reparti sur debian + nftables et j'avais bien mon gigabit.

J'ai toujours plusieurs APU, quand/si j'ai le temps j'aimerais bien faire des tests de régression.
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: pitalugue le 13 avril 2023 à 14:13:43
En 7.2 il y a encore des parties du réseau qui sont sous big lock, donc bon, a voir. Je vais aller jeter un coup d'oeil aux commits de mon driver mvpp.
Je dois faire encore pas mal de tests pour valider que les perfs sont moins bonnes...

splnet a sauté du kernel_lock en 6.6. Ca fait des années qu'il y a un netlock et un pflock sous OBSD. Des morceaux d'arp ne sont pas encore traités mais ce n'est pas un problème pour votre forwarding.
Par contre mon petit doigt me dit que mvpp est mono queue et que pour 1G ca peut aller, 2.5G je ne sais pas mais pour 10G OpenBSD n'est pas encore la bonne solution. Linux sera bien plus approprié si toutefois le code a été maintenu pour suivre les éventuelles modifications du noyau l'impactant.
Quoi qu'il en soit bon courage à vous deux et à plus.
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: moviuro le 15 avril 2023 à 16:21:30
C'était bien sûr une faute de frappe : dhcpcd 9.4.1 = 💩 ; dhcpcd 9.5.0 et plus = 👍️. La release d'OpenBSD 7.3 a eu lieu juste avant la publication de dhcpcd 9.5.0 (et 10.0), donc le paquet/port dhcpcd sur OpenBSD 7.3 n'est toujours pas fonctionnel pour ce qu'on veut en faire !

Par ailleurs, j'ai épluché mes captures réseau, et surprise, j'ai migré selon levieuxatorange. J'ai en effet une option 17 dans la réponse DHCPv6 de fe80::ba0:bab.

0000   00 11 00 12 00 00 05 58 00 01 00 0c 00 01 00 00   .......X........ option 17 longueur 18 enterprise ID Orange (1368) option 1 longueur 12 00 01 00 00
0010   00 00 00 00 00 00                                 ......           00 00 00 00 00 00

Du coup, les conseils dans le post original sont visiblement fonctionnels (yay !).

Pour les performances je n'ai malheureusement qu'une offre 1Gbps/300Mbps, et speed.cloudflare.com (http://speed.cloudflare.com) me donne un p90 à 890Mbps/300Mbps. Notez bien que pour l'upload, le match out log on egress set prio 1 est crucial.
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: B3nJ1 le 26 avril 2023 à 16:16:03
Je pense avoir trouvé la raison des NAK: les renew dhcp ne sont pas envoyé en COS6. J'ai ajouté comme règle dans mon pf.conf:

# Set prio 6 on DHCP
match out log on vlan832 inet proto udp from any to any port bootps set prio 6

Depuis, plus de NAK dans les logs.

@moviuro je pense que ça serait bien d'ajouter cette ligne dans la première page, ainsi que le noauthrequired dans la config de dhcpcd, pour pas se retrouver sans connection si jamais le serveur dhcp d'orange refusait un renew.
Titre: Remplacer sa livebox par OpenBSD 🐡 (7.2+) (dual stack)
Posté par: mlkmlk le 01 juin 2023 à 13:31:39
C'était bien sûr une faute de frappe : dhcpcd 9.4.1 = 💩 ; dhcpcd 9.5.0 et plus = 👍️. La release d'OpenBSD 7.3 a eu lieu juste avant la publication de dhcpcd 9.5.0 (et 10.0), donc le paquet/port dhcpcd sur OpenBSD 7.3 n'est toujours pas fonctionnel pour ce qu'on veut en faire !

Par ailleurs, j'ai épluché mes captures réseau, et surprise, j'ai migré selon levieuxatorange. J'ai en effet une option 17 dans la réponse DHCPv6 de fe80::ba0:bab.

0000   00 11 00 12 00 00 05 58 00 01 00 0c 00 01 00 00   .......X........ option 17 longueur 18 enterprise ID Orange (1368) option 1 longueur 12 00 01 00 00
0010   00 00 00 00 00 00                                 ......           00 00 00 00 00 00

Du coup, les conseils dans le post original sont visiblement fonctionnels (yay !).

Pour les performances je n'ai malheureusement qu'une offre 1Gbps/300Mbps, et speed.cloudflare.com (http://speed.cloudflare.com) me donne un p90 à 890Mbps/300Mbps. Notez bien que pour l'upload, le match out log on egress set prio 1 est crucial.

Il semblerait que depuis quelques jours dhcpcd version 10.0.1 soit disponible :
https://cdn.openbsd.org/pub/OpenBSD/7.3/packages-stable/amd64/dhcpcd-10.0.1pl20230518v0.tgz

Je n'ai pas testé si cela fonctionne avec ce package la, je fonctionne encore avec isc_dhclient pour ipv4&6.