Bonjour à tous,
J'ai réalisé plusieurs essais pour remplacer la box Red by SFR par pfSense en suivant les différents posts sur ce forum et ailleurs.
Les résultats jusqu'à présent :
- IPv4 : fonctionnel
- IPv6 : fonctionnel
- OpenVPN : non fonctionnel
- Téléphonie : appels entrants ok / appels sortants non
Les tests ont été fait avec pfSense 1.6.0.
Méthode suivie jusqu'ici (sera mis à jour suivant mes essais)
Etape préparatoire :Débrancher la box NB6VAC de l'ONT
Brancher le port WAN de la box à un PC faisant fonctionner Wireshark pour capturer les paquets.
Récupérer les informations suivantes :
- sur une requête DHCP : adresse MAC, "Vendor class identifier"
- sur une requête DHCPv6 : DUID, Code HEXA du "Vendor Class"
Laisser l'ONT débranché pour l'instant.
Modification de l'utilitaire DHCP6C :Comme évoqué dans différents posts et sur ce blog :
https://wiki.virtit.fr/doku.php/kb:linux:pfsense:remplacer_sa_box_orange_par_un_pfsense, on va avoir besoin d'utiliser la commande "send raw-option" afin d'effectuer nos requêtes DHCPv6.
Pour se faire, se connecter en SSH à pfSense (ou execter les commandes depuis Diagnostics > Command prompt) :
# mv /usr/local/sbin/dhcp6c /usr/local/sbin/dhcp6c.bak
# curl https://wiki.virtit.fr/lib/exe/fetch.php/kb:linux:pfsense:dhcp6c -o /usr/local/sbin/dhcp6c.new
# chmod +x /usr/local/sbin/dhcp6c.new
# ln -s /usr/local/sbin/dhcp6c /usr/local/sbin/dhcp6c.new
Note : l'utilitaire peut également provenir d'opnSense via le lien :
https://mirror.vraphim.com/opnsense/FreeBSD%3A12%3Aamd64/21.7/latest/All/dhcp6c-20200512_1.txzConfiguration de pfSense (System) :Dans System > Advanced > Networking
Modifier les paramètres suivants :
-
DHCP6 DUID à
DUID-LL -
DUID-LL avec le code DUID que vous avez trouvé précédemment (adresse MAC WAN +1 dans mon cas)
Configuration de pfSense (Interface) :Dans Interface > WAN
Configurer l'interface de la manière suivante :
-
IPv4 Configuration Type : DHCP
-
IPv6 Configuration Type : DHCP6
-
MAC Address : avec l'adresse MAC précédemment récupérée
- Dans la partie "DHCP Client Configuration", cocher "Configuration Override"
- Chemin du fichier de configuration : "/usr/local/etc/dhcp4c_wan_custom.conf"
- Pour la partie "DHCP6 Client Configuration", cocher "Configuration Override" et "Do not wait for a RA"
- Chemin du fichier de configuration : /usr/local/etc/dhcp6c_wan_custom.conf
- Pour finir cocher "Block bogon networks"
- Sauvegarder mais ne pas appliquer
Configuration de pfSense (fichiers DHCP) :Pour terminer la configuration, j'ai créé les deux fichiers suivants :
/usr/local/etc/dhcp4c_wan_custom.confinterface "re0" {
supersede interface-mtu 0;
send host-name "";
send dhcp-class-identifier "neufbox_<identifiant trouvé à la partie préliminaire>";
request subnet-mask, routers, domain-name-servers, host-name, merit-dump, domain-name, root-path, broadcast-address, nis-domain, ntp-servers;
require subnet-mask, routers, merit-dump, nis-domain, domain-name-servers;
script "/usr/local/sbin/pfSense-dhclient-script";
}
/usr/local/etc/dhcp6c_wan_custom.confinterface re0 {
send raw-option 16 00:00:a0:0c:00:<suite du code hexa trouvé à la partie préliminaire>;
send ia-pd 1;
request domain-name-servers;
script "/var/etc/dhcp6c_wan_dhcp6withoutra_script.sh";
};
id-assoc pd 1{
prefix ::/00 0 0;
prefix-interface lagg0.10{
sla-id 10;
sla-len 8;
};
prefix-interface lagg0.15{
sla-id 15;
sla-len 8;
};
prefix-interface lagg0.20{
sla-id 20;
sla-len 8;
};
prefix-interface lagg0.26{
sla-id 26;
sla-len 8;
};
prefix-interface lagg0.27{
sla-id 27;
sla-len 8;
};
};
Une fois ces fichiers créés, on appliquer les changements sur l'interface WAN.
Configuration de pfSense (règles pare-feux) :Créer la règle pare-feux suivante pour autoriser pfSense à recevoir les messages DHCPv6
- Protocol : IPv6 UDP
- Destination : This firewall
- Ports : 546 - 547
Sauvegarder et appliquer.
Brancher l'ONT :A partir de là, on peut brancher pfSense à un PC faisant tourner Wireshark et comparer les requêtes DHCP et DHCPv6 avec les requêtes de la box originale.
Normalement, il n'y a pas de différences significatives dans les requêtes.
Une fois toutes ces étapes réalisées, brancher l'ONT à pfSense.
IPv6 pour le port WAN :A ce stade, les réseaux locaux doivent tous avoir un préfixe IPv6 ::/64 qui leurs sont attribués.
Assez bizarrement, pfSense ne s'attribue pas d'adresse IPv6 via le préfixe qu'il obtient automatiquement.
Si l'on veut avoir une adresse IPv6 sur le port WAN, il faut lui en donner une manuellement via une IP virtuelle.
Se rendre dans Firewall > Virtual IPs et cliquer sur ajouter :
- Type : IP Alias
- Address : <préfixe obtenu>::1
Sauvegarder et voilà
Si l'on en veut pas, il faut désactiver le monitoring de l'interface pour l'IPv6 (ce n'est pas obligatoire, on peut aussi juste l'enlever de la page d’accueil).
Dans System > Routing selectionner
WAN_DHCP6 puis cocher
Disable Gateway Monitoring.
Résultats et points à améliorer :L'IPv4 est fonctionnelle sans soucis chez moi. Je peux naviguer sur internet sans soucis.
Il semble cependant que je ne sois pas capable de me connecter pfSense à un serveur openVPN...
à creuser. D'autres ont eu ce soucis ?
L'IPv6 est maintenant parfaitement fonctionnelle :
- chaque réseau local obtient son préfixe en /64
- l'interface WAN a sa propre adresse IP (via IP virtuelle)
- l'ensemble est routable sur internet.
Que ce soit en IPv4 ou IPv6 je gagne 10ms de ping en moyenne en passant de 25ms à 15ms depuis n'importe quel PC connecté sur mon réseau LAN.
Pour la téléphonie, il semble y avoir deux approches :
- récupérer les identifiants SIP et les utiliser sur un serveur Asterisk
https://blog.jess-sys.fr/2020/08/13/Remplacer-sa-box-SFR-par-un-routeur-pfSense/ - brancher la box NB6VAC derrière pfSense et lui faire croire qu'elle est directement sur le réseau
https://lafibre.info/remplacer-sfr/tuto-remplacement-nb6vac-ftth-maintien-telephonie-avec-la-box/,
https://github.com/opnsense/docs/blob/master/source/manual/how-tos/sfr_red_fr_ftth.rst ou
https://lafibre.info/remplacer-sfr/ffth-bypass-complet-de-la-nb6-avec-pfsense-netgate-sg3100-part-1/