Trunk instability & impossible to auto reauthenticate

[FR] Hello tout le monde,
Le trunk entre mon Wazo (v20.13) et mon sip provider tombe régulièrement de manière aléatoire.

Ce qu’il se passe :
WARNING[88097] res_pjsip_outbound_registration.c: Temporal response 198.19.X.X:5060', retrying in '20'
Résultat le Trunk tombe et impossible de passer des appels.
Pour remédier à ce problème il faut que je fasse à la main un pjsip send registrations *all. C’est un problème qui est récurent sur les forum mais personne ne donne jamais réellement de réponse ex: https://community.freepbx.org/t/pjsip-trunk-lost-connectivity/36347.

Alors je voudrais savoir si l’un de vous avait déjà rencontré et réussis à faire qqch ?

Merci par avance à tous !
++

[EN] Hello everyone,
The trunk between my Wazo (v20.13) and my sip provider falls randomly.

What happens :
WARNING [88097] res_pjsip_outbound_registration.c: Temporal response 198.19.X.X:5060', retrying in '20'.
As a result, the trunk falls down and it is impossible to make calls.
To fix this problem I have to do a pjsip send registrations *all by hand. This is a recurring problem on the forums but nobody ever really gives an answer ex: https://community.freepbx.org/t/pjsip-trunk-lost-connectivity/36347.

So I would like to know if any of you have ever met and managed to do something?

Thanks in advance to all of you!
++

Translated with www.DeepL.com/Translator

Bonjour MaxC,

J’ai le même problème avec mon fournisseur SIP actuel.
La config: je suis en Wazo 20.12 (PJSIP) et mon opérateur sur un vieux Asterisk avec du chan_sip.

Même message d’erreur que toi mais j’ai poussé un peu plus loin et c’est au niveau du challenge md5 que cela déconne.
Je te laisse regarder la section 4.1 de cette excellente doc: https://sip.goffinet.org/sip/enregistrement-register/

Ci-dessous tu trouveras le debug mon register qui ne passe pas le md5.
La seule solution pour le moment, c’est de désactiver le trunk (au niveau de l’auth), d’attendre 1min pour de réactiver l’auth.
Ce problème s’est produit 3 fois en 6 mois.
Pour le moment, je supervise le register avec nagios-nrpe histoire d’avoir une alerte en case de problème:

#!/bin/sh
status=`asterisk -rx "pjsip show registrations" |grep reg_mon_login | awk -F ' ' '{print $3}'`
case $status in
        "Registered")
                echo "OK"
                ;;
        "Rejected")
                echo "CRITICAL"
                ;;
        *)
                echo "WARNING"
                ;;
esac

Je pense qu’il y a un soucis de compatibilité qui se produit dans de rares cas entre en vieux asterisk et un récent… mais je ne saurai t’en dire +…

