PDA

Voir la version complète : Je n'entends pas mon correspondant quand il m'appelle



Lenwe
12/12/2013, 15h35
Bonjour :)

Voici mon problème : J'ai un compte SIP chez OVH que je veux utiliser sur plusieurs devices simultanément. Concrètement, quand on m'appelle, je veux pouvoir décrocher soit sur mon PC de bureau, soit sur mon smartphone soit sur mon Mac Book Air etc et pas seulement avoir le dernier device authentifié qui sonne.

J'ai donc installé Asterisk 1.8.10.1 sur mon serveur dédié (chez OVH également) sous Ubuntu, avec un simple apt-get pour mettre en place un groupe d'appel. Le serveur est directement connecté à Internet, il n'y a pas de routeur. Les clients fonctionnent correctement lorsque je les configure pour utiliser mon SIP OVH directement.

J'ai suivi de nombreux tutos, la doc etc et j'ai presque réussi à faire ce que je veux, mis à part que je n'entends pas mon correspondant lorsqu'il m'appelle. Je n'ai en revanche aucun souci lorsque c'est moi qui l'appelle ou lorsque j'appelle un de mes autres devices en interne.

J'ai créé 3 comptes sur Asterisk pour chacun des devices avec les numéros 6001, 6002 et 6003.

Voici mes fichiers de configuration :

sip.conf

[general]
bindport=5060
bindaddr=XXX.XXX.XXX.XXX ; Adresse IP de mon serveur dédié
srvlookup=yes
defaultexpiry=3600
registertimeout=30
registerattempts=0
allowguest=no
encryption=no
nat = yes
directmedia=yes ; "canreinvite" dans les versions plus anciennes
directrtpsetup=no

; SIP trunks
register => 033XXXXXXXXX:********@sip.ovh.fr

[lenwe-ovh]
encryption=no
type=peer
host=sip.ovh.fr
context=lenwe-incoming
language=fr
insecure=invite,port
fromdomain=sip.ovh.fr
fromuser=033XXXXXXXXX
username=033XXXXXXXXX
secret=********
qualify=yes
dtmfmode=auto
language=fr
video=no
disallow=all
allow=ulaw,alaw,g729,g723,adpcm

Si je mets directmedia (anciennement canreinvite) à no, je n'entends plus mon correspondant lorsque je l'appelle
Si je mets directrtpsetup à yes, je n'entends plus rien dans les 2 sens en appelant un 6XXX depuis un autre 6XXX (mais à la limite on s'en fout)

users.conf

[general]
fullname = New User
userbase = 6000
hasvoicemail = no
hassip = yes
hasiax = no
hasmanager = no

[lenwe](!)
type=friend
host=dynamic
dtmfmode=auto
fullname = Lenwe
context=lenwe-internal
secret=O1mwODnU
language=fr
video=no
mailbox=XXXXXXXX@XXX.com
disallow=all
allow=ulaw,alaw,g729,g723,adpcm

[6001](lenwe)
username = lenwe-office

[6002](lenwe)
username = lenwe-mobile

[6003](lenwe)
username = lenwe-laptop

extensions.conf

[general]
static=yes
writeprotect=no
autofallthrough=yes
clearglobalvars=no
priorityjumping=no

[lenwe-incoming]

; from external
exten => s,1,Dial(SIP/6001&SIP/6002&SIP/6003,20,t)

[lenwe-internal]

; to internal
exten => _6XXX,1,Dial(SIP/${EXTEN},20,t)

; to external
exten => _X.,1,Dial(SIP/lenwe-ovh/${EXTEN})

Voici la trace lorsque je passe un appel depuis mon ordinateur (6001) vers l'extérieur (0951XXXXXX) => Ça fonctionne. On remarque que les lignes sont bridgées.

Appel de 6001 vers ligne fixe

== Using SIP RTP CoS mark 5
-- Executing [0951XXXXXX@lenwe-internal:1] Dial("SIP/6001-00000000", "SIP/lenwe-ovh/0951XXXXXX") in new stack
== Using SIP RTP CoS mark 5
-- Called SIP/lenwe-ovh/0951XXXXXX
-- SIP/lenwe-ovh-00000001 is ringing
-- SIP/lenwe-ovh-00000001 is making progress passing it to SIP/6001-00000000
-- SIP/lenwe-ovh-00000001 answered SIP/6001-00000000
-- Remotely bridging SIP/6001-00000000 and SIP/lenwe-ovh-00000001
== Spawn extension (lenwe-internal, 0951XXXXXX, 1) exited non-zero on 'SIP/6001-00000000'

Voici la trace d'un appel passé de l'extérieur vers mes 3 postes locaux. J'ai décroché avec le 6001 et le 6003 est hors-ligne (d'où le warning).
À ce moment là, mon correspondant (extérieur) peut m'entendre mais pas l'inverse. On remarque qu'il n'y a pas de bridging (on devrait voir un truc du genre "Remotely bridging SIP/lenwe-ovh-00000005 and SIP/6001-00000006")

Appel ligne fixe (0951XXXXXX) vers 6XXX

== Using SIP RTP CoS mark 5
-- Executing [s@lenwe-incoming:1] Dial("SIP/lenwe-ovh-00000005", "SIP/6001&SIP/6002&SIP/6003,20,t") in new stack
== Using SIP RTP CoS mark 5
-- Called SIP/6001
== Using SIP RTP CoS mark 5
-- Called SIP/6002
[Dec 12 12:56:13] WARNING[15946]: app_dial.c:2218 dial_exec_full: Unable to create channel of type 'SIP' (cause 20 - Unknown)
-- SIP/6001-00000006 connected line has changed. Saving it until answer for SIP/lenwe-ovh-00000005
-- SIP/6002-00000007 connected line has changed. Saving it until answer for SIP/lenwe-ovh-00000005
-- SIP/6001-00000006 is ringing
-- SIP/6002-00000007 is ringing
-- SIP/6001-00000006 connected line has changed. Saving it until answer for SIP/lenwe-ovh-00000005
-- SIP/6001-00000006 answered SIP/lenwe-ovh-00000005
== Spawn extension (lenwe-incoming, s, 1) exited non-zero on 'SIP/lenwe-ovh-00000005'

Une idée ? Quelqu'un a déjà réussi à configurer ce genre d'installation ?

jean
12/12/2013, 16h38
un bon moyen de debugger est de faire un rtp set debug on sur la console - ca permet de voir vers quelles @ ip asterisk envoie les paquets audio
tu dois voir deux flux bidirectionnels : ovh tel <=> asterisk et asterisk <=> client

essaie aussi en ajoutant: externip = @ ip publique du serveur, et localnet = @ ip du serveur/32 - essaie aussi sans le nat dans la section general, mais en le mettant poste par poste

aussi, pour simplifier les tests, ne mets initialement qu'un poste à sonner - une fois l'audio résolu, tu pourras passer à trois

Lenwe
13/12/2013, 14h02
Merci pour ta réponse :) Je ne connaissais pas le rtp debug. Malheureusement, ça ne résoud pas mon problème.

Donc ce qui se passe quand je passe un appel depuis mon poste vers l'extérieur, j'ai une série de lignes comme celles ci qui défilent non stop jusqu'à ce que je décroche :

Got RTP packet from XXX.XXX.XXX.XXX:50042 (type 00, seq 026588, ts 012800, len 000160)
Sent RTP packet to 91.121.128.146:30522 (type 00, seq 038367, ts 012800, len 000160)

Et lorsque je décroche sur mon téléphone extérieur, j'ai quelques lignes du genre

Sent RTP P2P packet to 91.121.128.146:30522 (type 00, len 000160)

À l'inverse, lorsque j'appelle de l'extérieur, j'ai les lignes suivantes mais seulement après avoir décroché

Got RTP packet from XXX.XXX.XXX.XXX:50044 (type 00, seq 026146, ts 076320, len 000160)
Sent RTP packet to 91.121.128.144:32880 (type 00, seq 035054, ts 076320, len 000160)

XXX.XXX.XXX.XXX est l'adresse IP de mon client (celle de mon routeur derrière lequel est mon ordi) et 91.121.128.144 c'est sip.ovh.fr. Pour les tests j'ai donc mis nat=yes pour les postes (qui sont en général derrière un routeur) et nat=no pour le general, vu que le serveur est directement relié à Internet. Je n'ai redirigé que vers un seul poste également pour simplifier.

Vu que je n'y connais pas grand chose et qu'il est difficile de trouver de la documentation claire pour Asterisk, j'ai fait pas mal d'essais avec les paramètres directmedia et directrtpsetup, dans certains cas j'avais du son que dans un sens même en appelant vers l'extérieur, voire pas de son du tout. D'après ce que j'ai compris, ça permet d'initialiser le dialogue entre les partis avec un système d'invitations et d'acknowledgments et vu la gueule de la trace RTP, c'est à ce niveau là qu'il faut régler quelque chose...

jean
13/12/2013, 15h27
peux tu regarder le rtp.conf et vérifier que les ports listés sont bien ouverts sur le firewall

directmedia est une prise de tête totale. ca sert lorsque deux clients sip qui sont en comm via un serveur se mettent à échanger le media directement sans passer par le serveur. mais il faut que chaque client connaisse son ip publique et d'autres conditions... oublie, ca ne peut que compliquer

lorsque tu appelles depuis l''exterieur, l'@ "ovh" est .146 et non .144 comme les autres - fautes de frappe ?

essaie d'abord de faire un echo test - dans le dialplan, au lieu de faire dial ton tel, fais answer() puis echo() - ca permettra de voir ou le son se perd

Lenwe
16/12/2013, 12h24
J'ai désactivé directmedia. Effectivement, l'IP du serveur est fixe mais celle des clients peut varier. Seulement, avec directmedia à no, je n'entends plus mon correspondant que ce soit quand je l'appelle ou quand il m'appelle. Avec set rtp debug à on, j'ai les mêmes traces qu'avant, mis à part que les Sent RTP P2P packet ne s'arrêtent pas. C'est de toute évidence une fausse piste.

Pour ce qui est du firewall c'est simple, il laisse tout passer (Asterisk utilise les ports 10000-20000 pour le RTP) et mon serveur est directement connecté à Internet. Lorsque je fais un netstat -na en passant un appel, je vois bien les flux ouverts.


udp 0 0 XXX.XXX.XXX.XXX:5060 0.0.0.0:*
udp 0 0 XXX.XXX.XXX.XXX:10008 0.0.0.0:*
udp 0 0 XXX.XXX.XXX.XXX:10009 0.0.0.0:*
udp 0 0 XXX.XXX.XXX.XXX:10018 0.0.0.0:*
udp 0 0 XXX.XXX.XXX.XXX:10019 0.0.0.0:*

Sinon, L'IP de sip.ovh.fr est 91.121.129.20 (et non 91.121.128.146 ni 91.121.128.144)