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. 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 !