Auteur Sujet: TUTO : Remplacement NB6VAC FTTH + maintien téléphonie avec la box.  (Lu 697 fois)

0 Membres et 1 Invité sur ce sujet

Flo_77

  • Client SFR fibre FTTH
  • *
  • Messages: 253
  • MEA77
Ce tutoriel propose une solution amateur pour utiliser un routeur personnel sous OPNsense tout en conservant la téléphonie avec la box SFR. La méthode ici ne représente rien de définitif, car SFR pourrait modifier le fonctionnement de sa box au fil des mises à jours. Par conséquent, il faut se tenir informé des évolutions techniques possibles.
Je ne saurais être responsable d'une mauvaise manipulation ou utilisation.

Introduction
Le fonctionnement reste générique pour d'autres routeurs, mais ce tutoriel s'applique pour OPNsense. Je ne dispose pas de TV, vous pouvez contribuer à compléter mon tutoriel, si avous avez envie.
Topologie : 3 interfaces + une machine linux (de quoi héberger un serveur Apache+PHP et un résolveur DNS.)

Le réseau dédié à la box, (distinct du LAN), est nécessaire pour dérouter les requêtes HTTP par du NAT. C'est crade, mais ça marche bien. ;D
Au passage, sur une nouvelle configuration à base d'un vieux PC, l'idéal est d'acheter une carte PCI Express 4 ports avec contrôleur Intel (35€ reconditionné sur ebay). Cela évite la surcharge CPU lors du NAT à 1Gbit/s, et fait un routeur vraiment pas cher.

Pourquoi j'ai besoin d'un serveur linux?
  • Le DNS Unbound d'OPNsense ne semble plus accepter d'options spéciales dans la configuration avancée (cela le fait planter, plus aucune résolution DNS). De plus, pour mon réseau local, je tiens à utiliser des DNS de référence différents que ceux de SFR.
  • Je ne souhaite pas utiliser la fonction proxy ou serveur web du firewall. Ceci afin de simplifier la configuration de mon routeur, et ne pas contraindre de futurs usages qui en auraient besoin.

Préparatifs
Dans un premier temps, je vous recommande de faire une capture avec Wireshark en conditions normales. Pas nécessaire mais ça permet de rectifier des modifications opérées par SFR, ou de relever des infos qui pourraient différer sur votre abonnement. Pour ma part je suis abonné à RED.
Sachant que SFR n'utilise pas de VLAN, on peut utiliser 2 cartes Ethernet (un adaptateur RJ45/Usb + le port d'un PC portable par exemple), et en faire un pont. Attention à désactiver toutes les fonctions de la carte réseau virtuelle nouvellement créée, à l'exception des drivers Wireshark.

Dans Wireshark, si le "pont réseau" n'apparait pas parmi vos cartes réseaux, je n'ai trouvé comme seule solution de redémarrer l'ordinateur. L'interface va apparaître à l'issue du reboot.
Connectez votre ONT sur une carte réseau. Connectez la box éteinte via son "port fibre", sur l'autre carte réseau. Démarrer une capture wireshark sur l'interface "Pont réseau", puis allumez la box. Une fois que la box a terminé de faire ses échanges, enregistrez la capture pour plus tard, et éteignez la box.
Prérequis

