Asterisco: troncales externos en estado Solicitud enviada

¿Una foto familiar?

[root@pbx scripts]# asterisk -x "sip show registry"
Host                                    dnsmgr Username       Refresh State                Reg.Time
sipnet.ru:5060                          Y      XXXXXXXXXXX         102 Request Sent           Fri, 20 Mar 2020 09:19:31
87.103.236.26:5060                      N      XXXXXX             105 Request Sent           Fri, 20 Mar 2020 09:20:55
sbc.megafon.ru:5060                     Y      XXXXXXXXXXX@       165 Request Sent           Fri, 20 Mar 2020 09:20:28
login.mtt.ru:5060                       Y      XXXXXXXXXXXXXX       105 Request Sent           Fri, 20 Mar 2020 09:19:50

Una vez ella también me atrapó y escribí un guión.

Traté de buscar recetas preparadas, la mayoría se redujo a esto: obtuve un ping de las direcciones, activé la depuración y vi exactamente lo que se decía en la primera oración de la cita "los paquetes se van, pero las respuestas no llegan". ¿Pero por qué? El punto número 1 se descartó elemental. Punto número 2 - también, porque una conexión de prueba desde la misma dirección IP pero funcionó un host interno diferente. El punto número 4 es absolutamente "zhost". Pero el número 3 ya está más cerca. Simplemente no bloquea, pero por alguna razón no permite que el host intercambie paquetes con Asterisk. Y esto sucede en el 99% de los casos después del punto 2, cuando se rompe la sesión PPPoE. La sesión se restaura y el acceso a Internet desde LAN también está disponible, pero las sesiones UDP están bloqueadas. Esto es lo que Mikrotik nos dice a través de lo que pasan estas sesiones:

, .

1) .
2)
3)
4) .
..








[admin@MikroTik] > /ip firewall connection print where dst-address~":5060" and srcnat
Flags: E - expected, S - seen-reply, A - assured, C - confirmed, D - dying, F - fasttrack, s - srcnat, d - dstnat
 #          PR.. SRC-ADDRESS           DST-ADDRESS           TCP-STATE   TIMEOUT     ORIG-RATE REPL-RATE ORIG-PACKETS REPL-PACKETS      ORIG-BYTES
 0  SAC  s  udp  10.X.X.X:5060     80.75.130.83:5060                 59m48s           0bps      0bps        2 172        2 191       1 358 335
 1  SAC  s  udp  10.X.X.X:5060     193.201.229.35:5060               59m47s           0bps      0bps        1 611        1 662         996 786
 2  SAC  s  udp  10.X.X.X:5060     212.53.40.40:5060                 59m44s           0bps      0bps        1 837        1 830       1 114 259
 3  SAC  s  udp  10.X.X.X:5060     87.103.236.26:5060                59m21s           0bps      0bps        2 501        2 509       1 614 239

Este es el estado de las sesiones en modo normal cuando todo funciona. En ausencia de registros, si la memoria me sirve correctamente, no hay una bandera S - vista-respuesta.

Intentamos reducir las sesiones atascadas con el comando:

[admin@MikroTik] > ip firewall connection remove [find where dst-address~":5060" and srcnat]

Y, he aquí, literalmente, en un segundo troncos se restauran, las llamadas continúan, ¡la vida florece con colores brillantes! ¡Entonces estamos escribiendo un guión!

Primero, necesitamos controlar a Mikrot según la información de Asterisk. Por lo tanto, el script se ejecutará en cron cada 5 minutos en el host con Asterisk, y administraremos Mikrot a través de ssh con un certificado. Aquí se pintó perfectamente todo: cómo crear la clave y vincularla a un nuevo usuario en la microtia.

Bueno, el guión en sí:

#!/bin/sh

if /usr/sbin/asterisk -x "sip show registry" | grep -q "Request Sent"; then
    echo "$(date) Resetting UDP connections on Mikrotik" >> /var/log/asterisk/mikrotik
    ssh -l admin-ssh -i /XXXX/.ssh/id_dsa 10.X.X.X 'ip firewall connection remove [find where dst-address~":5060" and srcnat]'
    sleep 2
    asterisk -x "sip reload"
fi

Por si acaso, 2 segundos después del reinicio de las sesiones colgadas, actualizamos el registro, ¡para que definitivamente funcione!

Desde el 4 de septiembre de 2019, el guión funcionó 273 veces, a juzgar por el registro. Puedes calcular cuánto me ahorró tiempo, y los gerentes y los nervios de sus clientes.

PD. Una situación similar ocurre en todos los enrutadores que encontré junto con Asterisk. Y solo Mikrot puede resolver el problema sin afectar otros servicios. El resto de los enrutadores deben estar estúpidamente sobrecargados.

All Articles