Installation d’Asterisk sur Fedora

Date: 22/03/2007 | Catégories: Open-source,Reseau | Tags: ,,,,,

Asterisk est un serveur de téléphonie open-source permettant de disposer sur un simple PC de fonctions jusque là réservées aux PABX professionnel. Nous allons dans ce post installer un serveur Asterisk sur PC fonctionnant sous Fedora (Core 6). Nous nous limiterons à la configuration d'un serveur VoIP SIP sans passerelle vers le monde téléphonique.

Attention: si vous voulez utiliser une carte téléphonique de tpy eDigium dans votre serveur, il faudra l'installer AVANT d'installer Asterisk.

Installation d'Asterisk

Nous allons compiler la dernière version d'Asterisk (1.4.2) au moment de l'écriture de ce post à partir des sources (téléchargeable ici).Une fois le fichier téléchargé, il faut commencer par le décompresser:

# tar zxvf asterisk-1.4.2.tar.gz

On lance la compilation avec les commandes suivantes:

# cd asterisk-1.4.2
# ./configure
# make
# make install
# make samples
-> Seulement nécessaire pour un installation initiale. Écrase les fichiers de configuration actuels.
# make progdocs

PS: si vous souhaitez mettre à jour unes version existante d'Asterisk, il faut utiliser les commandes suivantes:

# cd asterisk-1.4.2
# ./configure
# make update
# make clean# make upgrade

Une fois l'installation terminée, vous pouvez tester Asterisk:

# /usr/sbin/asterisk -VAsterisk 1.4.2

L'installation est réussie, on peut passer à la phase de configuration.

Configuration d'Asterisk

Avant de nous attaquer aux fichiers de configuration. Voici la liste des répertoires utilisées par Asterisk:

  • /etc/asterisk contient les fichiers de configuration.
  • /usr/lib/asterisk/modules contient les modules utilisés par Asterisk (codec, applications tierces...).
  • /var/lib/asterisk/agi-bin contient vos scripts.
  • /var/lib/asterisk/firmware contient les drivers pour les cartes compatible Asterisk (par exemple Digium).
  • /var/lib/asterisk/images contient des images pour les applications les supportant.
  • /var/lib/asterisk/keys contient les clès publiques et privées (RSA)
  • /var/lib/asterisk/mohmp3 contient les musiques d'attente au format MP3 (CBR uniquement et pas de tag ID3).
  • /var/lib/asterisk/sounds contient les annonces vocales
  • /var/log/asterisk contient les logs du processus Asterisk

Comme nous allons nous limiter à une configuration purement SIP du serveur Asterisk (sans interface vers le monde téléphonique), la configuration est relativement simple.Il faut commencer par éditer le fichier /etc/asterisk/sip.conf:

[general]
context=default
srvlookup=no
[nicolargo]
type=friend
username=nicolargo
secret=password
quality=yes
nat=no
canreinvite=no
auth=md5
host=dynamic
dtfmode=rfc2833
allow=ulaw
context=internal

Nous venons de créer un utilisateur nicolargo sur le serveur.

Lancement d'Asterisk

Pour lancer la console d'administration Asterisk, il suffit de taper la ligne suivante:

# /usr/sbin/asterisk -c
*CLI>

Nous pouvons alors vérifier que l'utilisateur SIP a bien été créé:

*CLI> sip show users
Username Secret Account
code Def.
Context ACL NAT
nicolargo password default No RFC3581

Puis voir les détails de la configuration de l'utisateur nicolargo:

*CLI> sip show user
nicolargo* Name : nicolargoSecret : <Set>MD5Secret : <Not set>Context : defaultLanguage :AMA flags : UnknownTransfer mode: openMaxCallBR : 384 kbpsCallingPres : Presentation Allowed, Not ScreenedCall limit : 0Callgroup :Pickupgroup :Callerid : "nicolargo" <1208>ACL : NoCodec Order : (gsm:20,ulaw:20,alaw:20)Auto-Framing: No

Pour arrêter le serveur, il faut saisir la commande suivante:

*CLI> stop gracefully

Test du serveur à partir d'un client SIP

Pour mes tests j'ai utilisé X-Lite (disponible sous Linux, Mac et Windows), qui a le bon goût d'être gratuit et parfaitement compatible avec la norme SIP.La configuration doit être la suivante:

L'enregistrement sur le serveur Asterisk (192.168.29.246 dans mon cas) se passe alors sans problème:

Si vous avez un problème pour vous connecté à votre serveur Asterisk, pensez à regarder du coté des règles de Firewall (iptables). Il faut ajouter la règle suivante:

# iptables -A RH-Firewall-1-INPUT -p udp -m udp --dport 5061 -j ACCEPT

A partir de maintenant (et en définissant d'autres utilisateurs), vous devez être capable d'effectuer des appels SIP à l'intérieur de votre réseau.Voila donc une première étape de faite. Dans un prochain post nous verrons comment interfacer notre nouveau serveur vers un serveur père (par exemple chez votre fournisseur d'accès Internet)...
Pour ceux que cela intéresse, cet article raconte le retour d'expérience de l'installation d'une serveur Asterisk en entreprise.

  • Hazem

    salut !!! x trixbox, SIP Express Router, FreeSWITCH ne sont pas des serveurs IPBX comme asterisk allez voir http://www.freeswitch.org/ !!
    moi je cherche a faire la comparaison entre Asterisk et d’autres IPBX kil soient propritaires ou Opensources !!! merci de bien vouloir m’orienter avec tout type de liens et de documentations!!!

  • nadir

    slt a tous,
    j’utilise asterisk pour la 1ere fois et je veux savvoir les étapes de configuration pour réaliser une communication entre 2 Pc avec X-lite,merci
    nadjuv@gmail.com

  • Hazem

    bonjour a tous ,
    je viens de terminer l’installation d’asterisk et je viens de configurer les fichiers sip.conf et extensions.conf mais apres configuration de mon x-lite , le softphone ,n’arrive pas a s’authentifier et m’affiche le message suivant :
    awaiting proxy login information
    logging in ….
    login timed out! Contact Network

    if u have any idea please help me
    thx

  • zakiinfo

    je suis installer asterisk sous fedora et mon probleme comment configurer les fichiers sip.conf et extentions.conf
    pour connecter avec xlite sous windows

  • Alain ALEKO

    bonjour,
    merci bcp à toi qui a penser à mettre en ligne ce blog pour partager ton savoir. j’ai TRixbox sur mon PC et je voudrai savoir comment router mes appels sortant via mon IPBX. dans mons pays (GABON)
    nous avons 3 opérateurs GSM (CELTEL, LIBERTIS, MOOV) et un opérateur historique (GABON-TELECOM). j’ai une connexion ADSL de bon débit et un compte SIP chez ACF’2i.

    mon compte sip ACF’2i ne doit permettre de sortir que pour les appels internationaux et vers les GSM CELTEL et PSTN.

    merci

  • diallo

    slt
    les mecs
    j’ai installé asterisk sous fc 8 mais j’arrive pas a me connecter a mes x lite sous windows .
    pouvez vous bien me passer un coup main c un projet de fin d’etude
    contacter moi sur diallogenie@gmail.com
    merci de votre comprehension

  • Myriam

    bonjour à tous et merci à toi Nicolargo de nous éclairer les points d’ombre que nous rencontrons.
    voici mon problème.Je suis entrain d’installer astérisk sur fédora tout en suivant vos recommandations.mais arrivé au niveau de la commande #./configure ça me met :
    configure: error: C++ preprocessor « lib/cpp » fails sanity check
    je dois je faire?Merci de m’aider.

  • El Adadi Youssef

    tapez si commande et sa va marcher
    yum update
    yum install make
    yum install kernel-package
    yum install bin86
    yum install libncurses5-dev

    yum install bison
    yum install openssl
    yum install libssl0.9.7
    yum install libssl-dev
    yum install libreadline5
    yum install libreadline5-dev
    yum install libeditline0
    yum install libeditline-dev
    yum install libedit-dev
    yum install libedit2
    yum install libncurses5
    yum install libncurses5-dev
    yum install zlib1g-dev

    tenez moi au courant
    bon courage

  • Myriam

    merci pour les el Adadi,je les essais en même temps.A bientôt

  • Myriam

    bjr à tous,
    el Adadi,j’ai utilisé la commande yum update mais finalement voici le résultat que j’ai:
    ERROR:dbus.connection:Unable to set arguments () according to signature u’s’: : More items found in D-Bus signature than in Python arguments
    Traceback (most recent call last):
    File « /usr/bin/yum », line 29, in
    yummain.user_main(sys.argv[1:], exit_code=True)
    File « /usr/share/yum-cli/yummain.py », line 241, in user_main
    errcode = hotshot(main, args)
    File « /usr/share/yum-cli/yummain.py », line 193, in main
    # Run the transaction
    File « /usr/share/yum-cli/cli.py », line 432, in doTransaction
    errstring += ‘ %s\n’ % to_unicode(descr)
    File « /usr/lib/python2.5/site-packages/yum/__init__.py », line 790, in runTransaction
    if os.path.exists(fn):
    File « /usr/lib/python2.5/site-packages/yum/plugins.py », line 175, in run
    func(conduitcls(self, self.base, conf, **kwargs))
    File « /usr/lib/yum-plugins/refresh-packagekit.py », line 37, in posttrans_hook
    packagekit_iface.StateHasChanged(‘posttrans’)
    File « /usr/lib/python2.5/site-packages/dbus/proxies.py », line 68, in __call__
    return self._proxy_method(*args, **keywords)
    File « /usr/lib/python2.5/site-packages/dbus/proxies.py », line 140, in __call__
    **keywords)
    File « /usr/lib/python2.5/site-packages/dbus/connection.py », line 597, in call_ blocking
    ‘path %s’ % LOCAL_PATH)
    TypeError: More items found in D-Bus signature than in Python arguments.
    que faire?merci.

  • makhlouf

    bonjour
    on fait comment quand il s’agit de h323

  • ABESS

    bsr j’ai un pb
    quand je fais
    yum update
    kubuntu(la console) m’envoie
    Setting up Update Process
    No Packages marked for Update
    et quand je fais
    make

    elle m’envoie

    if cmp -s .cleancount .lastclean ; then echo ; else \
    make clean; cp -f .cleancount .lastclean;\
    fi

    build_tools/make_version_h > include/asterisk/version.h.tmp
    if cmp -s include/asterisk/version.h.tmp include/asterisk/version.h ; then echo; else \
    mv include/asterisk/version.h.tmp include/asterisk/version.h ; \
    fi
    rm -f include/asterisk/version.h.tmp
    build_tools/mkdep -pipe -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -g3 -Iinclude -I../include -D_REENTRANT -D_GNU_SOURCE -O6 -march=i686 -fomit-frame-pointer acl.c aescrypt.c aeskey.c aestab.c alaw.c app.c asterisk.c ast_expr2.c ast_expr2f.c astmm.c autoservice.c buildinfo.c callerid.c cdr.c channel.c chanvars.c cli.c config.c cryptostub.c db.c devicestate.c dlfcn.c dns.c dnsmgr.c dsp.c enum.c file.c frame.c fskmodem.c image.c indications.c io.c jitterbuf.c loader.c logger.c manager.c md5.c muted.c netsock.c pbx.c plc.c poll.c privacy.c rtp.c say.c sched.c slinfactory.c srv.c strcompat.c tdd.c term.c translate.c ulaw.c utils.c
    build_tools/make_defaults_h > defaults.h.tmp
    if cmp -s defaults.h.tmp defaults.h ; then echo ; else \
    mv defaults.h.tmp defaults.h ; \
    fi
    rm -f defaults.h.tmp
    for x in res channels pbx apps codecs formats agi cdr funcs utils stdtime; do make -C $x depend || exit 1 ; done
    make[1]: entrant dans le répertoire « /asterisk-1.2.0/res »
    ../build_tools/mkdep -pipe -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -g3 -Iinclude -I../include -D_REENTRANT -D_GNU_SOURCE -O6 -march=i686 -fomit-frame-pointer -DOPENSSL_NO_KRB5 -fPIC `ls *.c`
    make[1]: quittant le répertoire « /asterisk-1.2.0/res »
    make[1]: entrant dans le répertoire « /asterisk-1.2.0/channels »
    ../build_tools/mkdep -pipe -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -g3 -Iinclude -I../include -D_REENTRANT -D_GNU_SOURCE -O6 -march=i686 -fomit-frame-pointer -Wno-missing-prototypes -Wno-missing-declarations -DCRYPTO -fPIC `ls *.c`
    make[1]: quittant le répertoire « /asterisk-1.2.0/channels »
    make[1]: entrant dans le répertoire « /asterisk-1.2.0/pbx »
    ../build_tools/mkdep -pipe -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -g3 -Iinclude -I../include -D_REENTRANT -D_GNU_SOURCE -O6 -march=i686 -fomit-frame-pointer -fPIC `ls *.c`
    make[1]: quittant le répertoire « /asterisk-1.2.0/pbx »
    /bin/sh: curl-config: not found
    /bin/sh: [[: not found
    make[1]: entrant dans le répertoire « /asterisk-1.2.0/apps »
    ../build_tools/mkdep -pipe -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -g3 -Iinclude -I../include -D_REENTRANT -D_GNU_SOURCE -O6 -march=i686 -fomit-frame-pointer -fPIC `ls *.c`
    make[1]: quittant le répertoire « /asterisk-1.2.0/apps »
    make[1]: entrant dans le répertoire « /asterisk-1.2.0/codecs »
    ../build_tools/mkdep -pipe -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -g3 -Iinclude -I../include -D_REENTRANT -D_GNU_SOURCE -O6 -march=i686 -fomit-frame-pointer -fPIC `ls *.c`
    make[1]: quittant le répertoire « /asterisk-1.2.0/codecs »
    make[1]: entrant dans le répertoire « /asterisk-1.2.0/formats »
    ../build_tools/mkdep -pipe -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -g3 -Iinclude -I../include -D_REENTRANT -D_GNU_SOURCE -O6 -march=i686 -fomit-frame-pointer -fPIC `ls *.c`
    make[1]: quittant le répertoire « /asterisk-1.2.0/formats »
    make[1]: entrant dans le répertoire « /asterisk-1.2.0/agi »
    ../build_tools/mkdep -pipe -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -g3 -Iinclude -I../include -D_REENTRANT -D_GNU_SOURCE -O6 -march=i686 -fomit-frame-pointer `ls *.c`
    make[1]: quittant le répertoire « /asterisk-1.2.0/agi »
    make[1]: entrant dans le répertoire « /asterisk-1.2.0/cdr »
    ../build_tools/mkdep -pipe -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -g3 -Iinclude -I../include -D_REENTRANT -D_GNU_SOURCE -O6 -march=i686 -fomit-frame-pointer -fPIC `ls *.c`
    make[1]: quittant le répertoire « /asterisk-1.2.0/cdr »
    make[1]: entrant dans le répertoire « /asterisk-1.2.0/funcs »
    ../build_tools/mkdep -pipe -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -g3 -Iinclude -I../include -D_REENTRANT -D_GNU_SOURCE -O6 -march=i686 -fomit-frame-pointer -fPIC `ls *.c`
    make[1]: quittant le répertoire « /asterisk-1.2.0/funcs »
    make[1]: entrant dans le répertoire « /asterisk-1.2.0/utils »
    ../build_tools/mkdep -pipe -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -g3 -Iinclude -I../include -D_REENTRANT -D_GNU_SOURCE -O6 -march=i686 -fomit-frame-pointer -DNO_AST_MM `ls *.c`
    make[1]: quittant le répertoire « /asterisk-1.2.0/utils »
    make[1]: entrant dans le répertoire « /asterisk-1.2.0/stdtime »
    ../build_tools/mkdep -pipe -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -g3 -Iinclude -I../include -D_REENTRANT -D_GNU_SOURCE -O6 -march=i686 -fomit-frame-pointer *.c
    make[1]: quittant le répertoire « /asterisk-1.2.0/stdtime »
    cd editline && unset CFLAGS LIBS && test -f config.h || ./configure
    creating cache ./config.cache
    checking for gcc… gcc
    checking whether the C compiler (gcc ) works… yes
    checking whether the C compiler (gcc ) is a cross-compiler… no
    checking whether we are using GNU C… yes
    checking whether gcc accepts -g… yes
    checking how to run the C preprocessor… gcc -E
    checking host system type… i686-pc-linux-gnu
    checking for a BSD compatible install… install
    checking for ranlib… ranlib
    checking for ar… /usr/bin/ar
    checking for tgetent in -ltermcap… no
    checking for tgetent in -ltinfo… no
    checking for tgetent in -lcurses… no
    checking for tgetent in -lncurses… no
    configure: error: termcap support not found
    make: *** [editline/libedit.a] Erreur 1

  • sangare

    Salut j’ai eu le meme probleme hier sur Mandriva en fait il faut que tu installes termcap pour ça le paquet c’est

    Pour debian
    apt-get install libncurses5-dev

    Pour Fedora
    yum list | grep ncurses

    Bon j’espere que tu pourras corriger ton probleme.A+

  • CEDRIC CISSE

    Salut ,

    J’ai suivi à la lettre toutes les instructions mais j’ai un problème.
    Mon serveur fonctionne bien, la preuve j’ai installé sur la même machine que le serveur un softphone (dans mon cas wengophone) , qui arrive à émettre des coups de fil vers lui même et à avoir accès à tous les services qu’offrent mon serveur: en local tous fonctionne.
    J’ai donc essayé de configurer xlite sur des machines clientes xp ,mais celles-ci n’arrivent pas à communiquer avec le serveur.
    J’ai déactiver les pare-feu ,ouvert les ports : mais rien à faire .
    Je suis sûr que la configuration de xlite est bien faite puisque avec cette même configuration j’émettais des appels via un serveur trixbox.

    Une aide venant de votre me sera très bénéfique. Merci d’avance

  • @CEDRIC CISSE: Y a t’il un firewall sur votre serveur Asterisk ?

  • CEDRIC CISSE

    non j’y avais pensé et j’ai désactivé tous les firewall du serveur pour voir s’ils posaient problème mais rien du tout.

    J’avais oublié quelque chose lorsque je lance asterisk j’ai ce message

    …..[Nov 25 10:25:47] WARNING[4875]: res_smdi.c:1335 load_module: No SMDI interfaces are available to listen on, not starting SMDI listener.

    je sais pas ce que ça signifie est-ce que cela pourrait posé problème

  • Kris92

    Tu ne peux avoir ton serveur et on softphone sur la même machine. Tout deux demande à avoir le port 5060 en écoute.

  • wissal

    bjr a tous j’ai un probleme avec xlite sur fedora 10 il ne peut pas etre installer aussi je ne sais pas comment faire communiquer deux serveurs asterisk pouvez vous m’aider c urgent car c’est un projet de fin d’etude

  • Adil Messaoudi

    bonjour,
    avec la même configuration mentionnée dans votre exemple, j’arrive pas a repérer mes compte SIP à l’aide de la commande sip show registry, et avec la commande sip show peers j’ai mes deux comptes configurées qui apparaissent offline.
    merci de me faire parvenir l’erreur accompagné de votre solution.
    bien à vous
    Adil Messaoudi

  • aznaoui

    bjr Ms NICOLARGO ,moi ossi j’ai un projet sur voip ,je travaille sur la plateforme de fedora 11 ,voila la démarche q j’ai suivi mais en suite je sais pa comment completer

    L’installation décrite est celle réalisée sur CentOS ou Fedora. Donc vous devez avoir déjà une
    machine Fedora qui tourne.
    Ensuite, sur cette page http://sourceforge.net/project/showfiles.php?group_id=123387,
    télécharger la dernière (ou une autre) version de asterisk@home. Vous obtiendrez un fichier
    du genre : asteriskathome-2.2.tar.gz
    2. Installation : (Donc sur votre machine Fedora ou CentOS)
    # mkdir /var/aah_load // Créer le répertoire ou vous allez décompresser le fichier
    télécharger
    # cp asteriskathome-2.2.tar.gz /var/aah_load/
    # cd /var/aah_load
    # tar -zxvf asteriskathome-2.2.tar.gz
    # ./install_all.sh
    # ./install.sh
    Redémarrez votre machine, et vous aurez votre Asterisk qui tourne.
    Avec cette commande, normalement, tout est bon ; même AMP (Asterisk Management
    Portal) est installé, et vous pourrez administrer votre Asterisk à travers un navigateur (web
    bien sûr).

    j’usqio si ts va bien ,,,,,,,,,,,,,mais koi je faire d’autre je sais pa d’autre chose ,si vs pouvez m’aider je serais sincèrement trop heureuse ,,,,merci d’avance

  • flotho

    Bonjour,

    Je vais pas tarder à me pencher sur votre tutoriel te je souhaiterai avoir une idée de la durée que cela vous a pris pour mettre en production une telle solution.

    Cordialement,

  • Alex

    Bonjour tt le monde
    J’ai un problème avec la configuration de digium card TDM400 avec freeswitch dés que j’ai installé dahdi et freetdm les communication sip entre les extension et mème la registration ne fonctionne pas malgré que je les testé avant l’install de dahdi driver

  • ngwakoyo

    je suis informaticien

  • a