TP ISEN 2013

Scénario

Vous êtes responsable technique d'une entreprise et vous devez mettre en place un système téléphonique interne.

Vous avez à votre disposition :

Amazon Web Services

Amazon Web Services (AWS) est une collection de services informatiques distants (aussi appelés Services Web) fournis via internet par Amazon.com.

Lancés en juillet 2002, Amazon Web Services fournit des services en lignes à d'autres sites internet ou applications clientes. La plupart d'entre eux ne sont pas directement exposés à l'utilisateur final, mais offrent des fonctionnalités que d'autres développeurs peuvent utiliser. En juin 2007, Amazon revendiquait plus de 330 000 développeurs ayant souscrit pour l'utilisation des Amazon Web Services2.

Les offres Amazon Web Services sont accessibles en HTTP, sur architecture REST et par le protocole SOAP. Tout est facturé en fonction de l'utilisation, avec la valeur exacte variant de services en services, ou selon la zone géographique d'appel.

Liste des produits AWS : http://aws.amazon.com/fr/products/

Quel service d'Amazon pourrait-on utiliser pour héberger notre serveur Ubuntu 12.04 ?

OpenStack

OpenStack est un ensemble de modules logiciels Open Source entièrement compatibles avec les API d'Amazon. Il est en quelque sorte la version libre d'AWS. Il est donc possible d'installer OpenStack dans un datacenter privé (au sein de votre entreprise par exemple) et d'utiliser OpenStack en remplacement d'Amazon.

http://fr.wikipedia.org/wiki/OpenStack

Quel module d'OpenStack sert à gérer les machines virtuelles (le composant responsable de la partie "compute") ?

Votre machine

Vous disposez d'une machine Ubuntu 12.04 64b, vous allez l'administrer grâce à une console à distance

Quel protocole va-t-on utiliser pour s'y connecter ?

Vous utiliserez la clef suivante :

Linux : id_rsa.sansmotdepasse

Putty : id_rsa.sansmotdepasse.ppk

De combien d'adresses IP dispose votre machine ?

Notez la ou les adresses IP que vous avez trouvé :

Asterisk

Définition Wikipedia

http://fr.wikipedia.org/wiki/Asterisk_(logiciel)

Asterisk est un autocommutateur téléphonique privé, abréviation :

Installation

Normalement il faudrait le compiler. Je l'ai fait pour vous ! Vous n'avez donc qu'à installer la version packagée disponible sur le launchpad suivant :

https://launchpad.net/~emerginovteam/+archive/ubuntu/emerginov

Ajouter le dépôt :

sudo add-apt-repository ppa:emerginovteam/emerginov
sudo apt-get update
    

Quelle commande allez vous utiliser pour installer le paquet asterisk ?

Quelques commandes

Si besoin, pour démarrer asterisk :

sudo service asterisk start
    

A la place de start, quelle action peut-on utiliser pour vérifier si asterisk est démarré ?

Pour se connecter à la console d'asterisk :

sudo rasterisk -vvvvvvvvvvvvvvvv
    

Pour recharger la configuration depuis la console d'asterisk :

*CLI> core reload
    

Configuration

Création du lien symbolique pour les fichiers de démo :

sudo ln -s /usr/share/asterisk/sounds/en /var/lib/asterisk/sounds/
    

Les fichiers de configuration sont dans /etc/asterisk/

cd /etc/asterisk/
    
Copier coller les fichiers :

sip.conf

[general]
context=public
allowoverlap=no
udpbindaddr=0.0.0.0
tcpenable=no
tcpbindaddr=0.0.0.0
transport=udp,ws
srvlookup=no
realm=adresse ip de votre serveur
externip=adresse ip de votre serveur
localnet=10.0.0.0/255.255.255.0

[8000]
secret=moutarde
context=from-internal
host=dynamic
trustrpid=yes
sendrpid=no
type=friend
qualify=yes
qualifyfreq=600
transport=udp,ws
;encryption=yes
dial=SIP/8000
callerid=Chantal <8000>
callcounter=yes
;avpf=yes
icesupport=yes
directmedia=no

[8001]
secret=moutarde
context=from-internal
host=dynamic
trustrpid=yes
sendrpid=no
type=friend
qualify=yes
qualifyfreq=600
transport=udp,ws
;encryption=yes
dial=SIP/8001
callerid=Martine <8001>
callcounter=yes
;avpf=yes
icesupport=yes
directmedia=no

[8002]
secret=moutarde
context=from-internal
host=dynamic
trustrpid=yes
sendrpid=no
type=friend
qualify=yes
qualifyfreq=600
transport=udp,ws
;encryption=yes
dial=SIP/8002
callerid=Gertrude <8002>
callcounter=yes
;avpf=yes
icesupport=yes
directmedia=no
        

