Fibre Orange et routeur OpenBSD

Depuis maintenant deux semaines, brimbelle.org a migré sur un accès fibre Orange, en remplacement de mon ancien accès ADSL Free. Suite à une innondation, les débits sur ma ligne étaient devenus catastrophiques (autour de 300kb/s d’upload).
Comme l’objectif est de s’amuser un peu et d’héberger ma petite infrastructure sur du matériel et logiciel maîtrisé, je me suis totalement débarrassé de la Livebox, remplacée par mon routeur OpenBSD (à base de PC Engines APU 1C4), branché directement derrière l’ONT.

Je ne vais pas réécrire les nombreux guides déjà présents sur Internet, l’objectif est de donner quelques astuces pour profiter de toutes les fonctionnalités.

1. Les priorités 802.1Q/802.1p

Sur la Livebox, les différents types de flux passent par plusieurs VLAN 802.1Q pour séparer Internet, la VoD, la télévision et la téléphonie.

Selon l’endroit où vous habitez, il se peut que les infrastructures Orange nécessitent de positionner des priorités 802.1p pour les différents paquets au sein de ces VLAN. Je pense que ce paramétrage est nécessaire sur les anciennes infrastructures compatibles PPPoE. Sur les nouvelles, uniquement en DHCP, cela ne devrait plus être nécessaire.

Je suis pour ma part dans le mauvais cas… sans les bonnes priorités rien ne fonctionne. Voici ce qu’il faut respecter et la manière de faire :

  • 832 pour Internet : requêtes DHCP, SLAAC et DHCPv6 en priorité 6,
    les données en priorité 1.
  • 838 pour la VoD : priorité 4
  • 840 pour la télévision : priorité 5

Sous OpenBSD, les requêtes DHCP notamment, passent par des raw sockets. Il n’est donc pas possible de mettre la bonne priorité avec PF. La solution consiste donc à positionner la priorité des interfaces comme suit avec l’option ‘llprio’ de ifconfig(8) disponible depuis OpenBSD 6.0 :
# ifconfig vlan832 llprio 6
# ifconfig vlan838 llprio 4
#pas de DHCP sur l'interface vlan840

Ensuite, vous pouvez utiliser PF pour forcer dans le trafic sortant, toutes les autres priorités. Quelque chose comme ceci fonctionne :
match out on vlan832 set prio 1
match out on vlan838 set prio 4
match out on vlan840 set prio 5

A vous d’adapter la configuration selon votre besoin. Selon les règles que vous avez, il sera également nécessaire de forcer la priorité au niveau des règles de filtrage elle-mêmes (notamment pour DHCPv6, voir plus bas).

2. IPv4

Pour IPv4, rien de particulier à signaler : dhclient(8) fourni de base avec OpenBSD peut être configuré sans problème pour passer les bonnes options à Orange. Les liens fournis en fin d’article permettent de mettre les bonnes valeurs selon votre cas.

3. IPv6

Pour IPv6, la configuration est un peu plus particulière. Il est nécessaire d’utiliser deux mécanismes.

D’abord, attribuer une adresse IPv6 de type linklocal sur l’interface vlan832 et récupérer la route par défaut d’Orange avec quelque chose comme :
# ifconfig vlan832 inet6 eui64 autoconf

Ensuite, il faut récupérer votre préfixe IPv6 public chez Orange par DHCPv6. OpenBSD n’a pas de client de base pour faire cela. D’après mes recherches, dhcpcd dans les ports permettrait (peut-être) de le faire dans ses dernières versions mais :

  • le port n’est pas à jour et il y a un bug au niveau de l’option d’authentification utilisée par Orange.
  • Il manque la gestion de l’option 15 « User Class » à dhcpcd et il n’est pas possible de passer des options custom dans les requêtes. Je ne sais pas si ça marche sans cette option chez Orange… à tester.

Le plus facile est d’utiliser dibbler. Ce client IPv6, dont vous pourrez trouver la version 1.0.1 ici fonctionne bien. Il n’est pas disponible dans les ports, mais sa compilation est simple et la configuration se trouve également dans les liens plus bas. Attention, dibbler n’utilise pas les raw sockets, il vous faudra donc avoir des règles PF spécifiques pour positionner la priorité 802.1p à 6 sur les paquets UDP pour DHCPv6.

Pour ma part, contrairement aux autres articles que l’on peut trouver sur Internet, je me sers de dibbler uniquement pour maintenir le bail DHCPv6 (et donc garder le préfixe qu’Orange m’a attribué). Je n’exécute aucun script pour configurer mes interfaces. En effet, Orange distribue via DHCPv6 un préfixe /56 et l’intégralité est routé chez vous. La Livebox ne vous donne accès qu’au premier /64, mais avec votre propre routeur, libre à vous d’utiliser le reste… c’est ce que je fais.

Au niveau de mon réseau local privé, j’utilise rtadvd(8) pour distribuer automatiquement un subnet /64 de ce /56 et sa route par défaut. Dans l’environnement DMZ, j’ai paramétré en statique un autre /64.

Ceci n’est pas à 100% robuste, car si Orange décide un jour de changer le préfixe IPv6 qu’ils m’attribuent, plus rien ne fonctionnera. En pratique, Orange maintient en IPv4 et IPv6 des baux de 7 jours. Donc si votre client DHCPv[46] les renouvelle à temps, il n’y a pas de raison qu’ils changent. De plus, hébergeant ce serveur sur l’un des /64, ça deviendrait une usine à gaz si je souhaitais tout paramétrer en automatique, jusqu’aux changements DNS…

4. VoD / Télévision

Pour La VoD, donc le VLAN 838, les guides cités en lien sont assez complets. Ce qui est important :

  • respecter encore les bonnes priorités, c’est à dire 4 (VLAN 838),
  • paramétrer le client DHCP sur cette interface avec les bonnes options,
  • ouvrir les bons flux en sortie  de l’interface vlan838 et mettre une règle de NAT dans PF.

Pour la Télévision, VLAN 840, il va falloir utiliser igmpproxy disponible dans les ports. Sa configuration est très simple. Vous la trouverez également dans les liens indiqués en dernière partie.
L’important pour que cela fonctionne est :

  • encore une fois, respecter la bonne priorité de 5 sur le VLAN 840,
  • paramétrer en statique l’interface vlan840 avec une adresse IP (peu importe la quelle, par exemple 192.168.34.0/24),
  • ouvrir les bons flux en entrée et sortie de l’interface vlan840 (sans NAT) ; ne pas oublier d’autoriser l’IGMP sur l’interface vlan840 ET l’interface interne sur laquelle est branché le décodeur.

Enfin, un point important, le décodeur TV Orange doit être configuré pour utiliser les serveurs DNS d’Orange. Je vous recommande donc de paramétrer dhcpd(8) de manière à lui réserver une IP avec les bons DNS :
host player {
hardware ethernet 18:1e:78:xx:xx:xx;
fixed-address 192.168.xx.xx;
option domain-name-servers 80.10.246.136, 81.253.149.6;

Remarque : différents exemples de configuration sur Internet montent un bridge(4) entre les interfaces vlan838 et vlan840. Ça n’est absolument pas nécessaire.

5. Le pr0n nécessaire 😉

6. Liens utiles

Laisser un commentaire

Vous devez être connecté pour laisser un commentaire.