[Jun 25 10:37:22] REGISTER sip:operateur:5060 SIP/2.0
[Jun 25 10:37:22] Via: SIP/2.0/UDP moi:5060;rport;branch=z9hG4bKPjd8b48977-ee21-459b-8866-a7c4d813f03a
[Jun 25 10:37:22] From: ;tag=5c74a563-61b7-49d9-8335-dc874dfb4136
[Jun 25 10:37:22] To:
[Jun 25 10:37:22] Call-ID: 2ddd06db-cb6e-4245-a57f-0be8a226393b
[Jun 25 10:37:22] CSeq: 47936 REGISTER
[Jun 25 10:37:22] Contact:
[Jun 25 10:37:22] Expires: 120
[Jun 25 10:37:22] Allow: OPTIONS, REGISTER, SUBSCRIBE, NOTIFY, PUBLISH, INVITE, ACK, BYE, CANCEL, UPDATE, PRACK, REFER, MESSAGE
[Jun 25 10:37:22] Max-Forwards: 70
[Jun 25 10:37:22] User-Agent: Wazo PBX
[Jun 25 10:37:22] Content-Length: 0
[Jun 25 10:37:22]
[Jun 25 10:37:22]
[Jun 25 10:37:22] <— Received SIP response (610 bytes) from UDP:operateur:5060 —>
[Jun 25 10:37:22] SIP/2.0 401 Unauthorized
[Jun 25 10:37:22] Via: SIP/2.0/UDP moi:5060;branch=z9hG4bKPjd8b48977-ee21-459b-8866-a7c4d813f03a;received=moi;rport=5060
[Jun 25 10:37:22] From: ;tag=5c74a563-61b7-49d9-8335-dc874dfb4136
[Jun 25 10:37:22] To: ;tag=as3c731b11
[Jun 25 10:37:22] Call-ID: 2ddd06db-cb6e-4245-a57f-0be8a226393b
[Jun 25 10:37:22] CSeq: 47936 REGISTER
[Jun 25 10:37:22] Server: OPERATEUR
[Jun 25 10:37:22] Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE
[Jun 25 10:37:22] Supported: replaces, timer
[Jun 25 10:37:22] WWW-Authenticate: Digest algorithm=MD5, realm=“SBC711-01”, nonce=“5c3c3a55”
[Jun 25 10:37:22] Content-Length: 0
[Jun 25 10:37:22]
[Jun 25 10:37:22]
[Jun 25 10:37:22] <— Transmitting SIP request (729 bytes) to UDP:operateur:5060 —>
[Jun 25 10:37:22] REGISTER sip:operateur:5060 SIP/2.0
[Jun 25 10:37:22] Via: SIP/2.0/UDP moi:5060;rport;branch=z9hG4bKPj3836531d-ca2f-4f66-a07d-d5c4f3370f69
[Jun 25 10:37:22] From: ;tag=5c74a563-61b7-49d9-8335-dc874dfb4136
[Jun 25 10:37:22] To:
[Jun 25 10:37:22] Call-ID: 2ddd06db-cb6e-4245-a57f-0be8a226393b
[Jun 25 10:37:22] CSeq: 47937 REGISTER
[Jun 25 10:37:22] Contact:
[Jun 25 10:37:22] Expires: 120
[Jun 25 10:37:22] Allow: OPTIONS, REGISTER, SUBSCRIBE, NOTIFY, PUBLISH, INVITE, ACK, BYE, CANCEL, UPDATE, PRACK, REFER, MESSAGE
[Jun 25 10:37:22] Max-Forwards: 70
[Jun 25 10:37:22] User-Agent: Wazo PBX
[Jun 25 10:37:22] Authorization: Digest username=“mon_login”, realm=“SBC711-01”, nonce=“5c3c3a55”, uri=“sip:operateur:5060”, response=“7468ea30442fc4dfa35c12859b8d0855”, algorithm=MD5
[Jun 25 10:37:22] Content-Length: 0
[Jun 25 10:37:22]
[Jun 25 10:37:22]
[Jun 25 10:37:22] <— Received SIP response (622 bytes) from UDP:operateur:5060 —>
[Jun 25 10:37:22] SIP/2.0 401 Unauthorized
[Jun 25 10:37:22] Via: SIP/2.0/UDP moi:5060;branch=z9hG4bKPj3836531d-ca2f-4f66-a07d-d5c4f3370f69;received=moi;rport=5060
[Jun 25 10:37:22] From: ;tag=5c74a563-61b7-49d9-8335-dc874dfb4136
[Jun 25 10:37:22] To: ;tag=as65e55231
[Jun 25 10:37:22] Call-ID: 2ddd06db-cb6e-4245-a57f-0be8a226393b
[Jun 25 10:37:22] CSeq: 47937 REGISTER
[Jun 25 10:37:22] Server: OPERATEUR SBC711 01
[Jun 25 10:37:22] Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE
[Jun 25 10:37:22] Supported: replaces, timer
[Jun 25 10:37:22] WWW-Authenticate: Digest algorithm=MD5, realm=“SBC711-01”, nonce=“40153c1f”, stale=true
[Jun 25 10:37:22] Content-Length: 0

Hello ! Merci de ta réponse ! J’ai également pu travailler sur la base de ce que tu as fais.

Je sais pas pour toi mais mon trunk n’est toujours pas stable j’ai donc créé un petit script pour le remonter automatiquement.

Bon le script n’est pas parfait c’est clair mais au moins ça remonte le trunk automatiquement.

Je le lance toutes les deux minutes par une crontab

#!/usr/bin/env bash

set -e;

checking=$(/usr/sbin/asterisk -rx "pjsip show registrations")

if [[ "$checking" =~ "Registered" ]]; then
  echo "$(date) - INFO : OPERATEUR@198.19.X.X Registration OK " >> /var/log/registration_script.log
  exit 0
else
  my_error="$(date) - WARN : Problem with registration : $checking"
  echo "$my_error" >> /var/log/registration_script.log
  EMAIL="wazo@mydomain.fr" mutt -s "WARN - PJSIP REGISTRTION" my.mail@mydomain.fr <<< "$my_error"

  register_result=$(/usr/sbin/asterisk -rx "pjsip send register *all")
  sleep 10s;
  checking_result=$(/usr/sbin/asterisk -rx "pjsip show registrations")

  if [[ "$checking_result" =~ "Registered" ]]; then
    echo "$(date) - WARN : OPERATEUR@198.19.X.X is not registered anymore .... Manual re-registration succedded " >> /var/log/registration_script.log
    exit 0
  else
    my_error="$(date) - FATAL : Manual Reregistration failed !!: $register_result / $checking_result"
    echo "$my_error" >> /var/log/registration_script.log
    EMAIL="wazo@mydomain.fr" mutt -s " !! FATAL !! PJSIP REGISTRTION" my.mail@mydomain.fr <<< "$my_error"
     exit 1
  fi
fi