Affichage des résultats 1 à 4 sur 4

Discussion: SIP, NAT, et pas d'audio pas de son...

  1. #1
    Membre Senior
    Date d'inscription
    septembre 2010
    Localisation
    Where the sun shines
    Messages
    1 416
    Merci
    7
    Remercié 54 Fois en 54 Posts

    Downloads
    0
    Uploads
    0

    SIP, NAT, et pas d'audio pas de son...

    bonjour

    je vois régulièrement des messages qui ne comprennent pas pourquoi il n'y a pas de son lors d'un appel.... voici quelques explications, à lire bien au calme:

    1/ le nat
    https://fr.wikipedia.org/wiki/Networ...ss_translation

    en gros, dans le cas typique d'une installation avec une live/b/free box, l'installation a une seule adresse ip publique (donc, coté WAN, wide area network). chaque pc/tel/etc... connecté à cette box reçoit une ip privée, dans le LAN (local area network). ces adresses sont souvent de la forme 192.168.1.x (ou 192.168.x.y).

    quand un pc sur lan accède, par exemple, à un site web, la box assigne un numéro de port aléatoire à cette demande, et l'envoie au serveur avec son ip publique

    ex (format ip:port)
    pc : 192.168.1.10:1234 veut joindre 1.2.3.4:80 (ou un quelconque serveur)
    box : mon.ip.pub.lique:4567 veut joindre 1.2.3.4:80 et mémorise cette association
    serveur: recoit une demande de mon.ip.pub.lique:4567
    serveur: repond à mon.ip.pub.lique:4567
    box: retrouve l'ip locale associée à mon.ip.pub.lique:4567 , donc , envoie à 192.168.1.10:1234

    tout ca se fait automatiquement - comme le lan initie la connexion, la box (le routeur en fait) mémorise tout

    2/ et le sip alors ?
    ben, pour le sip, ca marche pareil - rappel: le sip, c'est la signalisation, pas l'audio
    mais, quand on établit un appel, disons A -> B, A envoie un message invite, et indique dans le paquet sip à quelle ip il faut envoyer le media (RTP). c'est pratique, ca permet d'avoir une machine ou plusieurs machines traitant le média, pour une faisant la sig (ou d'avoir des configs bien compliquées). mais souvent, c'est la même machine qui traite le media ET la sig - sip et RTP.

    probleme... comme le pc ne connait que son ip privée (192.168....), il met cette adresse, et le serveur distant répond en envoyant le flux à cette adresse. comme ils ne sont pas sur le meme lan, ben ca marche pas.

    note: lorsque A envoie l'invite, il met donc son adresse dans le paquet - après un ack, et eventuellement un ringing, B répond avec un simple message OK pour dire que c'est décroché. dans ce message OK, il indique AUSSI SA PROPRE adresse ip - le problème est donc des deux coté si les deux cotés sont nattés

    3/ les solutions
    y'en a plusieurs
    - le stun: le client interroge un serveur externe (stun server) qui lui répond en donnant son adresse publique. il la met comme adresse de media

    - SIP ALG - certaines box/routeur ont une fonction alg, qui inspecte les paquets, et fait cette translation. mais souvent, c'est mal fait et ca casse le sip, et pas grand chose ne marche. a desactiver systematiquement

    - en asterisk pur:
    pour les clients
    l'option nat=force_rport (anciennement nat=yes), permet de forcer asterisk à ignorer l'adresse dans le invite, et à envoyer le media sur l'@ ip ou il a reçu l'invite

    et si le serveur est lui meme derrière un nat:
    le paramètre localnet permet de dire quelles @ ip sont en local. si asterisk doit envoyer du media à une adresse qui rentre dans ce masque, il ne change rien. en revanche, si le destinataire ne match pas, il indique que son adresse pour le media est externip (ou externhost).

    4/ comment debugger
    une facon simple,
    rtp set debug on
    sip set debug on

    après, on regarde defiler les messages RTP "Got" ou "Sent RTP packet to" - si on voit des adresses locales et que le client est distant, pas de bol (attention, quand on appelle d'un poste sur le lan, via asterisk, vers un poste hors lan, on a deux appels, donc deux jeux de traces qui se mélangent)

  2. #2
    Membre Senior
    Date d'inscription
    octobre 2014
    Messages
    123
    Merci
    4
    Remercié 0 Fois en 0 Posts

    Downloads
    0
    Uploads
    0
    Salut,

    Quelque chose m'échappe...

    En utilisant le mode NAT dans Asterisk (force rport+comedia) j'ai quand même l'adresse IP interne du poste (10.0.0.84) qui apparait puis ensuite l'adresse publique (XXX.XXX.XXX.XXX) :

    Code:
    [Feb  4 10:48:24] Sent RTP packet to      10.0.0.84:62544 (type 00, seq 029237, ts 004160, len -000013)
    [Feb  4 10:48:24] Sent RTP packet to      10.0.0.84:62544 (type 00, seq 029238, ts 004320, len -000013)
    [Feb  4 10:48:24] Sent RTP packet to      10.0.0.84:62544 (type 00, seq 029239, ts 004480, len -000013)
    [Feb  4 10:48:24] Sent RTP packet to      10.0.0.84:62544 (type 00, seq 029240, ts 004640, len -000013)
    [Feb  4 10:48:24] Sent RTP packet to      10.0.0.84:62544 (type 00, seq 029241, ts 004800, len -000013)
    [Feb  4 10:48:24] Sent RTP packet to      10.0.0.84:62544 (type 00, seq 029242, ts 004960, len -000013)
    [Feb  4 10:48:24] Sent RTP packet to      10.0.0.84:62544 (type 00, seq 029243, ts 005120, len -000013)
    [Feb  4 10:48:24] Sent RTP packet to      10.0.0.84:62544 (type 00, seq 029244, ts 005280, len -000013)
    [Feb  4 10:48:24] Sent RTP packet to      10.0.0.84:62544 (type 00, seq 029245, ts 005440, len -000013)
    [Feb  4 10:48:24] Sent RTP packet to      10.0.0.84:62544 (type 00, seq 029246, ts 005600, len -000013)
    [Feb  4 10:48:24] Sent RTP packet to      10.0.0.84:62544 (type 00, seq 029247, ts 005760, len -000013)
    [Feb  4 10:48:24] Sent RTP packet to      10.0.0.84:62544 (type 00, seq 029248, ts 005920, len -000013)
    [Feb  4 10:48:24] Sent RTP packet to      10.0.0.84:62544 (type 00, seq 029249, ts 006080, len -000013)
    [Feb  4 10:48:24] Sent RTP packet to      10.0.0.84:62544 (type 00, seq 029250, ts 006240, len -000013)
    [Feb  4 10:48:24] Sent RTP packet to      10.0.0.84:62544 (type 00, seq 029251, ts 006400, len -000013)
    [Feb  4 10:48:24] Sent RTP packet to      10.0.0.84:62544 (type 00, seq 029252, ts 006560, len -000013)
    [Feb  4 10:48:24] Sent RTP packet to      10.0.0.84:62544 (type 00, seq 029253, ts 006720, len -000013)
    [Feb  4 10:48:24] Sent RTP packet to      10.0.0.84:62544 (type 00, seq 029254, ts 006880, len -000013)
    [Feb  4 10:48:24] Sent RTP packet to      10.0.0.84:62544 (type 00, seq 029255, ts 007040, len -000013)
    [Feb  4 10:48:24] Sent RTP packet to      10.0.0.84:62544 (type 00, seq 029256, ts 007200, len -000013)
    [Feb  4 10:48:24] Sent RTP packet to      10.0.0.84:62544 (type 00, seq 029257, ts 007360, len -000013)
    [Feb  4 10:48:24] Sent RTP packet to      10.0.0.84:62544 (type 00, seq 029258, ts 007520, len -000013)
    [Feb  4 10:48:24] Sent RTP packet to      10.0.0.84:62544 (type 00, seq 029259, ts 007680, len -000013)
    [Feb  4 10:48:24] Sent RTP packet to      10.0.0.84:62544 (type 00, seq 029260, ts 007840, len -000013)
    [Feb  4 10:48:25] Sent RTP packet to      10.0.0.84:62544 (type 00, seq 029261, ts 008000, len -000013)
    [Feb  4 10:48:34]        > 0xb494fd98 -- Probation passed - setting RTP source address to XXX.XXX.XXX.XXX:44259
    [Feb  4 10:48:34] Got  RTP packet from    XXX.XXX.XXX.XXX:44259 (type 126, seq 000000, ts 080033, len 000068)
    [Feb  4 10:48:34] NOTICE[32276][C-000000a0]: res_rtp_asterisk.c:4365 ast_rtp_read: Unknown RTP codec 126 received from 'XXX.XXX.XXX.XXX:44259'
    [Feb  4 10:48:35]     -- Incorrect password '' for user '301' (context = default-b)
    [Feb  4 10:48:35] Sent RTP packet to      XXX.XXX.XXX.XXX:44259 (type 00, seq 029262, ts 088328, len 000160)
    [Feb  4 10:48:35]     -- <SIP/ze03p9-000000ca> Playing 'vm-incorrect.slin' (language 'fr_FR')
    [Feb  4 10:48:35] Sent RTP packet to      XXX.XXX.XXX.XXX:44259 (type 00, seq 029263, ts 088488, len 000160)
    [Feb  4 10:48:35] Sent RTP packet to      XXX.XXX.XXX.XXX:44259 (type 00, seq 029264, ts 088648, len 000160)
    [Feb  4 10:48:35] Sent RTP packet to      XXX.XXX.XXX.XXX:44259 (type 00, seq 029265, ts 088808, len 000160)
    [Feb  4 10:48:35] Sent RTP packet to      XXX.XXX.XXX.XXX:44259 (type 00, seq 029266, ts 088968, len 000160)
    [Feb  4 10:48:35] Sent RTP packet to      XXX.XXX.XXX.XXX:44259 (type 00, seq 029267, ts 089128, len 000160)
    [Feb  4 10:48:35] Sent RTP packet to      XXX.XXX.XXX.XXX:44259 (type 00, seq 029268, ts 089288, len 000160)
    [Feb  4 10:48:35] Sent RTP packet to      XXX.XXX.XXX.XXX:44259 (type 00, seq 029269, ts 089448, len 000160)
    [Feb  4 10:48:35] Sent RTP packet to      XXX.XXX.XXX.XXX:44259 (type 00, seq 029270, ts 089608, len 000160)
    [Feb  4 10:48:35] Sent RTP packet to      XXX.XXX.XXX.XXX:44259 (type 00, seq 029271, ts 089768, len 000160)
    [Feb  4 10:48:35] Sent RTP packet to      XXX.XXX.XXX.XXX:44259 (type 00, seq 029272, ts 089928, len 000160)
    [Feb  4 10:48:35] Sent RTP packet to      XXX.XXX.XXX.XXX:44259 (type 00, seq 029273, ts 090088, len 000160)
    [Feb  4 10:48:35] Sent RTP packet to      XXX.XXX.XXX.XXX:44259 (type 00, seq 029274, ts 090248, len 000160)
    [Feb  4 10:48:35] Sent RTP packet to      XXX.XXX.XXX.XXX:44259 (type 00, seq 029275, ts 090408, len 000160)
    [Feb  4 10:48:35] Sent RTP packet to      XXX.XXX.XXX.XXX:44259 (type 00, seq 029276, ts 090568, len 000160)
    [Feb  4 10:48:35] Sent RTP packet to      XXX.XXX.XXX.XXX:44259 (type 00, seq 029277, ts 090728, len 000160)
    [Feb  4 10:48:35] Sent RTP packet to      XXX.XXX.XXX.XXX:44259 (type 00, seq 029278, ts 090888, len 000160)
    [Feb  4 10:48:35] Sent RTP packet to      XXX.XXX.XXX.XXX:44259 (type 00, seq 029279, ts 091048, len 000160)
    [Feb  4 10:48:35] Sent RTP packet to      XXX.XXX.XXX.XXX:44259 (type 00, seq 029280, ts 091208, len 000160)
    [Feb  4 10:48:35] Sent RTP packet to      XXX.XXX.XXX.XXX:44259 (type 00, seq 029281, ts 091368, len 000160)
    [Feb  4 10:48:35] Sent RTP packet to      XXX.XXX.XXX.XXX:44259 (type 00, seq 029282, ts 091528, len 000160)
    [Feb  4 10:48:35] Sent RTP packet to      XXX.XXX.XXX.XXX:44259 (type 00, seq 029283, ts 091688, len 000160)
    [Feb  4 10:48:35] Sent RTP packet to      XXX.XXX.XXX.XXX:44259 (type 00, seq 029284, ts 091848, len 000160)
    [Feb  4 10:48:35] Sent RTP packet to      XXX.XXX.XXX.XXX:44259 (type 00, seq 029285, ts 092008, len 000160)
    [Feb  4 10:48:35] Sent RTP packet to      XXX.XXX.XXX.XXX:44259 (type 00, seq 029286, ts 092168, len 000160)
    [Feb  4 10:48:35] Sent RTP packet to      XXX.XXX.XXX.XXX:44259 (type 00, seq 029287, ts 092328, len 000160)
    [Feb  4 10:48:35] Sent RTP packet to      XXX.XXX.XXX.XXX:44259 (type 00, seq 029288, ts 092488, len 000160)
    As-tu une idée du pourquoi ?

  3. #3
    Membre Senior
    Date d'inscription
    septembre 2010
    Localisation
    Where the sun shines
    Messages
    1 416
    Merci
    7
    Remercié 54 Fois en 54 Posts

    Downloads
    0
    Uploads
    0
    A voir, c'est la réception du paquet de media qui déclenche ce changement - si tu es curieux, essaie de mettre directmedia=no - ca pourrait rester sur la premiere ip, ou directrtpsetup=no

    intéressant aussi, sur la sécurité:
    Code:
    ; IT IS IMPORTANT TO NOTE that if the nat setting in the general section differs from
    ; the nat setting in a peer definition, then the peer username will be discoverable
    ; by outside parties as Asterisk will respond to different ports for defined and
    ; undefined peers. For this reason it is recommended to ONLY DEFINE NAT SETTINGS IN THE
    ; GENERAL SECTION. Specifically, if nat=force_rport in one section and nat=no in the
    ; other, then valid peers with settings differing from those in the general section will
    ; be discoverable.

  4. #4
    Membre Senior
    Date d'inscription
    juin 2011
    Messages
    159
    Merci
    0
    Remercié 0 Fois en 0 Posts

    Downloads
    0
    Uploads
    0
    hello,
    j'ai été confronté à ce problème et je l'ai résolu en configurant mon firewall.
    J'utilise freepbx, et le nat=yes est configuré sur chaque extension.
    Les paramètres ip sont également configurés dans freepbx avec localnet et publique ip.
    Nat=yes également dans mon trunk avec le sip provider.

    Et pourtant, problème de coupure de son endéans un délai aléatoire, pas de détection de raccroché et autres joyeusetés.
    Jusqu'au jour où j'ai ouvert 5060 pour le sip provider (et uniquement lui je vous rassure).

    Problème uniquement de freepbx? j'ai pas bien configuré quelque chose? en tout cas maintenant ça fonctionne.

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •