Ricerca nel sito web

Come installare Asterisk PBX 18 LTS su CentOS 7


Ciao ragazzi, in questa guida eseguiremo l'installazione di Asterisk 18 LTS. Questo sarà un tutorial completo e facile da seguire. Per la versione recente di Asterisk, consulta Come installare il PBX Asterisk 16 su CentOS 7. Quindi iniziamo definendo cos'è un PBX e Asterisk?

Cos'è un PBX?

Asterisk, innanzitutto, è un Private Branch Exchange. Un PBX è un'apparecchiatura che gestisce la commutazione telefonica di proprietà di un'azienda privata, piuttosto che di una compagnia telefonica. Un PBX può essere pensato come un centralino telefonico privato, collegato a uno o più telefoni da un lato e solitamente collegato a una o più linee telefoniche dall'altro.

Cos'è l'asterisco?

Asterisk è un PBX completo. Implementa tutte le principali funzionalità della maggior parte dei PBX disponibili in commercio. Inoltre implementa, gratuitamente, funzionalità che spesso costano molto in un'installazione commerciale: chiamate in conferenza, accesso diretto al sistema interno, parcheggio delle chiamate e code di chiamate, solo per citarne alcune.

Le funzionalità di base fornite da Asterisk sono:

  1. ID chiamante
  2. Blacklist (blocco dei chiamanti tramite ID chiamante)
  3. Chiamata in attesa
  4. Trasferimento di chiamata
  5. Chiamata in conferenza
  6. Centro congressi/Collegamento
  7. Non disturbare
  8. Inoltro chiamata
  9. Chiama Parcheggio
  10. Reporting dettagli chiamata
  11. Chiama per nome Directory
  12. Risposta vocale interattiva (operatore automatico)
  13. Instradamento delle chiamate con condizione temporale
  14. Chiamate in coda
  15. Richiamare
  16. Conserva musica/registrazioni (MP3)
  17. Integrazione delle applicazioni
  18. Reporting esteso delle chiamate
  19. DISA (accesso diretto al sistema interno)
  20. Dettatura
  21. Seguimi
  22. Cercapersone/interfono
  23. Gruppi di suoneria
  24. Gestore grafico delle chiamate
  25. Controlli giorno/notte

Tra gli altri. Quindi iniziamo.

Passaggio 1: imposta il nome host del server

È possibile impostare il nome host e il fuso orario prima di eseguire qualsiasi installazione. Utilizza i comandi seguenti.

sudo timedatectl  list-timezones
sudo timedatectl  set-timezone Africa/Nairobi

Per impostare il tipo di nome host:

sudo hostnamectl set-hostname pbx-01.example.com

Nel caso in cui il tuo server CentOS abbia mappe dei tasti errate. Puoi sistemarli.

localectl 
   System Locale: LANG=en_US.UTF-8
       VC Keymap: us
      X11 Layout: us
$ localectl list-keymaps

Per impostare la mappa dei tasti per noi:

sudo localectl set-keymap us

Puoi impostare la lingua del sistema sull'inglese digitando i seguenti comandi sul tuo terminale come root.

sudo localectl set-locale LANG=en_US.UTF-8

Passaggio 2: aggiorna il sistema e installa le dipendenze

sudo yum -y update
sudo yum -y install "@Development Tools"

Riavviare dopo l'aggiornamento del sistema

sudo reboot

Installa altre dipendenze richieste per creare ed eseguire Asterisk 18 LTS su CentOS 7:

sudo yum -y install lynx mariadb-server mariadb php php-mysql \
  php-mbstring tftp-server httpd ncurses-devel sendmail sendmail-cf \
  sox newt-devel libxml2-devel libtiff-devel audiofile-devel gtk2-devel \
  subversion kernel-devel git php-process crontabs cronie cronie-anacron \
  wget vim php-xml uuid-devel sqlite-devel net-tools gnutls-devel php-pear \
  autoconf bzip2 libedit-devel

Installa altre dipendenze mancanti, non nel passaggio precedente.

sudo yum -y install gcc gcc-c++ php-xml php php-mysql php-pear php-mbstring mariadb-devel mariadb-server mariadb sqlite-devel lynx bison psmisc tftp-server httpd make ncurses-devel libtermcap-devel sendmail sendmail-cf caching-nameserver sox newt-devel libxml2-devel libtiff-devel audiofile-devel gtk2-devel uuid-devel libtool libuuid-devel subversion kernel-devel kernel-devel-$(uname -r) git subversion kernel-devel php-process crontabs cronie cronie-anacron wget vim

Imposta e configura il database mariadb, impostando anche la password.

systemctl start mariadb
systemctl enable mariadb

Ora imposta la password eseguendo il comando seguente.

sudo mysql_secure_installation

Basta premere Invio se non hai già impostato una password per mysql. Accettare di rimuovere il database di test e di non consentire l'accesso remoto.

Passaggio 3: installare la libreria Jasson C

Installazione di Jansson che è una libreria C per codificare, decodificare e manipolare dati JSON. Scarichiamo, decomprimiamo e compiliamo utilizzando il comando seguente.

sudo su -
cd /usr/src
mkdir asterisk-18 && cd asterisk-18
git clone https://github.com/akheron/jansson.git
cd jansson
autoreconf  -i
./configure --prefix=/usr/
make && make install

Installa i requisiti Legacy Pear

pear install Console_Getopt

Passaggio 4: installa Asterisk 18 LTS su CentOS 7

Passare alla directory /usr/src/asterisk-18 e installare il download di Asterisk 18 LTS su CentOS 7

cd  /usr/src/asterisk-18
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-18-current.tar.gz
git clone https://github.com/pjsip/pjproject.git

Compila e installa DAHDI se ti connetti a PSTN. Questo è FACOLTATIVO, installalo se ti connetterai a PSTN.

cd  /usr/src/asterisk-18
tar xvfz dahdi-linux-complete-current.tar.gz
tar xvfz libpri-current.tar.gz
rm -f dahdi-linux-complete-current.tar.gz libpri-current.tar.gz
cd dahdi-linux-complete-*/
make all
make install
make config
cd ..
cd libpri-*/
make
make install

Compila e installa pjproject

cd  /usr/src/asterisk-18
cd pjproject
CFLAGS='-DPJ_HAS_IPV6=1' ./configure --prefix=/usr \
  --enable-shared --disable-sound \
  --disable-resample --disable-video \
  --disable-opencore-amr --libdir=/usr/lib64
make dep
make all
make install

Compila e installa Asterisk

cd /usr/src/asterisk-18
tar xvfz asterisk-18-current.tar.gz
cd asterisk-*
./configure --libdir=/usr/lib64

Opzioni del menu di configurazione eseguendo il comando seguente

make menuselect

Nei componenti aggiuntivi seleziona chan_ooh323 e format_mp3  come mostrato di seguito

Su Core Sound Packages, seleziona i formati dei pacchetti audio come di seguito


Su Musica di attesa, seleziona l'opzione i seguenti moduli come mostrato nell'immagine qui sotto

Su Pacchetti audio extra selezionare come mostrato di seguito:

Ora esegui il comando seguente per scaricare la libreria del decoder mp3 nell'albero dei sorgenti.

cd /usr/src/asterisk-18/asterisk-*
contrib/scripts/get_mp3_source.sh

Eseguire l'installazione dei moduli selezionati

cd /usr/src/asterisk-18/asterisk-*/
make
make install
make samples
make config

Passaggio 5: configurare Asterisk 18 LTS su CentOS 7

Crea utenti e gruppi separati per eseguire i servizi asterisco

useradd -m asterisk
chown asterisk.asterisk /var/run/asterisk
chown -R asterisk.asterisk /etc/asterisk
chown -R asterisk.asterisk /var/{lib,log,spool}/asterisk 
chown -R asterisk.asterisk /usr/lib64/asterisk

Fai in modo che systemctl inizi l'asterisco copiando lo script init nella directory init.d.

cd /usr/src/asterisk-18/asterisk-*
cp contrib/init.d/rc.redhat.asterisk  /etc/init.d/asterisk
chmod 755 /etc/init.d/asterisk

Individua l'asterisco per

$ which asterisk

Quindi aprire il file /etc/init.d/asterisk tramite

sudo vim /etc/init.d/asterisk

Sostituisci AST_SBIN=" con la posizione del binario asterisco, nel mio caso è /sbin/. Vedi l'immagine sotto.

Disabilita SELinux

sed -i 's/(^SELINUX=).*/SELINUX=disabled/' /etc/selinux/config
sestatus

Imposta il database degli asterisco

[root@asterisk-cloud ~]# mysql -u root -p
create user 'asterisk'@'localhost' identified by 'password';
create database cdrdb;
create database asterisk;
GRANT ALL PRIVILEGES ON asterisk.* TO asterisk@localhost IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON cdrdb.* TO asterisk@localhost IDENTIFIED BY 'password';
flush privileges; 
exit

Rendi accessibili tutte le porte PBX con asterisco aggiungendo le seguenti regole

firewall-cmd --zone=public --add-port=5060/udp --permanent
firewall-cmd --zone=public --add-port=5060/tcp --permanent
firewall-cmd --zone=public --add-port=5061/udp --permanent
firewall-cmd --zone=public --add-port=5061/tcp --permanent
firewall-cmd --zone=public --add-port=4569/udp --permanent
firewall-cmd --zone=public --add-port=5038/tcp --permanent 
firewall-cmd --zone=public --add-port=10000-20000/udp --permanent

Impegna le modifiche

firewall-cmd --reload

Conferma che le regole vengono aggiunte.

[root@asterisk-cloud ~]# firewall-cmd --zone=public --list-all 
public (default, active)
  interfaces: eth0
  sources: 
  services: dhcpv6-client ssh
  ports: 5061/tcp 4569/udp 5060/tcp 10000-20000/udp 5061/udp 5060/udp 5038/tcp
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules:

Riavviare il server asterisco

systemctl restart asterisk

Controlla se è in esecuzione

sudo systemctl status asterisk

Ulteriori letture: Come proteggere Asterisk e FreePBX dalle frodi VoIP e dagli attacchi di forza bruta

Articoli correlati: