La Fibre

Datacenter et équipements réseaux => Routeurs => SFR Remplacer la box SFR par un routeur => Discussion démarrée par: Darkodo le 06 août 2022 à 18:36:28

Titre: [FTTH] Remplacement de la box NB6VAC par pfSense
Posté par: Darkodo le 06 août 2022 à 18:36:28
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 :

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 (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.txz (https://mirror.vraphim.com/opnsense/FreeBSD%3A12%3Aamd64/21.7/latest/All/dhcp6c-20200512_1.txz)


Configuration 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.conf
interface "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.conf
interface 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à  8)

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...  :o à 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/ (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://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 (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/ (https://lafibre.info/remplacer-sfr/ffth-bypass-complet-de-la-nb6-avec-pfsense-netgate-sg3100-part-1/)
Titre: [FTTH] Remplacement de la box NB6VAC par pfSense
Posté par: thedark le 06 août 2022 à 20:45:56
Bonsoir,

Citer
Est-ce que quelqu'un a réussi à exploiter l'IPv6 ?
Vous avez IPV6 sur votre box SFR ?
Titre: [FTTH] Remplacement de la box NB6VAC par pfSense
Posté par: Darkodo le 06 août 2022 à 20:57:30
Bonsoir,
Vous avez IPV6 sur votre box SFR ?

Oui j'avais l'IPv6, mais je n'ai jamais réussi à faire fonctionner la DMZv6, d'où mon souhait de me passer de la box Red.
Titre: [FTTH] Remplacement de la box NB6VAC par pfSense
Posté par: thedark le 06 août 2022 à 21:04:39
Oui j'avais l'IPv6, mais je n'ai jamais réussi à faire fonctionner la DMZv6, d'où mon souhait de me passer de la box Red.
https://blog.kveer.fr/ipv6-sur-edgerouter-red-by-sfr-sfr/
https://lafibre.info/remplacer-sfr/nbv6ac-ipv6-dhcpv6-avec-le-gpon-vendor-class/msg939147/#msg939147
Titre: [FTTH] Remplacement de la box NB6VAC par pfSense
Posté par: Darkodo le 06 août 2022 à 21:32:09
Merci thedark pour tes liens.
https://blog.kveer.fr/ipv6-sur-edgerouter-red-by-sfr-sfr/ (https://blog.kveer.fr/ipv6-sur-edgerouter-red-by-sfr-sfr/) m'avait déjà servit de base dans mes recherches pour arriver à la configuration actuelle.

Je pense que les requêtes DHCP sont bonnes, si je compare les requêtes DHCP faites par la box NB6VAC à celles faites par pfSense, j'obtiens littéralement la même chose.


Pour information, voici la requête formulée par pfSense (je n'ai gardé que la partie concernant DHCPv6) :
DHCPv6
    Message type: Solicit (1)
    Transaction ID: 0x36111d
    Elapsed time
        Option: Elapsed time (8)
        Length: 2
        Value: 0c54
        Elapsed time: 31560ms
    Option Request
        Option: Option Request (6)
        Length: 2
        Value: 0017
        Requested Option code: DNS recursive name server (23)
    Client Identifier
        Option: Client Identifier (1)
        Length: 10
        Value: 0003xxxx
        DUID: 0003xxxx
        DUID Type: link-layer address (3)
        Hardware type: Ethernet (1)
        Link-layer address: xxxx
    Vendor Class
        Option: Vendor Class (16)
        Length: 71
        Value: 0000…
        Enterprise ID: SFR (40972)
        vendor-class-data: neufbox_NB6VAC-xxx
    Identity Association for Prefix Delegation
        Option: Identity Association for Prefix Delegation (25)
        Length: 41
        Value: 000000010000000000000000001a00190000000000000000…
        IAID: 00000001
        T1: 0
        T2: 0
        IA Prefix
            Option: IA Prefix (26)
            Length: 25
            Value: 000000000000000000000000000000000000000000000000…
            Preferred lifetime: 0
            Valid lifetime: 0
            Prefix length: 0
            Prefix address: ::

A cette requête, j'ai bien une réponse de la part de SFR :
DHCPv6
    Message type: Advertise (2)
    Transaction ID: 0xe299e7
    Server Identifier
        Option: Server Identifier (2)
        Length: 14
        Value: xxx
        DUID: xxx
        DUID Type: assigned by vendor based on Enterprise number (2)
        Enterprise ID: Alcatel-Lucent (6527)
        Identifier: xxx
    Client Identifier
        Option: Client Identifier (1)
        Length: 10
        Value: xxx
        DUID: xxx
        DUID Type: link-layer address (3)
        Hardware type: Ethernet (1)
        Link-layer address: xxx
    DNS recursive name server
        Option: DNS recursive name server (23)
        Length: 32
        Value: 2a0284000000000000000000000060012a02840000000000…
         1 DNS server address: 2a02:8400::6001
         2 DNS server address: 2a02:8400::6000
    Identity Association for Prefix Delegation
        Option: Identity Association for Prefix Delegation (25)
        Length: 41
        Value: xxx
        IAID: 00000001
        T1: 150
        T2: 240
        IA Prefix
            Option: IA Prefix (26)
            Length: 25
            Value: xxx
            Preferred lifetime: 300
            Valid lifetime: 300
            Prefix length: 56
            Prefix address: xxx

Ce qui me chiffonne, c'est que pfSense ne fait rien de ce message.
Titre: [FTTH] Remplacement de la box NB6VAC par pfSense
Posté par: Darkodo le 07 août 2022 à 14:34:43
J'ai fait quelques essais supplémentaires :

IPv4 :
Mon IPv4 semble fonctionnelle, je peux naviguer sur internet sans soucis. Je gagne même entre 10  et 15 ms de ping moyen vers google !
MAIS je ne peux pas me connecter a mon serveur dédié via openVPN. Je peux me connecter en SSH à mon serveur, envoyer des ping (avec succès), mais openVPN semble être bloqué lorsque je me passe de la box.

Est-ce que quelqu'un contourne le CGNAT via un serveur dédié en utilisant son propre router ?


IPv6 :
Sur les 4 étapes d'une requête DHCPv6 :
 - SOLICIT : la requête est envoyée et elle est identique à celle de la box
 - ADVERTISE : SFR me répond et m'envoie mon préfixe habituel en /56
 - REQUEST : aucune réponse de pfSense. Je ne trouve rien dans les logues.
 - REPLY

J'ai essayé avec différentes versions de DHCP6C :
 - https://wiki.virtit.fr/lib/exe/fetch.php/kb:linux:pfsense:dhcp6c
 - https://mirror.vraphim.com/opnsense/FreeBSD%3A12%3Aamd64/21.7/latest/All/dhcp6c-20200512_1.txz
Même résultats.

Dans ma configuration actuelle, je ne fais qu'un send ia-pd, est-ce que je dois faire un send ia-na également ?

J'ai vu dans le blog https://blog.kveer.fr/ipv6-sur-edgerouter-red-by-sfr-sfr/ (https://blog.kveer.fr/ipv6-sur-edgerouter-red-by-sfr-sfr/) que l'option 16 en DHCPv6 n'est pas obligatoire, est-ce toujours le cas ?
(Je préférerais éviter d'être bloqué par SFR)
Titre: [FTTH] Remplacement de la box NB6VAC par pfSense
Posté par: Darkodo le 08 août 2022 à 17:38:18
J'ai débloqué la partie IPv6  :D

J'ai dû créer une règle pare-feux pour DHCPv6 (elle n'est pas utilisée, mais maintenant ça marche).
Je mets à jour mon post initial pour décrire comment j'ai fait.

Il ne me reste deux points sur lesquels avancer :
 - la téléphonie
 - openvpn (d'après les logs, openvpn ne peux pas ouvrir de connexions sur les ports demandé)
Titre: [FTTH] Remplacement de la box NB6VAC par pfSense
Posté par: sylar le 11 août 2022 à 18:23:05
Je suis avec attention ton aventure, je viens de récupérer une IPv6 chez RED et j'ai aussi remplacé ma box par pfsense (qui fonctionne très bien en IPv4 sans avoir à faire de configuration avancée via le fichier dhcp4c_wan_custom.conf).
Titre: [FTTH] Remplacement de la box NB6VAC par pfSense
Posté par: Darkodo le 11 août 2022 à 19:18:05
Bonjour Sylar,

Pour le fichier de configuration, c'est le seul moyen que j'ai de ne pas envoyer de hostname dans la requête DHCP.
Ce faisant, j'ai exactement les mêmes requêtes DHCP entre pfSense et la box SFR, que ce soit en IPv4 ou en IPv6.

Concernant OpenVPN, je n'ai pas avancé.
D'après ce que je lis sur des forums pfSense, cela pourrait venir de pfBlockerNG ou de Suricata.
J'avais installé ces deux logiciels par le passé lors d'essais, donc ça pourrait venir de là.
Je vais faire une réinstallation complète de pfSense pour repartir sur des bases saines voir si le problème persiste.

Pour la téléphonie, j'ai eu le temps d'écrire un petit fichier Bash (linux) qui permet de sélectionner le meilleur serveur et de générer une configuration pour Asterisk.
Je n'ai malheureusement pas le temps de l'essayer rapidement.
La configuration est basée sur celle trouvée sur ce forum, si tu souhaite tu peux jeter un coup d’œil :
#!/bin/bash

###################################################################
#Script Name : pjsip-template.sh
#Description : génère un fichier de configuration pour Asterisk
#   Basé sur la configuration trouvé sur le forum lafibre.info
#Args           : -
#Author        : Darkodo
#Version        : 11/08/2022
###################################################################


# On extrait les paramètres SFR si nécessaire
if [ ! -f "./sfr-voip-params.txt" ]; then
    ./extract-voip-parameters_v2 > ./sfr-voip-params.txt
fi

# On vérifie notre IPv4 publique et si on a des IPv6 non locals
# Puis on selectionne une IP (préférence pour V6)
public_v4=$(curl -s -4 'http://checkip.dyndns.org' | sed -E "s/.*<body>Current IP Address: (.*)<\/body>.*/\1/")
public_v6=$(ip -6 addr|awk '{print $2}'|grep -P '^(?!fe80)[[:alnum:]]{4}:.*/64'|cut -d '/' -f1 | tail -n 1)
echo -e "IPv4 : \t $public_v4"
echo -e "IPv6 : \t $public_v6"
if [ ! -z "$public_v6" ]
then
      ip_public="[$public_v6]"
  bind_addr="::"
  conf="V6"
  echo "IPv6 sélectionnée"
else
      ip_public=$public_v4
  bind_addr="0.0.0.0"
  conf="V4"
  echo "IPv4 sélectionnée"
fi

# On récupère nos autres paramètres
sip_username=$(grep "Username" sfr-voip-params.txt | cut -d ":" -f 2 | xargs)
sip_password=$(grep "Password" sfr-voip-params.txt | cut -d ":" -f 2 | xargs)
sip_domain=$(grep "Domain" sfr-voip-params.txt | cut -d ":" -f 2 | xargs)
sip_display_name=$(grep "Display name" sfr-voip-params.txt | cut -d ":" -f 2 | xargs)
list_servers=$(cat sfr-voip-params.txt | sed -n '/Servers/,$p' | tail -n +2 | sed 's/\t//g' | sed 's/.:/:/g')

echo "~~~"
echo "Latency check"
best_latency=100
for line in $list_servers
do
server=$(echo $line | cut -d ":" -f 1)
port=$(echo $line | cut -d ":" -f 2)
dig $server > /dev/null
sum_latency=0
for i in {1..10}
do
latency=$( (time nc -zw30 $server $port) 2>&1 > /dev/null | grep real | cut -d "m" -f 2 | sed 's/s//g' | sed 's/,/./g' )
sum_latency=$(echo "$sum_latency + $latency" | bc -l)
sleep 0.1
done
if (( $(echo "$best_latency > $sum_latency" | bc -l) )); then
best_latency=$sum_latency
best_server=$server
best_port=$port
fi
echo -e "$server \t $(echo "$sum_latency * 100" | bc -l | cut -d '.' -f 1) ms"
done
sip_server_addr=$best_server
sip_server_port=$best_port
echo "Serveur sélectionné : $best_server"

# On génère la configuration de base
echo "~~~"
echo "On génère la configuration de base"
cat <<- EOF > ./sfr-pjsip.conf
[registration]
auth_rejection_permanent=yes   ; Determines whether failed authentication

[transport-sfr-trunk]
type=transport
protocol=udp
bind=$bind_addr ; l'adresse IP local ou bien en 0.0.0.0 pour écouter sur toutes les interfaces
local_net=192.168.0.0/16 ; les réseaux autorisé à joindre le service asterisk
; local_net=10.10.10.0/24 ;un autre réseau autorisé à joindre le service, pratique pour les VPN...
external_media_address=$ip_public ; votre adresse IP public
external_signaling_address=$ip_public ; votre adresse IP public

[trunk-sfr]
type=registration
transport=transport-sfr-trunk
outbound_auth=trunk-sfr
server_uri=sip:$sip_display_name@$sip_domain ; insérez votre numéro de téléphone
client_uri=sip:$sip_display_name@$sip_domain ; insérez votre numéro de téléphone
outbound_proxy=sip:$sip_server_addr:$sip_server_port\;lr

[trunk-sfr]
type=auth
username=$sip_username ;votre nom d'utilisateur
password=$sip_password ; votre mot de passe


[trunk-sfr]
type = aor
contact = sip:$sip_display_name@$sip_domain
outbound_proxy = sip:$sip_server_addr:$sip_server_port\;lr

[trunk-sfr]
type = identify
endpoint = trunk-sfr
match = $sip_server_addr:$sip_server_port

[trunk-sfr]
type=endpoint
transport=transport-sfr-trunk
context=from-sfr
$(if [ "$conf" == "V4" ]
then
echo """
rtp_symmetric=yes ; cette option a été activé, car je n'écoute pas sur le wan et il y a du NAT
force_rport=yes ; cette option a été activé, car je n'écoute pas sur le wan et il y a du NAT
direct_media=no ; cette option a été activé, car je n'écoute pas sur le wan et il y a du NAT
rewrite_contact=yes ; cette option a été activé, car je n'écoute pas sur le wan et il y a du NAT
"""
fi)
outbound_auth=trunk-sfr
from_domain=$sip_domain
from_user=$sip_display_name  ; insérez votre numéro de téléphone
allow=!all,opus,speex,g722,alaw,ulaw,gsm
outbound_proxy = sip:$sip_server_addr:$sip_server_port\;lr
aors = trunk-sfr








[endpoint_internal](!)
type=endpoint
context=work
disallow=all
allow=ulaw
language=fr
$(if [ "$conf" == "V4" ]
then
echo """
direct_media=no ; cette option a été activé, car je n'écoute pas sur le wan et il y a du NAT
rtp_symmetric=yes ; cette option a été activé, car je n'écoute pas sur le wan et il y a du NAT
force_rport=yes ; cette option a été activé, car je n'écoute pas sur le wan et il y a du NAT
"""
fi)

;from_domain=xxxxxxxxxxxxx ; vous pouvez insérer ici votre nom de domaine si vous le souhaitez

[auth_userpass](!)
type=auth
auth_type=userpass

[aor_dynamic](!)
type=aor
max_contacts=2 ; le nombre de postes permis à utiliser un endpoint
remove_existing=yes

[1001](endpoint_internal)
auth=1001
aors=1001
[1001](auth_userpass)
password=XXXX ; un mot de passe
username=1001
[1001](aor_dynamic)

[1002](endpoint_internal)
auth=1002
aors=1002
[1002](auth_userpass)
password=XXXX ; un autre mot de passe
username=1002
[1002](aor_dynamic)
EOF

PS : Il faut utiliser ce script ci : https://florent.daigniere.com/posts/2019/04/extracting-voip-credentials-from-my-broadband-router/
Titre: [FTTH] Remplacement de la box NB6VAC par pfSense
Posté par: sylar le 12 août 2022 à 08:19:47
Pour le fichier de configuration, c'est le seul moyen que j'ai de ne pas envoyer de hostname dans la requête DHCP.
Ce faisant, j'ai exactement les mêmes requêtes DHCP entre pfSense et la box SFR, que ce soit en IPv4 ou en IPv6.
En effet, ma requête en IPv4 envoie bien l'option (12) Hostname avec une valeur à "pfsense", mais cela ne semble pas poser de soucis à SFR car je tourne avec ça depuis bientôt 2 ans sans aucun problème. Mais de fait, ma requête DHCP n'est pas strictement identique à celle de la box.

Concernant OpenVPN, je n'ai pas avancé.
D'après ce que je lis sur des forums pfSense, cela pourrait venir de pfBlockerNG ou de Suricata.
J'avais installé ces deux logiciels par le passé lors d'essais, donc ça pourrait venir de là.
Je vais faire une réinstallation complète de pfSense pour repartir sur des bases saines voir si le problème persiste.
De mon côté j'utilise maintenant Wireguard, qui est plus simple à configurer et d'une rapidité étonnante, que ce soit à la connexion du client, ou même en terme de débit. A tester si c'est possible de ton côté ?

Pour la téléphonie, j'ai eu le temps d'écrire un petit fichier Bash (linux) qui permet de sélectionner le meilleur serveur et de générer une configuration pour Asterisk.
Je n'ai malheureusement pas le temps de l'essayer rapidement.
La configuration est basée sur celle trouvée sur ce forum, si tu souhaite tu peux jeter un coup d’œil :
Pour le coup je n'utilise pas la téléphonie de la box, j'ai un petit boitier ovh avec mon fixe dessus qui est indépendant.

Pour l'instant, je vais recapturer les requêtes DHCPv6 depuis le passage en IPv6 de ma box et vérifier ce qu'il faut envoyer. A suivre !
Titre: [FTTH] Remplacement de la box NB6VAC par pfSense
Posté par: Darkodo le 12 août 2022 à 19:10:02
En effet, ma requête en IPv4 envoie bien l'option (12) Hostname avec une valeur à "pfsense", mais cela ne semble pas poser de soucis à SFR car je tourne avec ça depuis bientôt 2 ans sans aucun problème. Mais de fait, ma requête DHCP n'est pas strictement identique à celle de la box.
Oui, il n'y a pas de détection automatique sur ce critère mais un humain lisant ces logs peut trouver ça bizarre.
J'ai pris le parti d'essayer de mimer la NB6VAC le plus possible, même si ce n'est pas strictement nécessaire  ;)

De mon côté j'utilise maintenant Wireguard, qui est plus simple à configurer et d'une rapidité étonnante, que ce soit à la connexion du client, ou même en terme de débit. A tester si c'est possible de ton côté ?
Pour mon serveur satellite qui me permet de me connecter chez moi en IPv4, oui c'est tout à fait possible.
J'utilise cependant un VPN grand public pour accéder à des catalogues plus larges. Et je n'ai pas le choix que d'utiliser OpenVPN dans ce cas.

Pour le coup je n'utilise pas la téléphonie de la box, j'ai un petit boitier ovh avec mon fixe dessus qui est indépendant.
J'ai également utilisé cette solution.J'ai eu la chance de recevoir en cadeau une passerelle AudioCodes possédant 2xFXO et 2xFXS. Ça m'a été très utile pour avoir des appels illimités pour pas cher.
Je trouve que les appels illimités chez OVH sont chers  ::)
Maintenant, si je peux utiliser la téléphonie via Asterisk, ce serait parfait ! 8)

Pour l'instant, je vais recapturer les requêtes DHCPv6 depuis le passage en IPv6 de ma box et vérifier ce qu'il faut envoyer. A suivre !
Il y a deux paramètres qui sont importants :
- DUID (type Link Layer basé sur l'adresse MAC écrite sur la box)
- Vendor class identifier (identique à celui en IPv4, mais qui doit être converti en hexadécimal car on utilise raw-option)
Titre: [FTTH] Remplacement de la box NB6VAC par pfSense
Posté par: sylar le 12 août 2022 à 21:50:23
Je trouve que les appels illimités chez OVH sont chers  ::)
Maintenant, si je peux utiliser la téléphonie via Asterisk, ce serait parfait ! 8)
Pour le coup, on garde encore un fixe pour des raisons "historiques", mais faut avouer qu'il est plus là pour décorer qu'autre chose ;)

