Auteur Sujet: [FTTH][RED] [RESOLU] Bypass mais problème de téléphonie  (Lu 2738 fois)

0 Membres et 1 Invité sur ce sujet

zorglub

  • Abonné SFR fibre FttH
  • *
  • Messages: 13
  • Paris 12 (75)
Bonjour,

j'ai parcouru le forum dans tous les sens et j'ai trouvé plein d'informations concernant la mise en place de siproxd pour que la box puisse être sur mon réseau local et que je puisse utiliser le téléphone. Malheureusement, je dois m'y prendre comme un manche parce que je n'y arrive pas.

Afin que quelqu'un puisse m'aider, voici ce que je peux vous dire :

  • Routeur : OPNSense
  • Configuration IPv4 : OK
  • Configuration IPv6 : KO (mais c'est aussi KO avec la BOX fournie lorsqu'elle est directement branchée sur l'ONT
  • Téléphonie : KO (impossible d'èmettre ou de recevoir des appels) mais c'est OK d'après la BOX

1. Retraitement des appels effectués par la box

Comme expliqué un peu partout, j'ai mis en place un serveur nginx et script PHP qui permettent de patcher les appels pour que la BOX et l'infra puissent discuter

Les appels de la BOX sont forwardés sur un serveur nginx qui relaye la requête une fois patchée à l'infra

Au cas ou, voici le code PHP qui fait 99% du boulot
<?php 
if (isset($_GET['ip_dhcp'])) {
$_GET['ip_dhcp'] = 'IP.PU.BLI.QUE';
// au lieu de hardcoder l'IP, il serait mieux de faire un appel systeme
// $_GET['ip_dhcp'] = exec('ifconfig re0 | grep \'inet \' | cut -d\' \' -f2');
}
$_SERVER['DOCUMENT_URI'] = str_replace('/index.php'''$_SERVER['DOCUMENT_URI']);

$parameters http_build_query($_GET);
$url $_SERVER['REQUEST_SCHEME'].'://'.$_SERVER['HTTP_HOST'].'/'.trim($_SERVER['DOCUMENT_URI'], '/?') .'?'.$parameters;

$ch curl_init();
curl_setopt($chCURLOPT_URL$url);
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
$data curl_exec($ch);
$data preg_replace('/<proxy([^>]+)>([^<]+)<\/proxy>/''<proxy$1>mon.serveur.proxy</proxy>'$data);
curl_close($ch);
header('Content-Length: '.strlen($data));
header('Content-Type: application/xml');
echo 
$data;

2. Préparation de la partie DNS pour la BOX

Je rajoute que j'ai aussi configuré la partie DNS (au niveau de UnboundDNS) pour que la box puisse faire la recherche du proxy :
local-data: "_sip._udp.mon.serveur.proxy. 180 IN SRV 10 60 5060  mon.serveur.proxy."

et cette partie semble fonctionner car d'après ce que j'arrive à voir des traces tcpdump, je n'ai plus de problème d'initialisation de la BOX.

3. Récupération des infos pour Siproxd

Avant de mettre en place Siproxd, j'ai recherché les proxy utilisés par RED/SFR

# host -t SRV _sip._udp.residential.p-cscf.sfr.net
_sip._udp.residential.p-cscf.sfr.net has SRV record 10 0 5062 corbas.p-cscf.sfr.net.
_sip._udp.residential.p-cscf.sfr.net has SRV record 10 0 5062 trappes.p-cscf.sfr.net.
_sip._udp.residential.p-cscf.sfr.net has SRV record 10 0 5062 mitry.p-cscf.sfr.net.

4. Configuration Siproxd

Pour faire simple, et éviter de mettre les interfaces d'OPNSense, voici le fichier de config pour Siproxd qui est généré :

## re1 : interface LAN
if_inbound  = re1
## re0 : interface WAN
if_outbound = re0



#hosts_allow_reg = 192.168.1.8/24
#hosts_allow_sip = 123.45.0.0/16,123.46.0.0/16
#hosts_deny_sip  = 10.0.0.0/8,11.0.0.0/8

sip_listen_port = 5060

daemonize = 1
silence_log = 3
registration_file = /var/lib/siproxd/siproxd_registrations
autosave_registrations = 300
pid_file = /var/run/siproxd/siproxd.pid
rtp_proxy_enable = 1

rtp_port_low  = 7070
rtp_port_high = 7089
rtp_timeout = 300
rtp_dscp = 46
sip_dscp = 46
rtp_input_dejitter  = 0
rtp_output_dejitter = 0
tcp_timeout = 600
tcp_connect_timeout = 500
tcp_keepalive = 20

debug_level =      0x00000000
debug_port = 0


use_rport = 0

outbound_domain_name = ims.mnc010.mcc208.3gppnetwork.org
## j'ai essayé avec les 3 adresses IP suivantes :
## mitry.p-cscf.sfr.net : 77.136.6.21
## trappes.p-cscf.sfr.net : 77.136.6.69
## corbas.p-cscf.sfr.net : 77.136.7.21
outbound_domain_host = 77.136.6.77
outbound_domain_port = 5062


plugindir=/usr/local/lib/siproxd/


J'ai bien évidemment tout redémarré (la partie firewall et la partie BOX) avant de faire des tests.

Voici les traces que je récupère qui semblent poser problème (j'ai bien évidemment masqué les adresse MAC et les numéros de téléphone)

Frame 5: 1021 bytes on wire (8168 bits), 1021 bytes captured (8168 bits)
Ethernet II, Src: Sfr_XX:XX:XX (60:35:XX:XX:XX:XX), Dst: PcEngine_YY:YY:YY (00:0d:YY:YY:YY:YY)
Internet Protocol Version 4, Src: 192.168.1.250, Dst: 192.168.1.1
User Datagram Protocol, Src Port: 5060, Dst Port: 5060
Session Initiation Protocol (INVITE)
    Request-Line: INVITE sip:06xxxxxxxx@ims.mnc010.mcc208.3gppnetwork.org;user=phone SIP/2.0
        Method: INVITE
        Request-URI: sip:06xxxxxxxx@ims.mnc010.mcc208.3gppnetwork.org;user=phone
            Request-URI User Part: 06xxxxxxxx
            Request-URI Host Part: ims.mnc010.mcc208.3gppnetwork.org
        [Resent Packet: False]
    Message Header
        Via: SIP/2.0/UDP 192.168.1.250:5060;branch=z9hG4bKaf844e7
            Transport: UDP
            Sent-by Address: 192.168.1.250
            Sent-by port: 5060
            Branch: z9hG4bKaf844e7
        From: "+331yyyyyyyy" <sip:+331yyyyyyyy@ims.mnc010.mcc208.3gppnetwork.org;user=phone>;tag=53128A7
            SIP Display info: "+331yyyyyyyy"
            SIP from address: sip:+331yyyyyyyy@ims.mnc010.mcc208.3gppnetwork.org;user=phone
                SIP from address User Part: +331yyyyyyyy
                E.164 number (MSISDN): 331yyyyyyyy
                    Country Code: France (33)
                SIP from address Host Part: ims.mnc010.mcc208.3gppnetwork.org
                SIP From URI parameter: user=phone
            SIP from tag: 53128A7
        To: <sip:06xxxxxxxx@ims.mnc010.mcc208.3gppnetwork.org;user=phone>
            SIP to address: sip:06xxxxxxxx@ims.mnc010.mcc208.3gppnetwork.org;user=phone
                SIP to address User Part: 06xxxxxxxx
                SIP to address Host Part: ims.mnc010.mcc208.3gppnetwork.org
                SIP To URI parameter: user=phone
        User-Agent: otherIAD - rNB6VAC-XXXXXXXXXXXXXXX
        P-Preferred-Identity: <sip:+331yyyyyyyy@ims.mnc010.mcc208.3gppnetwork.org;user=phone>
            SIP PPI Address: sip:+331yyyyyyyy@ims.mnc010.mcc208.3gppnetwork.org;user=phone
                SIP PPI User Part: +331yyyyyyyy
                E.164 number (MSISDN): 331yyyyyyyy
                    Country Code: France (33)
                SIP PPI Host Part: ims.mnc010.mcc208.3gppnetwork.org
                SIP PPI URI parameter: user=phone
        Call-ID: 1307B4D0B8EEAD2@192.168.1.250
        [Generated Call-ID: 1307B4D0B8EEAD2@192.168.1.250]
        CSeq: 1 INVITE
            Sequence Number: 1
            Method: INVITE
        Allow: INVITE, ACK, BYE, CANCEL, REFER, NOTIFY, SUBSCRIBE, REGISTER, UPDATE
        Max-Forwards: 70
        Contact: <sip:+331yyyyyyyy@192.168.1.250:5060;user=phone>
            Contact URI: sip:+331yyyyyyyy@192.168.1.250:5060;user=phone
                Contact URI User Part: +331yyyyyyyy
                E.164 number (MSISDN): 331yyyyyyyy
                    Country Code: France (33)
                Contact URI Host Part: 192.168.1.250
                Contact URI Host Port: 5060
                Contact URI parameter: user=phone
        Content-Type: application/sdp
        Content-Length: 277
    Message Body
        Session Description Protocol
            Session Description Protocol Version (v): 0
            Owner/Creator, Session Id (o): +331yyyyyyyy 1561063311 1561063312 IN IP4 192.168.1.250
                Owner Username: +331yyyyyyyy
                Session ID: 1561063311
                Session Version: 1561063312
                Owner Network Type: IN
                Owner Address Type: IP4
                Owner Address: 192.168.1.250
            Session Name (s): -
            Connection Information (c): IN IP4 192.168.1.250
                Connection Network Type: IN
                Connection Address Type: IP4
                Connection Address: 192.168.1.250
            Time Description, active time (t): 0 0
                Session Start Time: 0
                Session Stop Time: 0
            Media Description, name and address (m): audio 35560 RTP/AVP 8 0 18 101
                Media Type: audio
                Media Port: 35560
                Media Protocol: RTP/AVP
                Media Format: ITU-T G.711 PCMA
                Media Format: ITU-T G.711 PCMU
                Media Format: ITU-T G.729
                Media Format: DynamicRTP-Type-101
            Media Attribute (a): rtpmap:8 PCMA/8000
                Media Attribute Fieldname: rtpmap
                Media Format: 8
                MIME Type: PCMA
                Sample Rate: 8000
            Media Attribute (a): rtpmap:0 PCMU/8000
                Media Attribute Fieldname: rtpmap
                Media Format: 0
                MIME Type: PCMU
                Sample Rate: 8000
            Media Attribute (a): rtpmap:18 G729/8000
                Media Attribute Fieldname: rtpmap
                Media Format: 18
                MIME Type: G729
                Sample Rate: 8000
            Media Attribute (a): rtpmap:101 telephone-event/8000
                Media Attribute Fieldname: rtpmap
                Media Format: 101
                MIME Type: telephone-event
                Sample Rate: 8000
            Media Attribute (a): fmtp:101 0-11
                Media Attribute Fieldname: fmtp
                Media Format: 101 [telephone-event]
                Media format specific parameters: 0-11
            Media Attribute (a): sendrecv
            Media Attribute (a): ptime:20
                Media Attribute Fieldname: ptime
                Media Attribute Value: 20
            [Generated Call-ID: 1307B4D0B8EEAD2@192.168.1.250]

Frame 6: 372 bytes on wire (2976 bits), 372 bytes captured (2976 bits)
Ethernet II, Src: PcEngine_YY:YY:YY (00:0d:YY:YY:YY:YY), Dst: Sfr_XX:XX:XX (60:35:XX:XX:XX:XX)
Internet Protocol Version 4, Src: 192.168.1.1, Dst: 192.168.1.250
User Datagram Protocol, Src Port: 5060, Dst Port: 5060
Session Initiation Protocol (408)
    Status-Line: SIP/2.0 408 Request Timeout
        Status-Code: 408
        [Resent Packet: False]
        [Request Frame: 5]
        [Response Time (ms): 0]
    Message Header
        Via: SIP/2.0/UDP 192.168.1.250:5060;branch=z9hG4bKaf844e7
            Transport: UDP
            Sent-by Address: 192.168.1.250
            Sent-by port: 5060
            Branch: z9hG4bKaf844e7
        From: "+331yyyyyyyy" <sip:+331yyyyyyyy@ims.mnc010.mcc208.3gppnetwork.org;user=phone>;tag=53128A7
            SIP Display info: "+331yyyyyyyy"
            SIP from address: sip:+331yyyyyyyy@ims.mnc010.mcc208.3gppnetwork.org;user=phone
                SIP from address User Part: +331yyyyyyyy
                E.164 number (MSISDN): 331yyyyyyyy
                    Country Code: France (33)
                SIP from address Host Part: ims.mnc010.mcc208.3gppnetwork.org
                SIP From URI parameter: user=phone
            SIP from tag: 53128A7
        To: <sip:06xxxxxxxx@ims.mnc010.mcc208.3gppnetwork.org;user=phone>
            SIP to address: sip:06xxxxxxxx@ims.mnc010.mcc208.3gppnetwork.org;user=phone
                SIP to address User Part: 06xxxxxxxx
                SIP to address Host Part: ims.mnc010.mcc208.3gppnetwork.org
                SIP To URI parameter: user=phone
        Call-ID: 1307B4D0B8EEAD2@192.168.1.250
        [Generated Call-ID: 1307B4D0B8EEAD2@192.168.1.250]
        CSeq: 1 INVITE
            Sequence Number: 1
            Method: INVITE
        Content-Length: 0

Comme vous pouvez le voir, j'ai une erreur SIP/2.0 408 Request Timeout qui revient toujours. Cette erreur est présente dans tous les cas.
Une dernière précision, je n'ai aucune règle de filtrage spécifique sur le firewall, ni aucune redirection de port (mais à priori, si j'ai bien compris, ce n'est pas utile).

Si quelqu'un a une piste (règle de NAT, règle de firewalling, traçage pour mieux identifier le problème, ...)  je suis preneur car la je sèche complètement et surtout, je ne sais plus par quel bout prendre le problème.

Merci à tous

PS: si je n'ai pas été assez clair, ou si je n'ai pas fourni les informations suffisantes pour m'aider, n'hésitez pas :-)
« Modifié: 22 juin 2019 à 10:24:54 par zorglub »

zorglub

  • Abonné SFR fibre FttH
  • *
  • Messages: 13
  • Paris 12 (75)
[FTTH][RED] [RESOLU] Bypass mais problème de téléphonie
« Réponse #1 le: 22 juin 2019 à 09:14:07 »
Bon, je ne sais pas par quel effet magique, mais hier soir j'ai tout laissé en plan et ce matin en voulant recommencer mes tests, je me suis rendu compte que la téléphonie marchait.
Je vais donc faire quelques tests complèmentaires pour voir si je peux utiliser les noms de domaines dans siproxd au lieu de fixer des adresses IP en dur.

Voici la conf finale qui marche de mon côté depuis ce matin :

siproxd.conf

if_inbound  = re1
if_outbound = re0

sip_listen_port = 5060

daemonize = 1
silence_log = 3
registration_file = /var/lib/siproxd/siproxd_registrations
autosave_registrations = 300
pid_file = /var/run/siproxd/siproxd.pid
rtp_proxy_enable = 1

rtp_port_low  = 7070
rtp_port_high = 7089
rtp_timeout = 300
rtp_dscp = 46
sip_dscp = 46
rtp_input_dejitter  = 0
rtp_output_dejitter = 0
tcp_timeout = 600
tcp_connect_timeout = 500
tcp_keepalive = 20

debug_level =      0x00000000
debug_port = 0

use_rport = 0

outbound_domain_name = ims.mnc010.mcc208.3gppnetwork.org
## trappes.p-cscf.sfr.net <-> 77.136.6.77
outbound_domain_host = 77.136.6.77
outbound_domain_port = 5062

plugindir=/usr/local/lib/siproxd/


index.php utilisé pour le patch des URLs de config de la REDBox
<?php 

$currentHost 
'firewall.localdomain.intra';
// devrait être dynamique à tester
// $currentHost = exec('hostname');

if (isset($_GET['ip_dhcp'])) {
$_GET['ip_dhcp'] = exec('ifconfig re0 | grep \'inet \' | cut -d\' \' -f2');
}
$_SERVER['DOCUMENT_URI'] = str_replace('/index.php'''$_SERVER['DOCUMENT_URI']);

$parameters http_build_query($_GET);
$url $_SERVER['REQUEST_SCHEME'].'://'.$_SERVER['HTTP_HOST'].'/'.trim($_SERVER['DOCUMENT_URI'], '/?') .'?'.$parameters;

$ch curl_init();
curl_setopt($chCURLOPT_URL$url);
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
$data curl_exec($ch);
$data preg_replace('/<proxy([^>]+)>([^<]+)<\/proxy>/''<proxy$1>'.$currentHost.'</proxy>'$data);
curl_close($ch);
header('Content-Length: '.strlen($data));
header('Content-Type: application/xml');
echo 
$data;

zorglub

  • Abonné SFR fibre FttH
  • *
  • Messages: 13
  • Paris 12 (75)
[FTTH][RED] [RESOLU] Bypass mais problème de téléphonie
« Réponse #2 le: 06 juillet 2019 à 16:54:59 »
Pour ceux que ça intéressent, tout marche bien systématiquement à condition de bien démarrer dans l'ordre :
 1. Le routeur pour que siproxd fonctionne correctement
 2. La box pour qu'elle puisse récupérer le bon paramétrage

Lors de mes différents tests, j'ai du me prendre les pied dans le tapis car la box devait être en fallback sur la configuration d'origine.....

Flo_77

  • Abonné Free fibre
  • *
  • Messages: 276
  • MEA77
[FTTH][RED] [RESOLU] Bypass mais problème de téléphonie
« Réponse #3 le: 20 juillet 2019 à 16:50:54 »
Hello, j'arrivais à passer des appels muets en suivant cette config, avec l'inscription de mon numéro de téléphone dans "current registrations".

Maintenant lorsque la NB s'enregistre sur siproxd, j'ai cette même erreur 408 Request Timeout. Malgré cela, la led du téléphone s'allume. Je ne pense pas avoir modifié grand chose entre temps, j'utilise actuellement cette même configuration. Il persiste ceci dans current registrations : (ce n'a pas le format d'un numéro)
Citer
****:0:15635xxxxx

Lorsque je tente un appel depuis le fixe, j'ai un essai d'enregistrement en boucle, qui se solde par la même erreur. Seul moyen de l'interrompre : débrancher le RJ45 de mon wireshark.
Une idée?

D'ailleurs j'ai relevé dans la conf de /voip2.xml ceci :

            <rtp>
                <port-min>
                    35500
                    </port-min>
                <port-max>
                    35599
                    </port-max>
                </rtp>

Flo_77

  • Abonné Free fibre
  • *
  • Messages: 276
  • MEA77
[FTTH][RED] [RESOLU] Bypass mais problème de téléphonie
« Réponse #4 le: 20 juillet 2019 à 22:36:21 »
J'avance : j'arrive à m'enregistrer maintenant que j'ai résolu sur le dns intégré au firewall le domaine ims.mnc010.mcc208.3gppnetwork.org. Ne sachant pas quoi mettre, j'ai défini en 127.0.0.1. Siproxd semble ne pas accepter un domaine non résolvable.

Le soucis maintenant, c'est qu'un appel vers l'extérieur renvoie une erreur 407 Proxy Authentification Required...  :-[

Edit : bon je n'y comprend rien mais ça fonctionne! je vais faire un topic dédié pour détailler toute la configuration nécessaire.