+++

title = "OpenWRT et dhcp6c : la méthode Barrier Breaker"
date = 2015-02-02
aliases = [ "post/2015/02/02/OpenWRT-et-dhcp6c-:-la-méthode-Barrier-Breaker"]
[taxonomies]
tags = [ "système", "rézo" ]
+++

Parce que les tutos obsolètes, ça commence à bien faire !

<!-- more -->

Ayant eu récemment de très nombreux problèmes avec *pfSense*, j'ai finalement mis le truc au placard et l'ai remplacé par un truc d'homme avec des poils : *OpenWRT*.

# pfSense, atheros et instabilité

Depuis à peu près toutes les versions de pfSense, avec à peu près toutes les cartes *atheros*, j'ai toujours eu des emmerdes. La principale étant le message d'erreur suivant, répété en boucle dans les logs, rendant le Wi-Fi inutilisable :

```
kernel: ath0: stuck beacon; resetting (bmiss count 4)
```

J'ai eu beau essayé toutes les astuces du monde, sacrifié une chèvre au clair de lune dans un cercle de pierre avec trois nains unijambistes enroulés dans du jambon, rien à faire. De ce que j'ai compris, le problème provient de l'intégration du driver *ath* dans FreeBSD. Sur les séries 2.1.x de *pfSense*, impossible de faire tourner correctement une carte *atheros* « ancienne génération » (carte mini-PCI, compatible avec les Alix2).

Sur les PC-Engines APU, impossible de faire tourner les cartes mini-PCI Express avec des *atheros* plus récents.

Le souci, c'est qu'à un moment, j'ai quand même besoin de le faire marcher proprement môa, le Wi-Fi. En prime, les version Linux de *hostapd* permettent de faire tourner plusieurs SSID sur la même carte, ce que ne permettent pas, à ma connaissance, les versions FreeBSD.

Donc, fuck that et hop ! OpenWRT.

*Ami internaute, si au hasard d'un moteur de recherches quelconque tu tombes sur cet article en essayant de résoudre ton problème avec pfSense, tu es bien baisé.*

*Mais comme je suis d'un naturel généreux, je te donne une petite astuce : force le canal de la carte sur un nombre assez élevé. Ça suffit en général pour réduire considérablement les problèmes avec les cartes Atheros, sans toutefois les supprimer complètement.*

# Bon alors, tu l'envoies la pastille ?

Dans Barrier Breaker, nul besoin de faire des choses compliqué [comme ça](http://doc.rhizome-fai.net/doku.php?id=technique:materiel:ap_interieurs:openwrt_ipv6). C'est pas que ça marche pas, mais ça fait rajouter plein de paquets alors que nativement, OpenWRT est maintenant capable de gérer tout ça.

Comment ?

On commence par créer une interface virtuelle *wan6* dans */etc/config/network* :

```
config interface wan6
        option ifname @wan
        option proto dhcpv6
```

C'est une simple référence à l'interface existante, permettant de déclencher le *dhcp6c* sur la bonne interface.

Ensuite, sur chaque interface LAN, il suffit d'ajouter la taille du préfixe IPv6 (donc en général 64) ainsi que le sous-réseau concerné (pour un /56, indiquez l'ensemble du tuple entre le /48 et le /64). Par exemple :

```
config interface 'lan'
        option ifname 'eth1'
        option proto 'static'
        option ipaddr '10.0.0.1'
        option netmask '255.255.255.0'
        option ip6assign '64'
        option ip6hint '5e00'
```

Cette interface distribuera donc des IPv6 en : XXXX:XXXX:XXXX:5e00::/64, le préfixe étant récupéré via *dhcp6c*.

Je ne sais pas si ça pourrait fonctionner en indiquant moins d'information (toujours pareil en /56, pourrait ton simplement indiquer les bits entre /56 et /64 ?).

En attendant, cette méthode fonctionne parfaitement et permet de simplifier considérablement la configuration et les mises à jour d'OpenWRT !
