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:
- ID chiamante
- Blacklist (blocco dei chiamanti tramite ID chiamante)
- Chiamata in attesa
- Trasferimento di chiamata
- Chiamata in conferenza
- Centro congressi/Collegamento
- Non disturbare
- Inoltro chiamata
- Chiama Parcheggio
- Reporting dettagli chiamata
- Chiama per nome Directory
- Risposta vocale interattiva (operatore automatico)
- Instradamento delle chiamate con condizione temporale
- Chiamate in coda
- Richiamare
- Conserva musica/registrazioni (MP3)
- Integrazione delle applicazioni
- Reporting esteso delle chiamate
- DISA (accesso diretto al sistema interno)
- Dettatura
- Seguimi
- Cercapersone/interfono
- Gruppi di suoneria
- Gestore grafico delle chiamate
- 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