- Relever les élèments suivants :
  • l'adresse mac du port WAN de la box. 60:35:c0:xx:xx:xx. Dispo dans toutes les trames (couche Ethernet II). Sans capture, c'est théoriquement l'adresse "mac-1", (indiqué sous le pied de la box).
    Exemple adresse mac indiquée : 60:35:c0:xx:xx:aa -> votre mac : 60:35:c0:xx:xx:a9
  • Options de la réponse DHCP (ACK) : "Merit Dump File" (14) : 1|ca@1.1.1.1|1.1.1.1|toto@neuf.com|dm01 , ainsi que le NDIS (40)  : redbackftth_alcatelgpon . (j'ai un abonnement RED, peut-être différent sur SFR)
  • l'adresse IP à laquelle s'enregistre le client SIP de la box (téléphonie). Pour moi 77.136.6.29. On peut voir que 77.136.6.77 est utilisé dans d'autres tutoriels.

- Sur OPNsense, on dispose de 3 interfaces déjà configurées LAN, BOX et WAN. (vous pouvez nommer autrement). Vous êtes libre de choisir les adresses IP que vous préférez utiliser pour ces interfaces. Il faudra cependant rester cohérent pour la suite des manipulations avec l'exemple fourni ici.
- Installer le plugin siproxd (System>Firmware>Plugin), installez os-siproxd.

On retiendra à titre indicatif dans ce tutoriel :
  • IP de l'interface LAN (172.16.8.1)
  • IP de l'interface BOX (192.168.2.254)
  • IP de la neufbox (192.168.2.2)
  • IP du linux (172.16.8.150)

Configurer l'interface WAN
Dans Interfaces>WAN :Cocher Enable interface. Choisir IPv4 Configuration Type : DHCP.
Compléter la section Lease Requirements
Send options :
Citer
dhcp-class-identifier "neufbox_REMPLACEE_votremail@xyz.com"
Request options :
Citer
subnet-mask, broadcast-address, time-offset, routers, domain-name, domaine-name-servers, host-name, ntp-servers, nis-domain, root-path, merit-dump
Actuellement, je n'ai pas d'IPV6 (partie à compléter quand SFR l'activera).

Testez la connexion : connectez l'ONT à la prise RJ45 de l'interface WAN. Une adresse IP doit apparaître dans la page d'accueil d'OPNsense (rafraichir la page si besoin) :

Conservez cette IP pour la suite.
« Modifié: 21 juillet 2019 à 19:41:41 par Flo_77 »

Flo_77

  • Client SFR fibre FTTH
  • *
  • Messages: 253
  • MEA77
TUTO : Remplacement NB6VAC FTTH + maintien téléphonie avec la box.
« Réponse #1 le: 21 juillet 2019 à 04:27:29 »
Utilisation de la téléphonie sur le LAN
Voilà le principe technique de fonctionnement pour utiliser la téléphonie sur la box à travers le NAT :

Configurer le DHCP pour la Box
Dans Services > DHCPv4 > BOX (ou le nom choisi pour la box), activez le DHCP et spécifiez un Range quelconque, hors de l'IP de la neufbox désirée (par exemple : 192.168.2.10 à 192.168.2.20).
Dans Additional Options, on place les options que SFR envoie à ses box :

  • L'option 40 "redbackftth_alcatelgpon"
  • l'option 14 de 1|ca@1.1.1.1|1.1.1.1|toto@neuf.com|dm01 que je préfère en hexadécimal pour tout éventuel soucis de caractère spécial :
    31:7c:63:61:40:31:2e:31:2e:31:2e:31:7c:31:2e:31:2e:31:2e:31:7c:74:6f:74:6f:40:6e:65:75:66:2e:63:6f:6d:7c:64:6d:30:31
Enregistrez et appliquez ces paramètres. Nous allons ensuite créer un bail DHCP statique.
Pour cela, tout en bas de la page (Services>DHCPv4>BOX), cliquez sur le +.

Insérez l'adresse MAC du port WAN de la box, relevé au préalable. Renseignez une IP de votre choix que la box va recevoir, et conservez l'info pour la suite du tutoriel. Précisez un hostname, comme "sfrredbox" par exemple.

Indiquez l'IP des serveurs DNS : ici, notre machine linux (pour moi 172.16.8.150).
Enregistrez et appliquez les modifications.

Configurer le NAT
On redirige en TCP, en provenance de 192.168.2.2 et à destination d'un port 80, vers 172.16.8.150 sur le port 8080 (je dispose déjà d'un port 80 utilisé pour autre chose).

Dans Firewall > Port forward, cliquez sur ADD
Interface : BOX
Version : IPv4
Protocol : TCP
Source : 192.168.2.2 (32 : que cette IP)
source port : any
destination : any
destination port : HTTP
redirect target IP : 172.16.8.150
redirect target port : 8080.
Mettez une description pour vous souvenir. (redirection trafic http BOX vers proxy.)

Enregistrez et appliquez.
Configurer le Pare-feu
Dans (Firewall > Rules > Box) nous éditons les règles de l'interface BOX.
Une règle correspondant à cette redirection doit avoir été créée automatiquement.
A la suite de celle-ci,  il faut autoriser l'accès aux ports SIP pour la téléphonie. Ajoutez une règle (ADD) de la même manière que pour le NAT :
interface : BOX
Version IPv4
Protocol TCP/UDP
Source : Box net
Destination : This firewall
destination port range : (other)
From : 5060
To : 5062
Description : autoriser sip.
Répétez cela afin d'obtenir cette configuration finale :

Note : j'ai indifféremment renseigné l'IP de la box (192.168.2.2) ou "Box net". Cela n'a pas d'incidence réelle sur le fonctionnement. Faites comme bon vous semble, sachant que "Box net" englobe tout le sous réseau 192.168.2.0/24.

Enregistrez puis appliquez toutes ces règles.

Dans (Firewall > Rules > WAN) nous éditons les règles de l'interface WAN afin de permettre les appels entrants.
Il faut ouvrir les ports TCP/UDP 5060 à 5062 à destination du Firewall. L'adresse IP source est le serveur SIP que nous avons relevés en début de tutoriel.

Sur le WAN on obtient cette configuration :

Enregistrez et appliquez les paramètres.

Siproxd

Absolument nécessaire pour faire fonctionner la téléphonie à travers les IP privées de notre réseau local. Une fois le paquet installé, la configuration attendue est dans Services > Siproxd :
Inbound interface : BOX (ou le nom que vous avez choisi)
Outbound interface : WAN
SIP listen port 5060
RTP port low : 7070
RTP port high : 7084
RTP timeout : 300
RTP DSCP et SIP DSCP : 46
RTP input et output jitter : 0
TCP timeout : 600
TCP connect timeout : 500
TCP keepalive : 20
Remote ports VIA-Header : Do not add ;rport via header (0)
Networks to replace VIA-Header : 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
DTAG servers : 217.0.23.100/32
Network list for fbox anoncall plugin : 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
Enregistrez et appliquez les paramètres.
Dans l'onglet Outbound Domains, ajoutez un domaine (+) et remplissez comme suit :

l'IP 77.136.6.77 est celle que j'utilise, mais vous pouvez aussi indiquer celle que vous avez pu relever dans la capture de wireshark au tout début du tutoriel.
Le port correspondant est 5062, toujours d'après les relevés wireshark.
DNS d'OPNsense

Le domaine ims.mnc010.mcc208.3gppnetwork.org n'existe pas. Nous allons le rendre fictif en l'ajoutant en entrée dans Unbound DNS > Overrides (ou un autre résolveur DNS du firewall)

Domain : ims.mnc010.mcc208.3gppnetwork.org , IP 127.0.0.1

Siproxd ne voulait pas fonctionner sans cela. (erreur 408 en boucle sur mes relevés Wireshark, lors d'un appel téléphonique, si cela vous arrive, pensez-y!)
« Modifié: 21 juillet 2019 à 22:16:26 par Flo_77 »

Flo_77

  • Client SFR fibre FTTH
  • *
  • Messages: 253
  • MEA77
TUTO : Remplacement NB6VAC FTTH + maintien téléphonie avec la box.
« Réponse #2 le: 21 juillet 2019 à 04:42:24 »
Environnement linux :
Tout d'abord, mettez à jour votre système, avec les droits administrateurs:
sudo apt-get update && sudo apt-get upgradeInstallez ensuite Apache, php et dnsmasq.
sudo apt-get install apache2 php dnsmasqPlacez-vous en tant qu'utilisateur local (curseur en ~$). Créez un dossier proxy-sip :
mkdir /var/www/proxy-sipDans la configuration Apache, nous allons créer un nouveau serveur virtuel sur le port 8080 pour accueillir les requêtes redirigées de la neufbox. Editez avec
nano /etc/apache2/sites-enables/000-default.confAjoutez le bloc ci-dessous à la fin du fichier :
<VirtualHost *:8080>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/proxy-sip
        <Directory /var/www/proxy-sip>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order Deny,Allow
                Allow from 127.0.0.1
                Allow from 172.16.8.0/24
                Allow from 192.168.0.0/16
                Deny from all
        </Directory>
        ErrorLog /dev/null
        CustomLog /dev/null common
</VirtualHost>
Ajoutez dans /etc/apache2/ports.conf :
Listen 8080puis redémarrez apache
sudo service apache2 restart
Utilisez FileZilla pour transférer des fichier via ssh (sftp://172.16.8.150 ou votre IP de machine linux). Placez-vous dans le répertoire /var/www/proxy-sip
Créez un .htaccess et insérez-y le contenu :

Code: (/var/www/proxy-sip/.htaccess) [Sélectionner]
RewriteEngine on
RewriteRule ^(.+)$ index.php?$2 [QSA,L]
Cela va rediriger n'importe quelle requête vers index.php. Créez ensuite le fichier index.php à proprement parler, et insérez ce code :
Code: (/var/www/proxy-sip/index.php) [Sélectionner]
<?php
$currentFirewall 
'proxysip.lan';
if (isset(
$_GET['ip_dhcp'])) {
    
$_GET['ip_dhcp'] = '<VOTRE IP>';
}
$_SERVER['DOCUMENT_URI'] = str_replace('/index.php'''$_SERVER['DOCUMENT_URI']);
$parameters http_build_query($_GET);
$file explode("?"$_SERVER['REQUEST_URI'], 2);
$url $_SERVER['REQUEST_SCHEME'].'://'.$_SERVER['HTTP_HOST'].$file[0].'?'.$parameters;

$context stream_context_create(array(
'http' => array(
'method'=>"GET",
'header'=>  "Host: " $_SERVER['HTTP_HOST'] . "\r\n" .
"User-Agent: "$_SERVER['HTTP_USER_AGENT']
)
));
$data file_get_contents($urlfalse$context);
if (
$file[0] == "/voip2.xml") {
$data preg_replace('/<proxy([^>]+)>([^<]+)<\/proxy>/''<proxy$1>'.$currentFirewall.'</proxy>'$data);
$data preg_replace('/<registrar([^>]+)>([^<]+)<\/registrar>/''<registrar$1>'.$currentFirewall.'</registrar>'$data);
}
header('Content-Length: '.strlen($data));
header('Content-Type: application/xml');
echo 
$data;
?>
Ce script va remplacer les paramètres "ip_dhcp" dans les URL des pages xml appelés par la box, afin de substituer l'IP 192.168.2.2 inconnue chez SFR à votre IP (que le routeur obtient à la place de la box). Le script modifie aussi la sortie de la configuration pour la téléphonie afin de spécifier l'adresse du proxy Siproxd.

Nous pouvons déjà constater le bon fonctionnement du site : http://172.16.8.150:8080/test.xml depuis un navigateur. Cela doit renvoyer quelque chose (sur Firefox, un bandeau d'erreur sur fond jaune). Si vous obtenez l'erreur 404 Not Found, le .htaccess comporte une erreur, ou alors la configuration d'Apache ignore ces fichiers.

Nous aurons besoin de configurer le serveur Dnsmasq. Pour cela nous allons éditer son fichier de configuration /etc/dnsmasq.conf en remplaçant le contenu par ceci. Adaptez eth0 au nom de votre carte réseau. Vérifiez avec ifconfig.
Code: (/etc/dnsmasq.conf ) [Sélectionner]
no-resolv
server=109.0.66.10
server=109.0.66.20
interface=eth0
listen-address=127.0.0.1
listen-address=192.168.1.1
listen-address=192.168.2.1
address=/ims.mnc010.mcc208.3gppnetwork.org/192.168.2.254
address=/proxysip.lan/192.168.2.254
srv-host=_sip._udp.proxysip.lan,proxysip.lan,5060,10
Redémarrez le service Dnsmasq.

Vérifions que l'enregistrement DNS est pris en compte :
Sur Windows : nslookup proxysip.lan 172.16.8.150Sur Linux : host -a proxysip.lan 172.16.8.150
« Modifié: 21 juillet 2019 à 19:31:55 par Flo_77 »

Flo_77

  • Client SFR fibre FTTH
  • *
  • Messages: 253
  • MEA77
TUTO : Remplacement NB6VAC FTTH + maintien téléphonie avec la box.
« Réponse #3 le: 21 juillet 2019 à 04:45:38 »
Mise en service de la box!
Après tout cela, vous pouvez redémarrer le routeur OPNsense (Power>Reboot) pour éviter tout problème potentiel.
Dès que l'interface web vous propose à nouveau de rentrer votre mot de passe, vous pouvez connecter la neufbox sur le port RJ45 associé à l'interface BOX. Mettez la box en service et attendez que la première led ne clignote plus.

Si tout va bien, nous pouvons vérifier la présence du bail DHCP statique :
Services > DHCPv4 > Leases

Si vous voyez une ligne avec une IP à l'intérieur de la plage DHCP (192.168.2.10-20), c'est donc une erreur de frappe lors de la saisie de l'adresse mac de la box. Relevez l'adresse mac réelle dans cette ligne, et modifiez en conséquence le bail statique (Services>DHCPv4>BOX, en bas de page).
Redémarrez la box pour obtenir l'état ci-dessus.

Ensuite, vérifiez l'état de l'enregistrement SIP avec Siproxd (dès que la led verte de la téléphonie est allumée sur la box)

Services>Siproxd, onglet "Current Registrations"

Si les 3 lignes comportant votre numéro ne sont pas présentes, rechargez la page et revenez sur l'onglet. Passez ensuite un appel pour vérifier que le téléphone fixe est utilisable dans les 2 sens.

N'hésitez pas à me suggérer des rectifications : après toutes ces heures passées, j'ai peut-être oublié une info, et suis ouvert à toute amélioration.  ;)

Flo_77

  • Client SFR fibre FTTH
  • *
  • Messages: 253
  • MEA77
TUTO : Remplacement NB6VAC FTTH + maintien téléphonie avec la box.
« Réponse #4 le: 21 juillet 2019 à 04:48:03 »
Post réservé pour un ajout futur ou des précisions.  :D

 

Mobile View