Il y a deux paramètres qui sont importants :
- DUID (type Link Layer basé sur l'adresse MAC écrite sur la box)
- Vendor class identifier (identique à celui en IPv4, mais qui doit être converti en hexadécimal car on utilise raw-option)
J'avais déjà normalement bien tout récupéré, lors de mes premières tentatives (https://lafibre.info/ipv6/ipv6-bien-attribuee-mais-rien-ne-sort/msg849271/#msg849271). Je voulais m'assurer que rien n'a changé depuis.
Titre: [FTTH] Remplacement de la box NB6VAC par pfSense
Posté par: Darkodo le 13 août 2022 à 19:30:18
Pour faire un point sur la téléphonie :
 - via la configuration ci-dessus, j'arrive à recevoir les appels entrants.
 - impossible de réaliser un appel sortant.

Visiblement je suis bloqué par une réponse 407.
Plus de détails ici : https://community.asterisk.org/t/pjsip-407-error-only-with-asterisk/89622/17
La solution qu'il propose ne fonctionne cependant pas pour moi.
Titre: [FTTH] Remplacement de la box NB6VAC par pfSense
Posté par: sylar le 16 août 2022 à 11:21:00
Je commence enfin à avoir (un peu) de temps pour travailler à mon passage en ipv6 sur pfsense.
J'ai regardé les fichiers de configuration DHCP que tu proposes @Darkodo, on est d'accord qu'ils sont à adapter avec les noms d'interface utilisés sur sa machine (par exemple, moi je n'ai pas d'interface re0, mais plutôt igb0. Idem pour les lagg0.X (qui sont, j'imagine, des vlans que tu as configuré du côté de ton LAN)) ?
J'ai l'impression que toute la partie id-assoc n'est peut être pas nécessaire, un simple "Track IPv6 Interface" dans la configuration du vlan avec un IPv6 Prefix ID devrait suffire ?
Titre: [FTTH] Remplacement de la box NB6VAC par pfSense
Posté par: sylar le 17 août 2022 à 16:27:03
J'ai pu faire une capture du WAN de ma box. A la différence de la capture de la page précédente, l'option Vendor Class pour la requête Solicit DHCPv6 ne semble pas (plus ?) en hexa, mais bien en plain text, avec pour valeur "neufbox_NB6VAC-XXXXX...". Je me demande du coup si l'option "raw-option" est toujours nécessaire ...
Je vais tenter sans modifier le binaire de dhcp6c, et capturer la requête de pfsense. Mais peut être as-tu déjà tenté @Darkodo ?

EDIT : j'ai repris ma configuration IPv4, et j'ai quasi les mêmes requêtes que la box. Il faut, sur la page de configuration du WAN :
- DHCP Client Configuration : cocher "advanced configuration"
- Lease Requirements and Requests :
  - Send options : mettre (en remplaçant XXXX par les valeurs trouvées en capturant une requête)
dhcp-class-identifier "neufbox_NB6VAC-XXXX", host-name "", dhcp-max-message-size 576  - Request options :
subnet-mask, routers, domain-name-servers, host-name, merit-dump, domain-name, root-path, broadcast-address, nis-domain, ntp-serversAvec cette configuration, j'ai quand même une option en plus (Option: (50) Requested IP Address (X.X.X.X)) envoyée par pfsense, qui doit être demandée quand la connexion est coupée. J'imagine que l'option n'est pas envoyée au bout d'un certain temps. Sinon les 2 requêtes sont strictement identiques.

Aller, je passe à l'IPv6 bientôt ...
Titre: [FTTH] Remplacement de la box NB6VAC par pfSense
Posté par: Darkodo le 20 août 2022 à 18:08:45
J'ai regardé les fichiers de configuration DHCP que tu proposes @Darkodo, on est d'accord qu'ils sont à adapter avec les noms d'interface utilisés sur sa machine (par exemple, moi je n'ai pas d'interface re0, mais plutôt igb0. Idem pour les lagg0.X (qui sont, j'imagine, des vlans que tu as configuré du côté de ton LAN)) ?
Oui, j'ai une agrégation de lien et des vlans pour gérer mes différents "LANs".

J'ai l'impression que toute la partie id-assoc n'est peut être pas nécessaire, un simple "Track IPv6 Interface" dans la configuration du vlan avec un IPv6 Prefix ID devrait suffire ?
Comme tu as configuré pfSense sans utiliser de fichiers comme moi, il me semble que c'est pfSense qui génère ces lignes automatiquement. A vérifier dans /var/etc/dhcp6c_wan.conf ce que tu as.


J'ai pu faire une capture du WAN de ma box. A la différence de la capture de la page précédente, l'option Vendor Class pour la requête Solicit DHCPv6 ne semble pas (plus ?) en hexa, mais bien en plain text, avec pour valeur "neufbox_NB6VAC-XXXXX...". Je me demande du coup si l'option "raw-option" est toujours nécessaire ...
Je vais tenter sans modifier le binaire de dhcp6c, et capturer la requête de pfsense. Mais peut être as-tu déjà tenté @Darkodo ?
Oui j'avais essayé, et pfSense n'a pas d'équivalent dhcp-class-identifier pour l'IPv6.
Le fait que je passe par un code hexa n'est lié qu'à l'option raw-option, si tu regardes la requête qui en résulte tu auras bien du texte.
(raw-option ne sait traiter que de l'hexa, si tu convertis une chaine de caractères en hexa, dans ta requête finale tu auras bien ce qu'il te faut).

EDIT : j'ai repris ma configuration IPv4, et j'ai quasi les mêmes requêtes que la box. Il faut, sur la page de configuration du WAN :
- DHCP Client Configuration : cocher "advanced configuration"
- Lease Requirements and Requests :
  - Send options : mettre (en remplaçant XXXX par les valeurs trouvées en capturant une requête)
dhcp-class-identifier "neufbox_NB6VAC-XXXX", host-name "", dhcp-max-message-size 576  - Request options :
subnet-mask, routers, domain-name-servers, host-name, merit-dump, domain-name, root-path, broadcast-address, nis-domain, ntp-serversAvec cette configuration, j'ai quand même une option en plus (Option: (50) Requested IP Address (X.X.X.X)) envoyée par pfsense, qui doit être demandée quand la connexion est coupée. J'imagine que l'option n'est pas envoyée au bout d'un certain temps. Sinon les 2 requêtes sont strictement identiques.

Aller, je passe à l'IPv6 bientôt ...
Attention, dans Request Options, il ne faut mettre que subnet-mask, routers, merit-dump, nis-domain, domain-name-servers, sans quoi pfSense considérera que la réponse de SFR n'est pas complète et repartira avec des requêtes DHCPs.
Pour l'option 50, c'est très simple à régler, il suffit de supprimer le fichier : /var/db/dhclient.leases.<interface_name>.

En IPv6 tu n'as pas autant de choses à demander au serveur SFR :  domain-name-servers, domain-name sont suffisants (je n'en avais pas d'autres dans les requêtes de ma box d'origine).
Titre: [FTTH] Remplacement de la box NB6VAC par pfSense
Posté par: Darkodo le 20 août 2022 à 18:14:50
Bon, je viens de m'apercevoir en rentrant de vacances que SFR ne me laisse plus m'identifier auprès de leurs serveurs VoIP.

J'ai comparé une INVITE faite par une box SFR que j'ai récupérée ici : https://community.asterisk.org/t/pjsip-407-error-only-with-asterisk/89622/14 (https://community.asterisk.org/t/pjsip-407-error-only-with-asterisk/89622/14)
avec une INVITE Asterisk.

Requête NB6VAC (en rouge les parties qui me manquent dans mes requêtes)

INVITE sip:xxxxxxxxxx@ims.mnc010.mcc208.3gppnetwork.org;user=phone SIP/2.0
Via: SIP/2.0/UDP 78.78.78.78:5060;branch=z9hG4bK15150f3a
From: “+33666666666” <sip:+33666666666@ims.mnc010.mcc208.3gppnetwork.org;user=phone>;tag=16DA4891
To: <sip:0777777777@ims.mnc010.mcc208.3gppnetwork.org;user=phone>
User-Agent: otherIAD - rNB6VAC-MAIN-R4.0.44j-36091
P-Preferred-Identity: <sip:+33666666666@ims.mnc010.mcc208.3gppnetwork.org;user=phone>
Call-ID: CBCBCBCBCBCBCB@78.78.78.78
CSeq: 1 INVITE
Allow: INVITE, ACK, BYE, CANCEL, REFER, NOTIFY, SUBSCRIBE, REGISTER, UPDATE
Max-Forwards: 70
Contact: <sip:+33666666666@78.78.78.78:5060;user=phone>
Content-Type: application/sdp
Content-Length: 279

v=0
o=+33666666666 1629798315 1629798316 IN IP4 78.78.78.78
s=-
c=IN IP4 78.78.78.78
t=0 0
m=audio 35530 RTP/AVP 8 0 18 101
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:18 G729/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-11
a=sendrecv
a=ptime:20




Requête Asterisk (en rouge les parties qui sont en trop dans mes requêtes)

INVITE sip:xxxxxxxxxx@ims.mnc010.mcc208.3gppnetwork.org SIP/2.0
Via: SIP/2.0/UDP [1::1]:5060;rport;branch=z9hG4bKPje91f1eb2-ed5c-4068-b2a6-656c362a723b
From: <sip:+33xxxxxxxxx@ims.mnc010.mcc208.3gppnetwork.org>;tag=b1b22d3e-0586-415d-9579-33d75485efe2
To: <sip:xxxxxxxxxx@ims.mnc010.mcc208.3gppnetwork.org>
User-Agent: Asterisk PBX 18.8.0
Call-ID: b8f1ee7a-4230-481e-b726-6d8ee1b63956
CSeq: 1656 INVITE
Allow: OPTIONS, REGISTER, SUBSCRIBE, NOTIFY, PUBLISH, INVITE, ACK, BYE, CANCEL, UPDATE, PRACK, MESSAGE, REFER
Max-Forwards: 70
Contact: <sip:+33xxxxxxxxx@[1::1]:5060>
Content-Type: application/sdp
Content-Length:   412
Route: <sip:trappes.p-cscf.sfr.net:5062;lr>
Supported: 100rel, timer, replaces, norefersub, histinfo
Session-Expires: 1800
Min-SE: 90


v=0
o=- 95520722 95520722 IN IP6 1::1
s=Asterisk
c=IN IP6 1::1
t=0 0
m=audio 18586 RTP/AVP 8 107 110 9 0 3 101
a=rtpmap:8 PCMA/8000
a=rtpmap:107 opus/48000/2
a=fmtp:107 useinbandfec=1
a=rtpmap:110 speex/8000
a=rtpmap:9 G722/8000

a=rtpmap:0 PCMU/8000
a=rtpmap:3 GSM/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=maxptime:20
a=sendrecv


A voir comment je peux configurer Asterisk pour le masquer aux yeux et à la barbe de SFR  ;)
Titre: [FTTH] Remplacement de la box NB6VAC par pfSense
Posté par: sylar le 26 août 2022 à 23:08:19
Bon, j'ai enfin eu le temps de regarder un peu pour enfin utiliser l'IPv6. C'est mitigé ...

1/ Première solution : le script /usr/local/etc/dhcp6c_wan_custom.conf
Une fois adapté à ma situation, cela semble fonctionnel. Seulement, comme on utilise des options cutom, le GUI n'est pas au courant du prefix ID sur chaque LAN/VLAN, et donc je ne peux configurer le DHCPv6 & RA que sur une interface LAN ou VLAN, et rien qu'une ... du coup, seule une partie de mon réseau semble au courant qu'il peut utiliser l'ipv6 ...

2/ 2nde solution : on utilise les options du GUI. Rien de bien compliqué :
- dans l'interface de réglage WAN du DHCP6, on coche Advanced Configuration, et on peut *presque* mettre toutes les options du fichier custom ia-pd, raw-option, prefix delegation à 1, etc.
- MAIS ... j'ai beau ensuite mettre tous mes LAN/VLAN sur "Track Interface" et spécifier un prefix ID pour chaque ... aucune IPV6 n'est disponible. Je constate dans les logs que le prefix m'est bien attribué sur le WAN, mais il n'est pas réutilisé ensuite. En pratique, je constate que le fichier /var/etc/dhcp6c_wan.conf ne contient pas les parties :
...
prefix-interface igb0.10{
sla-id 10;
sla-len 8;
};
...
qui pour moi permettent de spécifier quel /64 on utilise sur la base du /56 renvoyé par SFR.

Bref, j'en suis là ... une idée ?
@Darkodo, comment as-tu configuré le côté LAN/VLAN par exemple ?

Il semblerait que je ne sois pas le premier à ne pas trop voir comment m'y prendre (chez Orange ici) : https://forum.netgate.com/topic/158752/subneting-my-56-prefix-to-multiple-internal-lans/14 (https://forum.netgate.com/topic/158752/subneting-my-56-prefix-to-multiple-internal-lans/14)

EDIT : bon, j'ai réussi à tromper le GUI en réglant d'abord les options avancées sans le fichier de configurations et le track interface avec le bon prefix ID, puis en cochant le "configuration override" en laissant la case "Advanced Configuration" cochée, j'ai enfin accès aux réglages DHCP/RA de toutes mes interfaces/VLAN. Donc a priori c'est bon, j'ai bien l'IPv6 fonctionnel !
Titre: [FTTH] Remplacement de la box NB6VAC par pfSense
Posté par: Darkodo le 28 août 2022 à 09:45:10
EDIT : bon, j'ai réussi à tromper le GUI en réglant d'abord les options avancées sans le fichier de configurations et le track interface avec le bon prefix ID, puis en cochant le "configuration override" en laissant la case "Advanced Configuration" cochée, j'ai enfin accès aux réglages DHCP/RA de toutes mes interfaces/VLAN. Donc a priori c'est bon, j'ai bien l'IPv6 fonctionnel !

Bonjour Sylar,

Oui j'ai eu le même soucis, il faut en effet préciser la longueur du préfixe avant de configurer le reste.
Mais oui tu as raison, on peut tout configurer via le GUI sans passer par un fichier de configuration manuel.

Tu as utilisé quel version du logiciel DHCP6C ? Celle d'opnSense ?
Titre: [FTTH] Remplacement de la box NB6VAC par pfSense
Posté par: Darkodo le 28 août 2022 à 09:53:41
Pour ma part j'ai réaliser les essais suivants :


Dans les 3 cas j'arrive à avoir une IPv4 et une IPv6 avec un accès à internet.
Avec opnSense, unbound plante et je n'arrive pas à avoir le service DNS quand je bypasse la box.


Dans tous les cas, openVPN ne peut pas s'initialiser, j'ai systématiquement l'erreur Permission denied (code=13).
J'avais initialement pensé que ça pouvait venir de Snort, Suricate ou pfBlockerNG qui avaient été installé sur mon système.
L'erreur persiste après une remise à zéro ou avec opnSense.

Ce qui est bizarre c'est que je ne vois aucun paquet sortir via WireShark. C'est comme si les paquets étaient bloqué par pf quand je suis directement connecté à l'ONT.


Pour la téléphonie, je suis toujours entrain de chercher à me rapprocher le plus possible de la configuration parfaite.
Pour le moment, j'ai pas encore trouvé comment ajouter mon téléphone à la partie From: avant la partie <sip...
A creuser  :)
Titre: [FTTH] Remplacement de la box NB6VAC par pfSense
Posté par: sylar le 28 août 2022 à 22:01:52
Bonjour Sylar,

Oui j'ai eu le même soucis, il faut en effet préciser la longueur du préfixe avant de configurer le reste.
Mais oui tu as raison, on peut tout configurer via le GUI sans passer par un fichier de configuration manuel.

Tu as utilisé quel version du logiciel DHCP6C ? Celle d'opnSense ?

Justement, je constate qu'on ne peut pas utiliser l'interface web qui doit être buggée, car les LAN/VLAN bien que configurés en "Track Interface" avec le bon préfixe ne récupèrent alors aucune IPv6 ... en pratique, on dirait qu'il manque des déclarations dans le fichier de configuration du client DHCP. Mais au final, en combinant la configuration avancée et le fichier de configuration personnalisé, en s'en sort. Ouf !

Je suis par contre allé chercher le binaire d'opnSense directement sur le miroir principal, par sécurité.
Titre: [FTTH] Remplacement de la box NB6VAC par pfSense
Posté par: intmanch le 19 janvier 2023 à 07:02:38
Bonjour,

         Comment vous, SFR m'a passé il y a quelques semaines en IPV6. J'avais configuré pfsense avec IPV4 et du coup quand ils ont passé à la v6 pfsense a commencé à faire de choses bizarres. J'ai essayé de suivre vos indications mais je n'arrive pas à configurer la partie v6. Je suis en 2.6 et je crois que j'ai le même problème de la GUI qui est buggée. J'envoie des SOLICIT mais j'ai jamais une réponse et pourtant d'IP en v6. Il faut avoir le fichier custom et cocher aussi "advance configuration"? Pour pfsense 2.6 il faut aussi télécharger dhcp6c d'opnsense, non?
Titre: [FTTH] Remplacement de la box NB6VAC par pfSense
Posté par: sylar le 22 janvier 2023 à 21:47:22
Hello,
Je suis désolé c'est un peu loin dans ma tête tout ça ;)
Alors, dans l'ordre :
- oui, j'ai téléchargé le binaire dhcp6c sur le site d'opnsense
- ensuite, il fait configurer les choses dans le fichier de configuration dhcp6c_wan_custom.conf (raw-option, etc.), et surtout (cf un de mes messages plus haut) :
Citer
EDIT : bon, j'ai réussi à tromper le GUI en réglant d'abord les options avancées sans le fichier de configurations et le track interface avec le bon prefix ID, puis en cochant le "configuration override" en laissant la case "Advanced Configuration" cochée, j'ai enfin accès aux réglages DHCP/RA de toutes mes interfaces/VLAN. Donc a priori c'est bon, j'ai bien l'IPv6 fonctionnel !
- et donc ensuite régler les paramètres restant depuis l'interface.
Mais pas certain que ces détails t'aident plus que ça ...

Au cas où, mon fichier dhcp6c_wan_custom.conf (avec XXXXXXX à place du code hexa) :
interface igb0 {
send raw-option 16 XX:XX:XX:XX;
send ia-pd 1;
request domain-name-servers;
script "/var/etc/dhcp6c_wan_dhcp6withoutra_script.sh";
};

id-assoc pd 1{
prefix ::/0 0 0;
prefix-interface igb1{
sla-id 1;
sla-len 8;
};
prefix-interface igb1.10{
sla-id 10;
sla-len 8;
};
prefix-interface igb1.30{
sla-id 30;
sla-len 8;
};
prefix-interface igb1.50{
sla-id 50;
sla-len 8;
};
};
Titre: [FTTH] Remplacement de la box NB6VAC par pfSense
Posté par: fl0w le 23 janvier 2023 à 13:00:03
Je me permets de reprendre une partie des infos de ce topic pour créer un topic de bypass de la neufbox avec pfSense + MultiWAN + TV : https://lafibre.info/remplacer-sfr/tutoftth-remplacement-nb6vac-par-routeur-pfsense-multiwan-ipv6-tv