rtp.conf

[general]
rtpstart=10000
rtpend=20000
icesupport=yes
stunaddr=stun.ekiga.net
        

http.conf

[general]
enabled=yes
bindaddr=0.0.0.0
        

extensions.conf

[general]
static=yes
writeprotect=no
clearglobalvars=no

[from-internal]
exten => _800X,1,Dial(SIP/${EXTEN})
exten => _800X,n,hangup()

exten => DEMO,1,Answer()
exten => DEMO,n,Playback(demo-echotest)
exten => DEMO,n,Record(tmp.gsm,0,10)
exten => DEMO,n,Playback(beep)
exten => DEMO,n,Playback(tmp)
exten => DEMO,n,Playback(demo-echodone)
exten => DEMO,n,Playback(demo-thanks)
exten => DEMO,n,hangup()
        

Redémarrer asterisk (ou recharger la configuration) après chaque modification des fichiers.

Quelle commande utiliser pour vérifier qu'Asterisk écoute bien sur les ports 5060 et 8088 ?

Client SIP

Nous allons utiliser Linphone

Login : 8000
Mot de passe : moutarde
Serveur SIP : ip de votre serveur
    

Quel adresse SIP appeler pour tester le bon fonctionnement de notre serveur ?

Wireshark

http://fr.wikipedia.org/wiki/Wireshark

Utiliser Wireshark pour capturer une trace d'un appel entre votre client et le serveur (capture côté client).

Utiliser tshark (wireshark en ligne de commande) pour capturer la trace côté serveur.

Tester aussi en désactivant STUN dans le client Linphone.

Quel filtre applique-t-on dans wireshark pour n'afficher que les paquets SIP ?

Quelle réponse reçoit-on à notre première requête INVITE ?

Quelle autre réponse pourrait-on attendre si l'authentification était gérée par un proxy ?

Les requêtes STUN apparaissent-elles avant ou après les requêtes SIP ?

Capturer des traces pour :

Vérifier la cohérence des traces envers le cours.

Identifier la/les transaction(s).

Identifier le/les dialogue(s).

Combien de requête REGISTER observez vous ?

Essayer d'expliquer pourquoi

Combien de dialogues différents obtenez vous en tout (enregistrement, appel, raccrochage, ne pas tenir compte des requêtes OPTIONS) ?

Essayer d'expliquer pourquoi

Tests RTP, codecs, débits et bande passante

Quel est le débit moyen théorique pour le codec GSM Full Rate (en kbit/s) :

Et pour PCMA (G711 A-law) :

Capturer des traces pour :

Télécharger sur votre serveur les deux scripts suivants :

Executer les deux scripts

Le script iptables va permettre de tagguer les paquets RTP afin de leur appliquer une règle de filtrage particulière. Il ne prend aucun paramètre. Exemple :

sudo bash iptables_arnaud.sh
    

Le script tc (comme traffic control) ordonne au noyau linux d'écrêter le débit sortant sur les paquets IP filtrés par iptables. Pour utiliser ce script, vous devez lui passer le débit maximum comme paramètre sur la ligne de commande. Exemple :

sudo bash tc_arnaud.sh 100kbit
    

Pour chaque codec, commencer les tests à 100kbit et descendre de 10 en 10. Attention à bien désactiver tous les autres codecs dans linphone !

À partir de combien de kbit/s, le son commence-t-il a être mauvais pour le codec GSM ?

À partir de combien de kbit/s, le son commence-t-il a être mauvais pour le codec PCMA ?

Essayer d'expliquer pourquoi le son est mauvais avant d'avoir atteint le débit du codec

Transfert, boite vocale, conférences avec Asterisk

Configurer Asterisk pour renvoyer les appels vers une boite vocale si la personne est absente ou occupée.

Quelle fonction d'Asterisk avez-vous utilisée ?

Configurer Asterisk pour permettre aux clients de rejoindre un pont téléphonique.

Quelle fonction d'Asterisk avez-vous utilisée ?

Configurer Asterisk pour transférer un appel en cours vers un autre numéro.

Quelles options avez-vous ajoutées pour transférer un appel ?

Utilisation d'un téléphone SIP

ftp://downloads.aastra.com/Downloads/User_Guides/6755i_41-001386-00_REV01_UG_E_06_2013.pdf

Le téléphone ne sait pas utiliser le protocole STUN, que peut-on rajouter dans la configuration de l'user sur Asterisk pour que les paquets RTP traversent quand même le NAT ?