Enviado por admin el
Rocky Linux 9 se ha consolidado como una de las distribuciones enterprise más confiables tras la discontinuación de CentOS, y Asterisk continúa siendo el corazón de innumerables sistemas de telefonía IP alrededor del mundo. En esta guía actualizada para 2025, aprenderás a instalar Asterisk desde el código fuente y configurar PJSIP, el stack SIP moderno que ha reemplazado a chan_sip como la opción recomendada.
Rocky Linux 9 ofrece estabilidad enterprise con soporte extendido hasta 2032, lo que lo hace ideal para sistemas de producción. PJSIP, por su parte, proporciona mejor rendimiento, soporte IPv6 nativo, y una arquitectura más robusta que el antiguo chan_sip. Si estás comenzando un proyecto nuevo en 2025, esta combinación es la elección correcta.
Antes de comenzar, asegúrate de tener:
- Un servidor con Rocky Linux 9 (mínimo 2GB RAM, 2 CPU cores)
- Acceso root o sudo
- Conexión a internet estable
- Conocimientos básicos de Linux y línea de comandos
Primero, actualizamos el sistema y habilitamos el repositorio EPEL, que contiene dependencias necesarias:
sudo dnf update -y
sudo dnf install epel-release -y
sudo dnf config-manager --set-enabled crb
sudo sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
rebootAsterisk requiere numerosas librerías y herramientas de compilación. Instalamos todo lo necesario:
sudo dnf install -y gcc gcc-c++ make wget tar bzip2 \
libuuid-devel jansson-devel libxml2-devel sqlite-devel \
libedit-devel openssl-devel ncurses-devel newt-devel \
kernel-devel kernel-headers elfutils-libelf-devel \
libtiff-devel gtk2-devel libsrtp-devel speex-devel \
speexdsp-devel gsm-devel libogg-devel libvorbis-devel \
opus-devel corosync-devel neon-devel \
libical-devel openldap-devel freeradius-devel \
freetds-devel unixODBC-devel mariadb-devel postgresql-devel \
lua-devel patch libtool libtool-ltdl-devel libsamplerate-devel
En 2025, la versión LTS recomendada es Asterisk 20. Descargamos el código fuente desde el sitio oficial:
cd /usr/src
sudo wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20-current.tar.gz
sudo tar -xvzf asterisk-20-current.tar.gz
cd asterisk-20.*
Nota: Verifica siempre la versión más reciente en el sitio oficial de Asterisk.
Ejecutamos el script de instalación de dependencias de Asterisk:
sudo contrib/scripts/install_prereq install
Este script detecta automáticamente Rocky Linux y descarga dependencias adicionales.
Ahora configuramos la compilación:
sudo ./configure --with-jansson-bundledUsamos las versiones bundled de jansson y pjproject para garantizar compatibilidad total. Esto es especialmente importante para PJSIP.
Seleccionamos los módulos a compilar:
sudo make menuselect
En el menú interactivo:
- Revisa que en Codec Translators todo los modulos presentes debajo de la etiqueta External estén selecionados
- Asegúrate de que
res_pjsipy todos los módulosres_pjsip_*estén seleccionados (en "Resource Modules") - Verifica que
chan_pjsipesté habilitado (en "Channel Drivers") - Opcionalmente, desmarca
chan_sipsi no planeas usarlo (en "Channel Drivers") - En "Core Sound Packages" y "Music On Hold File Packages", selecciona el idioma español y el formato de audio que prefieras (recomendado: WAV o ULAW)
Guarda y sal del menú (botón "Save & Exit" o tecla 'x').
Compilamos e instalamos:
sudo make -j$(nproc) sudo make install sudo make samples
sudo dnf -y install chkconfig initscriptssudo make config sudo ldconfig
El proceso de compilación puede tomar entre 10 y 30 minutos dependiendo de tu hardware.
Por seguridad, ejecutamos Asterisk con un usuario sin privilegios:
sudo groupadd asterisk
sudo useradd -r -d /var/lib/asterisk -g asterisk asterisk
sudo usermod -aG audio,dialout asterisk
sudo chown -R asterisk:asterisk /etc/asterisk
sudo chown -R asterisk:asterisk /var/{lib,log,spool}/asterisk
sudo chown -R asterisk:asterisk /usr/lib/asterisk
Configuramos Asterisk para usar este usuario editando /etc/sysconfig/asterisk:
sudo nano /etc/sysconfig/asterisk
Descomenta y modifica estas líneas:
AST_USER="asterisk"
AST_GROUP="asterisk"
También edita /etc/asterisk/asterisk.conf:
sudo nano /etc/asterisk/asterisk.conf
En la sección [options], agrega o modifica:
runuser = asterisk
rungroup = asterisk
Rocky Linux 9 usa firewalld por defecto. Abrimos los puertos necesarios para SIP y RTP:
sudo firewall-cmd --permanent --add-port=5060/udp
sudo firewall-cmd --permanent --add-port=5060/tcp
sudo firewall-cmd --permanent --add-port=10000-20000/udp
sudo firewall-cmd --reload
El rango 10000-20000 es para tráfico RTP. Puedes ajustarlo según tus necesidades en /etc/asterisk/rtp.conf.
PJSIP utiliza un archivo de configuración centralizado: /etc/asterisk/pjsip.conf. Vamos a crear una configuración básica funcional.
Primero, respaldamos el archivo de ejemplo:
sudo mv /etc/asterisk/pjsip.conf /etc/asterisk/pjsip.conf.original
Creamos una nueva configuración:
sudo nano /etc/asterisk/pjsip.conf
Contenido básico:
[global]
type=global
endpoint_identifier_order=ip,username,anonymous
[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0:5060
external_media_address=TU_IP_PUBLICA
external_signaling_address=TU_IP_PUBLICA
local_net=192.168.1.0/24
[transport-tcp]
type=transport
protocol=tcp
bind=0.0.0.0:5060
[basic-endpoint](!)
type=endpoint
context=from-internal
disallow=all
allow=ulaw
allow=alaw
allow=opus
direct_media=no
rtp_symmetric=yes
force_rport=yes
rewrite_contact=yes
[basic-auth](!)
type=auth
auth_type=userpass
[basic-aor](!)
type=aor
max_contacts=1
remove_existing=yes
; Extensión 1000
[1000](basic-endpoint)
auth=1000
aors=1000
[1000](basic-auth)
password=password1000
username=1000
[1000](basic-aor)
contact=sip:1000@localhost
; Extensión 1001
[1001](basic-endpoint)
auth=1001
aors=1001
[1001](basic-auth)
password=password1001
username=1001
[1001](basic-aor)
contact=sip:1001@localhost
Importante: Reemplaza TU_IP_PUBLICA con tu IP pública real si el servidor está detrás de NAT, y 192.168.1.0/24 con tu red local.
Entendiendo la configuración PJSIP
PJSIP utiliza un sistema de objetos modular:
- transport: Define cómo Asterisk escucha conexiones SIP (UDP, TCP, TLS)
- endpoint: Representa un dispositivo o cliente SIP
- auth: Maneja la autenticación
- aor (Address of Record): Gestiona las ubicaciones de contacto
Las plantillas (con !) permiten reutilizar configuraciones comunes.
Editamos /etc/asterisk/extensions.conf:
sudo nano /etc/asterisk/extensions.conf
Al final del archivo agregamos un contexto básico para llamadas internas:
[from-internal]
exten => 1000,1,NoOp(Llamada a extensión 1000)
same => n,Dial(PJSIP/1000,20)
same => n,Hangup()
exten => 1001,1,NoOp(Llamada a extensión 1001)
same => n,Dial(PJSIP/1001,20)
same => n,Hangup()
exten => 100,1,Answer()
same => n,Playback(demo-congrats)
same => n,Hangup()
La extensión 100 es una prueba simple para verificar que el sistema funciona.
Editamos /etc/asterisk/codecs.conf para optimizar la calidad de audio:
sudo nano /etc/asterisk/codecs.conf
Configuración recomendada de OPUS (añadir al final del archivo):
[opus]
type=opus
max_playback_rate=48000
packet_loss=10
complexity=10
fec=true
Opus es el codec más moderno y ofrece la mejor calidad/ancho de banda en 2025.
Editamos /etc/asterisk/rtp.conf:
sudo nano /etc/asterisk/rtp.conf
Ajustamos el rango de puertos RTP:
[general]
rtpstart=10000
rtpend=20000
strictrtp=yes
icesupport=yes
Iniciamos el servicio:
sudo systemctl start asterisk
sudo systemctl enable asterisk
Verificamos el estado:
sudo systemctl status asterisk
Conectamos a la consola de Asterisk:
sudo asterisk -rvvv
Verificamos que PJSIP esté cargado:
pjsip show endpoints
Deberías ver las extensiones 1000 y 1001. Para más detalles:
pjsip show endpoint 1000
pjsip list transports
Descarga un softphone compatible con PJSIP como:
- Zoiper (Windows, macOS, Linux, móvil)
- Linphone (multiplataforma)
- MicroSIP (Windows)
Configura una cuenta con estos parámetros:
- Usuario: 1000
- Contraseña: password1000
- Dominio/Servidor: IP_DE_TU_SERVIDOR
- Puerto: 5060
- Transporte: UDP
Registra el softphone y llama a la extensión 100 para probar el audio.
Los endpoints no se registran
Verifica los logs en tiempo real:
sudo asterisk -rvvv
pjsip set logger on
Luego intenta registrar nuevamente y observa los mensajes.
No hay audio en las llamadas
Problema común de NAT. Verifica:
- Que
external_media_addressyexternal_signaling_addressestén configurados correctamente - Que los puertos RTP estén abiertos en el firewall
- Que
direct_media=noesté configurado en los endpoints
Asterisk no inicia
Revisa los logs:
sudo journalctl -u asterisk -n 50
sudo tail -f /var/log/asterisk/messages
Habilitar logs estructurados
Edita /etc/asterisk/logger.conf:
[logfiles]
console => notice,warning,error
messages => notice,warning,error
full => notice,warning,error,debug,verbose
Configurar fail2ban
Protege tu servidor contra ataques de fuerza bruta:
sudo dnf install fail2ban -y
Crea /etc/fail2ban/jail.local:
[asterisk]
enabled = true
port = 5060,5061
protocol = udp
filter = asterisk
logpath = /var/log/asterisk/messages
maxretry = 5
bantime = 3600
Reinicia fail2ban:
sudo systemctl restart fail2ban
sudo systemctl enable fail2ban
Monitoreo con pjsip
Comandos útiles para monitorear:
# Ver estadísticas de endpoints
asterisk -rx "pjsip show endpoints"
# Ver llamadas activas
asterisk -rx "pjsip show channels"
# Ver registros
asterisk -rx "pjsip show registrations"
# Ver subscripciones
asterisk -rx "pjsip show subscriptions"
Ahora tienes un sistema Asterisk funcional con PJSIP en Rocky Linux 9. Algunos temas avanzados para explorar:
- Configurar troncales SIP con proveedores VoIP
- Implementar IVR (Interactive Voice Response)
- Integrar WebRTC para llamadas desde navegador
- Configurar colas de llamadas (queues)
- Implementar grabación de llamadas
- Configurar voicemail con PJSIP
- Integración con bases de datos para configuración dinámica
La combinación de Rocky Linux 9 y Asterisk con PJSIP representa el estándar moderno para sistemas de telefonía IP empresarial en 2025. Esta configuración te proporciona una base sólida y escalable para construir soluciones de comunicación robustas.
PJSIP ofrece ventajas significativas sobre chan_sip: mejor rendimiento, arquitectura más limpia, soporte IPv6 nativo, y manejo superior de NAT. Si estás migrando desde chan_sip, vale la pena el esfuerzo de aprender esta nueva configuración.
Recuerda mantener tu sistema actualizado, implementar medidas de seguridad apropiadas, y monitorear regularmente el rendimiento de tu PBX. ¡Buena suerte con tu implementación de Asterisk!
Creado por CLAUDE, certificado por Andrea
Comentarios recientes