• Aucun résultat trouvé

M4205 Téléphonie sur IP

N/A
N/A
Protected

Academic year: 2022

Partager "M4205 Téléphonie sur IP"

Copied!
16
0
0

Texte intégral

(1)

M4205

Téléphonie sur IP

Sébastien Peychet et Sami Evangelista IUT de Villetaneuse

Département Réseaux et Télécommunications 2021–2022

http://www.lipn.univ-paris13.fr/~evangelista/cours/M4205

Table des matières

TP 1 — Introduction à Asterisk 2

TP 2 — Analyse d’échanges SIP et RTP 6

TP 3 — Qualité de service sur un réseau local 8

TP 4 — Mise en œuvre d’une architecture de téléphonie 11

TP 5 — SIP, RTP et NAT 14

Ce document est mis à disposition selon les termes de la licence Creative Commons “Attribution – Pas d’utilisation commerciale – Partage dans les mêmes conditions 4.0 International”.

(2)

TP 1 — INTRODUCTION ÀASTERISK 2021–2022 M4205 — TÉLÉPHONIE SURIP

TP 1 — Introduction à Asterisk

Ce TP est une introduction à asterisk, un IPBX logiciel, gratuit et open source, sous Linux. Asterisk peut remplir la plupart des fonctions d’un PABX matériel (serveur SIP, registrar, redirection d’appels, . . . ) comme, par exemple, les PABXs Aastra de la R101. On peut donc l’utiliser en remplacement de ceux-ci dans des environnements de téléphonie basés à 100% sur IP. Dans des environnements mixtes (téléphonie sur IP + téléphonie analogique/numérique) on pourra l’utiliser en combinaison de PABX matériels — asterisk ne pouvant pas être utilisé comme passerelle VoIP.

Le TP est à faire en binôme sur 3 PCs sur lesquels on aura chargé une image Debian (version 8 ou supérieure).

Exercice 1 — Installation d’asterisk et des softphones

1 Installer wireshark sur les 3 PCs.

2 Choisir un des 3 PCs pour installer asterisk. Démarrer ensuite le service asterisk puis la CLI (Command Line Interface) asterisk avec la commandeasterisk -rv. La CLI est un outil permettant d’interagir avec le serveur asterisk. Nous l’utiliserons à la fois pour faire certains tests et pour recharger les fichiers de configuration d’asterisk.

3 Sur les deux autres PCs, installer linphone et l’outil kmix pour le contrôle du son. Lancer ensuite kmix.

Exercice 2 — Fonctionnement de base d’Asterisk

Le service asterisk a deux fichiers de configuration principaux :

— /etc/asterisk/sip.conf

— /etc/asterisk/extensions.conf

Avant d’éditer ces deux fichiers, il est important de comprendre comment ils sont utilisés par Asterisk. Deux exemples simples sont visibles sur la Figure 1.

Chaque téléphone doit avoir un nom. Ce nom peut être un numéro, une chaîne de caractère, ou une combinaison des deux. Dans ce TP, nous utiliserons des noms symboliques. Vous choisirez ces noms comme vous voulez. Dans nos exemples nous les nommeronsAladdinetGenie.

Les noms des téléphones sont définis danssip.conf. Ce fichier est divisé ensections: une sectiongeneral, puis une section par téléphone.

FIGURE1 – Exemples de fichiers de configuration et déroulement d’un appel

Chaque section débute par son nom entre crochets. Dans une section, chaque ligne précise unparamètre.

La sectiongeneralpermet de donner des valeurs par défaut aux paramètres qui ne seraient pas définis dans la section propre à un téléphone. Sur la figure, évidemment, le fichier est incomplet : il n’y a rien dans la sectiongeneral, certains paramètres n’ont pas de valeur, . . .

(3)

M4205 — TÉLÉPHONIE SURIP 2021–2022 TP 1 — INTRODUCTION ÀASTERISK

Le paramètrecontextest très important car il permet de définir des groupes de téléphones ; chaque groupe aura son propre plan de numérotation, ce qui permet par exemple de donner des droits différents. Tous les téléphones ayant un même contexte font partie du même groupe. Ici, Aladdin et Genie ont le même contexte :local.

Le fichierextensions.confdéfinit leplan de numérotation(dialplan), c’est-à-dire ce que doit faire Asterisk quand un appel vers un certain numéro lui parvient. Ce fichier est également divisé en sections : une sectiongeneral, une section globals, puis une section par contexte (donc par groupe d’utilisateurs).

Pour chaque contexte, donc ici dans la sectionlocal, on définit le plan de numérotation des utilisateurs en écrivant desextensions. Nous verrons la syntaxe d’une extension un peu plus loin. Sur l’exemple de la figure, une seule extension a été définie :exten => 102,1,Dial(SIP/Genie). Elle indique que le numéro 102 fera sonner le téléphoneGenie. On a donc le plan de numérotation suivant :

Nom d’extension

(numéro composé) Application Paramètre

102 Faire sonner (Dial) technologie SIP, téléphone Genie (SIP/Genie) Pour bien comprendre, voyons ce qui se passe quand Aladdin compose le 102.

1. Une requête SIP INVITE parvient au serveur Asterisk, avec comme Request-URI 102@IP_asterisk.

2. Pour connaître le plan de numérotation à utiliser, Asterisk doit identifier l’appelant. Deux possibilités :

— soit il utilise l’en-tête From du message SIP. C’est le cas si letypede l’appelant estfriend;

— soit il utilise l’adresse IP source du message SIP ; et en déduit l’URI de l’appelant par consultation du registrar.

C’est le cas si letypede l’appelant estpeer.

3. Danssip.conf, le serveur repère le contexte d’Aladdin : icilocal(et d’autres paramètres comme le codec)

4. Dansextensions.conf, il consulte le plan de numérotation de la sectionlocal, et voit que le téléphone à faire sonner est Genie.

5. Danssip.conf, il consulte les paramètres de Genie.

6. Il fait suivre la requête SIP INVITE à Genie.

Nous allons maintenant configurer le service asterisk pour que les deux softphones puissent passer des appels.

1 Renommer (déplacer) les fichierssip.confetextensions.confen (vers)sip.conf.baketextensions.conf.bak afin de partir de fichiers de configuration vierges et de sauvegarder les fichiers initiaux..

2 Créer un premier fichiersip.confavec le contenu ci-dessous :

[ g e n e r a l ]

bindport=5060 ; p o r t s u r l e q u e l s o n t a t t e n d u e s l e s r e q u ê t e s S I P

bindaddr= 0 . 0 . 0 . 0 ; IP de l ’ i n t e r f a c e s u r l a q u e l l e l e s e r v e u r va é c o u t e r ( 0 . 0 . 0 . 0 = t o u t e s l e s i n t e r f a c e s ) language= fr

dtmfmode= auto

disallow= all ; t o u s l e s c o d e c s i n t e r d i t s

allow= alaw ; c o d e c s a u t o r i s é s , p a r o r d r e de p r é f é r e n c e , i c i G711 l o i A allow= gsm

[ A l a d d i n ] ; nom du t é l é p h o n e ( à c h a n g e r ) context= local

secret=0000 ; mot de p a s s e p o u r l ’ e n r e g i s t r e m e n t ( à c h a n g e r )

type= peer ; c ’ e s t l ’ a d r e s s e IP s o u r c e q u i p e r m e t t r a d ’ i d e n t i f i e r l ’ a p p e l a n t

host= d y n a m i c ; a d r e s s e IP d y n a m i q u e => o b t e n u e p a r c o n s u l t a t i o n du r e g i s t r a r ( a s t e r i s k ) directmedia= yes ; l e f l u x RTP n ’ a p a s b e s o i n de p a s s e r p a r l e s e r v e u r a s t e r i s k

directrtpsetup= yes ; l e f l u x RTP e s t e n v o y é s u r l e s param è t r e s f o u r n i s d a n s l e p r e m i e r INVITE

3 Modifier ce fichier pour créer un deuxième téléphone.

4 Depuis la CLI, recharger le fichiersip.confpuis afficher les téléphones connus :

sip reload sip show peers

5 Éditer le fichierextensions.confpour obtenir (en l’adaptant au nom de votre téléphone et en changeant le numéro appelé pour avoir N02, N numéro de binôme) le contenu ci-dessous :

[ g e n e r a l ]

static= yes ; c e s d e u x l i g n e s d o n n e n t l a p o s s i b i l i t é de writeprotect= no ; s a u v e g a r d e r l e p l a n d e p u i s l a CLI A s t e r i s k

[ g l o b a l s ] [ local ]

exten = > N02 ,1 , Dial ( SIP / Genie )

Une extension définit une ou plusieurs actions, appelées applications, classées par priorité, à effectuer en cas d’appel.

La syntaxe est la suivante :

exten => Nom_extension, numéro de priorité, application()

Le nom de l’extension est le numéro appelé. Il peut être une suite de chiffres ou une chaîne de caractères. Pour un parc de hardphones (comme le 6757i), il faut choisir des numéros, typiquement sur 3 ou 4 chiffres (car il est difficile de numéroter une chaîne de caractères !) ; pour des softphones, on peut choisir des numéros ou des chaînes de caractère.

(4)

TP 1 — INTRODUCTION ÀASTERISK 2021–2022 M4205 — TÉLÉPHONIE SURIP

L’applicationla plus commune estDial(), qui permet de faire sonner un téléphone, avec en paramètre le protocole (SIP pour nous) et, séparé par un /, le nom du téléphone à faire sonner (ou la Request-URI à utiliser si le téléphone n’est pas danssip.conf).

6 Ajouter une extension pour traiter un appel vers le second téléphone.

7 Depuis la CLI, recharger le fichierextensions.confavec la commandedialplan reload.

Dans la suite du TP il faudra exécuter dans la CLI une des deux commandes ci-dessous en cas de modification d’un fichier de configuration :

— Après modification desip.conf:sip reload

— Après modification deextensions.conf:dialplan reload Ceci évite de redémarrer le service asterisk.

Exercice 3 — Mise en service des softphones Linphone

1 Créer les comptes sur vos deux PCs softphone : 1.1 Lancer linphone.

1.2 Fermer l’assistant de configuration.

1.3 À partir du menuOptions→Préférences→Gérer mes comptes SIP, ajouter un compte SIP via un proxy avec les paramètres choisis dans le fichiersip.conf. Toujours avec l’exemple de l’exercice précédent et en supposant que le serveur asterisk est sur la machine 192.168.1.1, on aura les paramètres suivants pour Aladdin :

— identité SIP :sip:Aladdin@192.168.1.1

— adresse du proxy SIP :sip:192.168.1.1

Laisser aux autres paramètres (Route, Période d’enregistrement, . . . ) leurs valeurs par défaut.

Après validation des paramètres du compte, le softphone essaie de s’enregistrer. Le mot de passe à entrer doit corres- pondre à la valeur du paramètresecretdans la section du téléphone (fichiersip.conf).

2 Depuis la CLI, afficher les téléphones connus pour vérifier que l’enregistrement s’est bien déroulé :sip show peers.

3 Passer des appels entre softphones pour valider le fonctionnement.

Exercice 4 — Éléments supplémentaires dans le plan de numérotation

1 Ajouter les lignes suivantes au plan de numérotation (hello-worldest un fichier de son inclus dans asterisk) :

exten= >1200 ,1 , Answ er ()

exten= >1200 ,2 , P l a y b a c k ( h e l l o - w o r l d ) exten= >1200 ,3 , Hang up ()

Appeler le numéro 1200. Que se passe-t-il ? Conclure sur le rôle des applicationsAnswer(),Playback()etHangup().

La numérotation des priorités étant source d’erreur, asterisk permet de remplacer la priorité par n. Dans ce cas,n correspond à la priorité de la ligne précédente incrémentée de 1. Autre amélioration : si, pour plusieurs lignes, l’extension est la même — par exemple 1200 ci-dessus, — on peut, à partir de la seconde ligne, utilisersame =>à la place deexten

=> 1200. Ceci améliore la lisibilité.

2 Tester ces deux améliorations en modifiant les lignes du point 1 puis vérifier que le résultat est le même.

On peut aussi écrire une extension correspondant non pas à un seul numéro mais à un ensemble de numéros. Pour cela le nom de l’extension doit commencer par un underscore (_). On peut ensuite utiliser :

— X: n’importe quel digit de 0 à 9

— Z: n’importe quel digit de 1 à 9

— N: n’importe quel digit de 2 à 9

— .: un ou plusieurs caractères, peu importe le(s)quel(s)

3 En utilisant cette possibilité, ajouter des extensions permettant de jouer le soninvalidsi un des utilisateurs appelle un numéro commençant par 0.

Exercice 5 — Trunk SIP entre serveurs Asterisk authentifiés

Dans cet exercice, nous allons mettre en place des trunks SIP entre les serveurs de la salle. Un trunk SIP est une liaison entre deux serveurs SIP. Le trunk peut fonctionner avec ou sans authentification des serveurs. Ici, nous considérerons des trunks avec authentification. C’est typiquement le cas dans des entreprises réparties sur plusieurs sites avec des serveurs asterisk acceptant uniquement le trafic SIP venant des autres serveurs asterisk de l’entreprise.

Les binômes seront répartis deux à deux. Un trunk sera créé entre chaque couple de binômes. Chaque binôme aura trois choses à faire :

— ajouter le serveur distant dans le fichiersip.conf, en lui donnant un contexte spécifique et un mot de passe notam- ment ;

(5)

M4205 — TÉLÉPHONIE SURIP 2021–2022 TP 1 — INTRODUCTION ÀASTERISK

— dansextensions.conf, dans la section correspondant à ce contexte spécifique, attribuer un plan de numérotation pour gérer les appels entrants (le même que dans la sectionlocal) ;

— toujours dansextensions.conf, ajouter une extension au plan de numérotation du contextelocalpour gérer les appels sortants vers le serveur distant.

Par exemple, si le binôme 2 souhaite ajouter le binôme 4, danssip.conf, il faudra ajouter :

[ s e r v e u r _ t a b l e 4 ]

context= e n t r a n t _ b i n o m e 4 ; c o n t e x t e s p é c i f i q u e p o u r l e s a p p e l s v e n a n t du b i n ôme 4 type= peer

host= 1 9 2 . 1 6 8 . X . Y ; a d r e s s e IP du s e r v e u r d i s t a n t

secret= toto ; c l é s e c r è t e q u e d e v r a c o n n a î t r e l e s e r v e u r d i s t a n t

Dansextensions.conf, il faut ensuite ajouter la sectionentrant_binome4avec les extensions adéquate.

Enfin, dans la sectionlocal, il faut ajouter les extensions permettant de rediriger vers les appels externes vers les serveurs distants. Par exemple, si le binôme 2 veut rediriger les appels commençant par 4 vers le binôme 4, il devra ajouter des lignes ayant la forme ci-dessous :

exten = > _4XX ,1 , Dial ( SIP / $ { EXTEN }: pass :: u s e r n a m e _ a u t h @ 1 9 2 .168. X . Y )

La variable ${EXTEN}correspond au numéro qui a été composé, et servira donc à construire la Request-URI du message INVITE, la partie domaine étant l’adresse IP du serveur distant.username_authetpasssont respectivement le nom de la section dans lesip.confdu serveur distant (serveur_table2) et la clé donnée, toujours dans le danssip.conf du serveur distant.

1 Modifiersip.confet vérifier votre modification en tapant sur la CLI Asterisk :

sip show peers

2 Modifierextensions.conf.

3 Quand le binôme distant est prêt, tester les appels entrants et sortants.

Exercice 6 — Mise en place de la messagerie

Mettre en place et tester la messagerie vocale en vous aidant d’Internet. Les messageries des deux utilisateurs seront protégées par un mot de passe de votre choix. Lors d’un appel, l’appelant basculera automatiquement sur la messagerie si l’appelé ne décroche pas au bout de 10 secondes.

En fin de TP, archivez et sauvegardez sur clé USB le contenu du répertoire/etc/asterisk:

$ tar czf a s t e r i s k . tgz / etc / a s t e r i s k

Nous réutiliserons ces fichiers dans les TPs suivants.

(6)

TP 2 — ANALYSE DÉCHANGESSIPETRTP 2021–2022 M4205 — TÉLÉPHONIE SURIP

TP 2 — Analyse d’échanges SIP et RTP

Le but de ce TP est d’étudier les échanges SIP dans le cadre d’appels entre différents UAs et serveurs SIP.

Comme pour le TP précédent, nous travaillerons en binômes, chaque binôme sur 3 machines.

Exercice 1 — Restauration de la configuration du TP 1

1 Refaire l’exercice 1 du TP 1 pour installer asterisk et les différents logiciels nécessaires.

2 Extraire l’archiveasterisk.tgzobtenue à la fin du TP 1. L’archive doit être extraite à la racine du système de fichiers :

$ cd /

$ tar xzf a s t e r i s k . tgz

Exercice 2 — L’enregistrement SIP

Le but de cet exercice est d’analyser les échanges SIP lors de l’enregistrementd’un UA auprès du registrar (asterisk dans notre cas).

Q. 2.1 À quoi sert l’enregistrement d’un UA SIP ?

Tout en capturant les trames sur un des PCs avec linphone (peu importe lequel) démarrer (ou redémarrer après avoir quitté linphone à partir de la barre des tâches) linphone sur ce même PC.

Q. 2.2 Quels sont les messages SIP capturés lors de cette opération ? Donner la signification des messages.

Q. 2.3 Dans sa première réponse, asterisk indique à l’UA l’algorithme de chiffrement à utiliser pour chiffrer le mot de passe. Dans quel champ d’en-tête SIP (voir la sectionMessage Headerdans wireshark) trouve-t-on cette information et quel est cet algorithme ?

Q. 2.4 Dans quel champ d’en-tête SIP l’UA insère-t-il ensuite son mot de passe (chiffré) ?

Q. 2.5 Quelle informations sont, à la fin de l’échange, enregistrées par le registrar et dans quels champs d’en-tête SIP les trouve-t-on ?

Exercice 3 — Initialisation d’une session SIP

Dans cet exercice nous allons observer les échanges SIP dans le cas d’un appel de l’UA 1 vers l’UA 2.

Sur le PC avec asterisk, capturer avec wireshark les échanges SIP lors du scénario suivant : 1. Initier un appel depuis l’UA 1.

2. Ne pas répondre, laisser une ou deux sonneries.

3. Avec l’UA 1, raccrocher.

(Il se peut qu’asterisk refuse le premier message INVITE envoyé par l’UA 1 comme dans l’exercice précédent.) Q. 3.1 Donner une copie d’écran du graphique des flux capturés (Dans wireshark, utilisersipcomme filtre puis aller

dansStatistiques→Graphique des flux. Cocher ensuiteLimiter au Filtre d’Affichage).

Q. 3.2 Indiquer le type de message utilisé dans chacun des cas suivants : (a) L’UA 1 initie l’appel.

(b) L’UA 2 prévient qu’il a démarré la sonnerie.

(c) Asterisk prévient qu’il tente de contacter l’UA appelé.

(d) L’UA 1 prévient que l’utilisateur a raccroché.

(e) Asterisk acquitte l’annulation de l’appel.

On s’intéresse maitenant à l’en-tête des messagesINVITE.

Q. 3.3 Retrouver dans le messageINVITErelayé par asterisk vers l’UA 2 chacune des informations suivantes et indiquer dans quel champ d’en-tête l’information est disponible :

(a) L’adresse IP du (ou des) proxy(s) par le(s)quel(s) est passé le INVITE.

(b) L’URI de l’UA 1.

(c) L’URI de l’UA 2.

(d) Le langage de description des données dans le corps du message INVITE.

(e) Le nombre maximal de proxys par lequel ce message INVITE peut encore transiter.

Supposons maintenant qu’un autre proxy SIP (nommé P) se trouve sur la route entre asterisk et l’UA 2. Asterisk relaie donc le message INVITE de l’UA 1 à P (plutôt que de le retransmettre directement à l’UA 2).

(7)

M4205 — TÉLÉPHONIE SURIP 2021–2022 TP 2 — ANALYSE DÉCHANGESSIPETRTP

Q. 3.4 Quels changements observerait-on alors dans le message INVITE relayé ensuite par P vers l’UA 2 ? Capturer de nouveau, mais cette-fois ci sur un des deux UAs, les paquets SIP échangés lors d’un appel avorté.

Q. 3.5 Est-ce que des messages SIP sont échangés directement entre UAs ? Supposons enfin que le serveur Asterisk est en panne.

Q. 3.6 Quelle URI doit-on alors composer pour joindre directement un UA ? Tester.

Q. 3.7 Quel est l’inconvénient de cette méthode ?

Exercice 4 — La négociation SDP

Le corps d’un messageINVITEcontient des données au format SDP (Session Description Protocol). C’est dans ce corps que l’UA appelant fournit les paramètres RTP (ou autre) qu’il souhaite utiliser pour la session : port UDP sur lequel les paquets de voix seront envoyés et reçus, codec (algorithme de codage de la voix), débit du codec, taille des paquets, . . . . L’UA appelé consulte ces paramètres, détermine ceux qui sont compatibles avec sa propre configuration (p.ex., les codecs demandés par l’appelant qui sont également installés chez lui) et renvoie ceux-ci dans son message200 OK. On parle alors de négociation de paramètres.

Sous wireshark, c’est la ligneMedia Descriptionqui contient les informations les plus importantes. Elle contient :

— le type de session demandée (audio, vidéo ou les deux) ;

— le port UDP utilisé pour le transport des données (voix ou image) ;

— le protocole utilisé pour transporter les données (RTP, . . . ) ;

— et la liste des numéros des codecs supportés (chaque codec étant identifié par un numéro).

1 Sur l’UA 2, changer les préférences pour que seul le codec PCMA soit activé (aller dansOptions→Préférences).

2 Sur le PC avec asterisk, capturer avec wireshark les échanges SIP lors d’un appel de l’UA 1 vers l’UA 2 (arrêter la capture après avoir décroché et avant de raccrocher afin de ne pas avoir trop de messages SIP).

Q. 4.1 Sélectionner le messageINVITEenvoyé par l’UA 1 et en consultant la ligneMedia Descriptiondu corps du message (Message Bodydans wireshark), trouver :

— le port UDP qu’utilisera l’UA 1 pour le flux RTP ;

— et les numéros des codecs disponibles chez l’UA 1.

Q. 4.2 Sélectionner maintenant le message200 OKenvoyé par l’UA 2 et retrouver les paramètres fournis par l’UA 2 (numéro de port et numéros des codecs disponibles).

3 Désactiver maintenant tous les codecs sur l’UA 2.

4 Refaire le test précédent (capture de trames sur asterisk lors d’un appel).

Q. 4.3 Quel est le code SIP utilisé par l’UA 2 pour indiquer qu’il ne supporte aucun des codecs demandés par l’UA 1 ? 5 Réactiver le codec PCMA sur l’UA 2.

Exercice 5 — Fermeture de session SIP

Sur le PC asterisk, lancer une capture pour observer le traffic SIP lors d’un appel complet (stopper la capture après avoir racroché) entre les deux UAs.

Q. 5.1 Quels message SIP indique qu’un correspondant a raccroché ? Q. 5.2 Avez vous capturé des paquets RTP pendant l’appel ? Pourquoi ?

Exercice 6 — Les paquets RTP

Capturer maintenant sur un des deux PCs avec UA le trafic RTP lors d’un appel.

Q. 6.1 Observer l’en-tête RTP. Le champPayload Typeindique le format des données, c’est-à-dire ici le numéro du codec choisi à l’issue de la négociation SDP (voir exercice 4). Quel est ce codec ici ? Quel est son numéro ? Q. 6.2 Comment varie le numéro de séquence entre un paquet et le suivant ? À quoi sert ce numéro ?

Q. 6.3 Combien d’octets de voix sont contenus dans chaque paquet RTP ? (Attention à retirer les octets d’en-tête du nombre affiché par wireshark (colonneLength).)

Q. 6.4 Le codec produit un octet toutes les 125µs. En déduire le temps nécessaire pour générer un paquet RTP.

Q. 6.5 Quelle est la limite que ce temps ne doit pas dépasser pour avoir une qualité de service optimale ?

(8)

TP 3 — QUALITÉ DE SERVICE SUR UN RÉSEAU LOCAL 2021–2022 M4205 — TÉLÉPHONIE SURIP

TP 3 — Qualité de service sur un réseau local

L’objectif du TP est :

— de mettre en évidence le problème lié à la cohabitation de la téléphonie et des données sur un réseau local ;

— d’apprendre à résoudre ce problème en utilisant des VLANs.

Nous mettrons en œuvre l’architecture de la figure ci-dessous.

S1 S2

PC1

Tel1 Asterisk1

binôme 1

PC2

Tel2 Asterisk2

binôme 2

câble Ethernet droit câble Ethernet croisé

câble console

Le TP est à faire en binôme et chaque binôme travaillera sur trois machines connectées à un switch lui même connecté au switch d’un autre binôme. Les rôles des trois ordinateurs sont les suivants :

— PC sera utilisé pour administrer le switch du groupe via l’outil minicom et effectuer des transferts de données vers le PC d’un autre binôme ;

— Tel sera utilisé pour passer (ou recevoir) des appels vers (depuis) la machine Tel d’un autre groupe ;

— et Asterisk sera le serveur SIP du binôme.

Les commandes de configuration du switch sont disponibles dans le document suivant :

https://www.lipn.univ-paris13.fr/~evangelista/cours/cisco.pdf

Exercice 1 — Mise en place de l’architecture

1 Effectuer le câblage selon la figure en introduction. Connecter les trois machines au switch via leur interface eth1.

2 Installer les paquets suivants :

— sur Tel : linphone et wireshark

— sur PC : minicom, iperf et wireshark

— sur Asterisk : asterisk et wireshark

3 Attribuer des IPs aux interfaces eth1 des trois machines (N= numéro de groupe) :

— 10.21.N.1/16 pour Tel

— 10.21.N.2/16 pour PC

— 10.21.N.100/16 pour Asterisk

4 Tester que les trois machines peuvent bien s’échanger des messages ping sur le réseau 10.21.0.0/16.

5 Désactiver l’interface eth0 sur Tel. (Certains tests que nous ferons par la suite ne fonctionneront pas si le téléphone a deux interfaces activées.)

Exercice 2 — Restauration du serveur asterisk

1 Sur Asterisk :

— restaurer votre sauvegarde du TP 1

— apporter les modifications nécessaires aux fichierssip.confetextensions.confpour pouvoir passer et recevoir des appels vers le téléphone du binôme auquel vous êtes connectés. Dans ces deux fichiers, le serveur asterisk de cet autre binôme devra être désigné uniquement par son IP dans le réseau 10.21.0.0/16.

2 Sur Tel : lancer linphone et enregistrer le téléphone auprès d’asterisk.

3 Passer des appels vers le téléphone du binôme auquel vous êtes connectés.

Exercice 3 — Observation du phénomène de congestion

Nous allons provoquer une congestion du réseau en générant beaucoup de trafic entre les PCs des deux binômes. En conséquence, les mémoires des switchs seront saturées, ils ne pourront pas mémoriser les paquets reçus et ces paquets seront détruits. Si l’on passe simultanément un appel entre les deux téléphones, la qualité de la communication sera (fortement) dégradée.

Pour provoquer cette congestion nous allons dans un premier temps diminuer le débit entre les deux switchs.

(9)

M4205 — TÉLÉPHONIE SURIP 2021–2022 TP 3 — QUALITÉ DE SERVICE SUR UN RÉSEAU LOCAL

1 Sur PC :

— lancerminicom -s(en root)

— dans le menu de configuration de minicom, configurer le port série :

— port série :/dev/ttyUSB0

— début/parité/bits : 9600 8N1

— sélectionner ensuiteSortir

2 Configurer le switch (via le terminal minicom) pour passer la liaison vers l’autre switch à 10 Mbit/s.

On se retrouve alors dans la configuration suivante :

PC1

Tel1

S1 S2

PC2

Tel2 100Mbit/s

100Mbit/s

100Mbit/s

100Mbit/s 10Mbit/s

Ainsi, si PC1envoie des paquets à PC2au débit maximal, ces paquets ne pourront pas tous être écoulés par S1sur la liaison vers S2. En moyenne, un paquet sur 10 (le rapport entre les deux débits) devrait passer.

3 Initier un appel vers le téléphone de l’autre binôme puis, sans raccrocher, lancer le transfert de données depuis votre PC vers le PC de l’autre binôme. Il faut pour cela effectuer dans l’ordre :

— Sur le PC de l’autre binôme :

$ iperf -s -u

iperf est ici lancé en mode serveur. Celui-ci attend qu’on lui envoie des données sur le port UDP par défaut.

— Sur votre PC :

$ iperf -c @IP - de - lautre - PC -u -n 500 M -b 100 M

iperf est ici lancé en mode client. Il envoie au serveur iperf à l’adresse indiquée un total de 500 mega-octets de données à un débit de 100 Mbit/s.

On doit alors constater une dégradation de la qualité sur un des deux téléphones.

Q. 3.1 Donner une copie d’écran de la configuration du switch (show running-config).

4 Refaire le test du point 3 tout en capturant les trames sur un des téléphones. Attendre qu’un rapport RTCP de type Sender Reportsoit capturé. (Les messages RTCP capturés sont de différents types : Receiver Report, Sender Report, . . . Pour minimiser l’utilisation de bande passante par RTCP, les paquets RTCP contiennent généralement plusieurs rapports.)

Q. 3.2 LeSender Reportdoit contenir le nombre de paquets perdus et la gigue observés par l’émetteur du rapport.

Comment wireshark nomme-t-il ces informations ?

Q. 3.3 Donner une copie d’écran du contenu de la capture faisant apparaître ces informations.

Exercice 4 — Résolution du problème avec des VLANs

Pour résoudre le problème constaté à l’exercice précédent, nous allons séparer les flux de données (échange de fichiers, le trafic iperf, . . . ) et les flux de voix (trafic SIP et RTP) en créant deux VLANs : le VLAN 10 pour les données, et le VLAN 20 pour la voix. Les PCs seront donc sur le VLAN 10 ; les téléphones et serveurs asterisk sur le VLAN 20.

On va aussi rajouter un câble entre les deux switchs pour avoir un câble par VLAN.

L’objectif est donc d’arriver à la configuration suivante :

S1 S2

PC1

Tel1 Asterisk1

VLAN 20 VLAN 10 VLAN 20

PC2

Tel2 Asterisk2

VLAN 20 VLAN 10 VLAN 20

VLAN 10, 10 Mbit/s

VLAN 20, 10 Mbit/s

Pour cela :

(10)

TP 3 — QUALITÉ DE SERVICE SUR UN RÉSEAU LOCAL 2021–2022 M4205 — TÉLÉPHONIE SURIP

1 Créer le VLAN 10 sur votre switch. Il aura pour nomdonnees.

2 Créer le VLAN 20 sur votre switch. Il aura pour nomvoix.

3 Associer le port auquel est connecté votre PC au VLAN 10.

4 Associer les ports auxquels sont connectés votre téléphone et votre serveur asterisk au VLAN 20.

5 Ajouter un câble entre les deux switchs.

6 Passer le débit du port auquel vous avez branché ce nouveau câble à 10Mbit/s.

7 Configurer les ports qui vous relient au switch de l’autre binôme pour qu’un de ces deux ports soit sur le VLAN 10, et l’autre sur le VLAN 20.

Ainsi, les flux sont séparés et en cas de transfert de données entre les PCs, seul le VLAN 10 sera engorgé et les paquets SIP ou RTP pourront circuler sur le VLAN 20.

Refaire le test du point 3 de l’exercice 3 et vérifier que la qualité de la communication reste bonne pendant le transfert de données.

Q. 4.1 Donner une copie d’écran de la configuration du switch (show running-config).

Exercice 5 — Résolution du problème avec des VLANs et de la QoS

La solution de l’exercice précédent présente l’inconvénient de rajouter du câblage entre les switchs.

On peut s’en passer en utilisant un unique câble. Étant donné que les trames échangées par les deux switchs sur ce câble peuvent appartenir à l’un des deux VLANs il faut que cette liaison soit configurée comme une liaison trunk.

Pour rappel, les liaisons trunk sont celles sur lesquelles peuvent circuler des trames étiquetées contenant un identifiant de VLAN.

En faisant cela on réintroduit cependant le problème de congestion observé à l’exercice 3 puisque les paquets de voix et de données passeront par le même câble. Il faut donc que sur ce lien,les paquets de voix aient la priorité sur les paquets de données. Autrement dit, les switchs retransmettent en priorité les trames du VLAN 20, les trames du VLAN 10 passant en second. Ainsi en situation de congestion, les switchs retransmettront d’abord les trames du VLAN 20 et seules les trames du VLAN 10 pourront être détruites.

Notre réseau doit donc gérer la qualité de service (QoS). Sur un réseau Ethernet, l’information de priorité est portée par un champ de 3 bits de l’étiquette de VLAN parfois appelé CoS (Class of Service). Les trames qui doivent sortir sur une interface donnée d’un switch gérant la QoS sont classées en 4 files d’attente (priorité 0-1, 2-3, 4-5, 6-7), et la file non vide la plus prioritaire voit ses trames émises en premier. Puis, c’est la seconde la plus prioritaire, et ainsi de suite : on parle de priorité stricte.

Les trames émises par le PC et le téléphone ne sont pas étiquetées. C’est lorsque le switch les retransmet sur sa liaison trunk qu’il insère l’étiquette de VLAN contenant l’identifiant de VLAN. Il doit aussi insérer dans cette étiquette la priorité. Nous allons ainsi attribuer une priorité de 6 au téléphone et au serveur asterisk afin que les trames émises par ceux-ci soient prioritaires sur les trames émises par le PC (qui garderont la priorité par défaut de 0). Nous allons donc configurer les ports sur lesquels sont connectés les téléphones et serveurs asterisk commetrusted ports.

L’objectif est donc d’arriver à la configuration suivante :

S1 S2

PC1

Tel1 Asterisk1

VLAN 20

trusted, cos=6 VLAN 10 VLAN 20

trusted, cos=6

PC2

Tel2 Asterisk2

VLAN 20

trusted, cos=6 VLAN 10 VLAN 20

trusted, cos=6 trunk, 10 Mbit/s

Pour cela :

1 Retirer un des deux câbles reliant votre switch à l’autre binôme.

2 Passer le port qui vous relie à l’autre binôme en mode trunk.

3 Modifier les paramètres de QoS des ports auxquels sont reliés le téléphone et le serveur asterisk :

— passer le port en trusted

— passer sa cos à 6

Refaire le test du point 3 de l’exercice 3 et vérifier que la qualité de la communication reste bonne pendant le transfert de données. Durant l’appel, repasser la CoS des téléphones à 0 pour observer les changements dans la qualité de la communication.

Q. 5.1 Donner une copie d’écran de la configuration du switch (show running-config) après avoir repassé la CoS du téléphone à 6.

Avant de partir, effacer la configuration des VLANs.

(11)

M4205 — TÉLÉPHONIE SURIP 2021–2022 TP 4 — MISE EN ŒUVRE DUNE ARCHITECTURE DE TÉLÉPHONIE

TP 4 — Mise en œuvre d’une architecture de téléphonie

Le but de ce TP est de réaliser une architecture de téléphonie répartie sur plusieurs sites et d’étudier l’utilisation de protocoles de service comme DHCP, DNS, ou FTP dans le cas de la téléphonie sur IP. Le TP est à réaliser en binôme sur trois PCs sur lesquels on chargera un système debian (version 9 ou supérieure). Nous mettrons en œuvre l’architecture suivante :

dhcp

tel. 6756i

dns asterisk

eth1

eth1 eth1

domainert1.edu

dhcp

tel. 6756i

dns asterisk

eth1

eth1 eth1

domainert2.edu

Toutes les machines seront sur le réseau 10.21.0.0/16. Chaque groupe administrera le domaine rtN.edu(avecN= numéro de groupe). Les rôles des différentes machines sont les suivants :

— La machine dhcp permettra d’attribuer une configuration IP au téléphone 6757i.

— La machine dns sera le serveur DNS du domainertN.edu. On y installera également linphone pour réaliser des tests.

— La machine asterisk sera le serveur asterisk du domainertN.edu. Elle jouera également le rôle de serveur FTP pour que le 6757i puisse automatiquement télécharger certains fichiers de configuration au démarrage.

Exercice 1 — Travail préliminaire

1 Installer les paquets suivants :

— sur dhcp : wireshark, isc-dhcp-server

— sur dns : wireshark, bind9 (serveur DNS), linphone

— sur asterisk : wireshark, asterisk, tftpd-hpa 2 Sur asterisk : lancer la CLI asterisk (asterisk -rv).

Dans la suite, ne pas oublier de forcer asterisk à relire les fichiers de configuration en cas de modification en tapant les commandes suivantes dans la CLI :

— Après modification desip.conf:sip reload

— Après modification deextensions.conf:dialplan reload

3 Réaliser le câblage de la figuresans, pour l’instant, mettre le 6757i sous tension, ni relier les switchs entre eux.

4 Désactiver les interfaces eth1 des 3 machines.

5 Attribuer à chacune de ces interfaces l’adresse IP suivante :

— asterisk : 10.21.N.101/16

— dhcp : 10.21.N.102/16

— dns : 10.21.N.103/16

6 Restaurer votre sauvegarde du TP 1 à la racine du système de fichiers :

$ cd /

$ t a r x z f a s t e r i s k . t g z

7 Modifier les fichiers asterisk pour que le linphone et le 6757i aient les numéro N01 et N02 respectivement.

8 Sur dns : lancer linphone et enregistrer l’utilisateur.

9 Vérifier dans la CLI que l’enregistrement s’est bien passé (sip show peers).

Exercice 2 — Mise en service des téléphones 6757i via DHCP et FTP

Au démarrage, le téléphone 6757i va dans un premier temps obtenir une configuration IP auprès d’un serveur DHCP.

Il va ensuite contacter un serveur FTP (asterisk dans notre architecture) afin de pouvoir télécharger certains fichiers de configuration. Les fichiers de configuration téléchargés contiendront, par exemple, l’adresse IP et le port d’un proxy SIP, le numéro du téléphone (pour qu’il puisse s’enregistrer automatiquement au démarrage) ou la langue de l’interface du téléphone. L’identité de ce serveur FTP lui est également donnée par le serveur DHCP.

1 Configuration du serveur DHCP.

(12)

TP 4 — MISE EN ŒUVRE DUNE ARCHITECTURE DE TÉLÉPHONIE 2021–2022 M4205 — TÉLÉPHONIE SURIP

1.1 Créer un fichier de configuration du service DHCP (/etc/dhcp/dhcpd.conf) minimal permettant uniquement d’attribuer une centaine d’adresses IP à partir de 10.21.N.1 et contenant la ligne ci-dessous :

option tftp-server-name " tftp :// < a d r e s s e - I P - d e - a s t e r i s k >";

Cette ligne permet de déclarer le serveur FTP à contacter au démarrage. L’adresse IP sera automatiquement ren- voyée à tout client DHCP qui active, dans sa requête DISCOVER, l’option de demande d’un serveur FTP.

1.2 Par défaut, le serveur DHCP n’écoute sur aucune interface. Il faut modifier le paramètreINTERFACESv4du fichier /etc/default/isc-dhcp-serverafin qu’il écoute sur eth1.

1.3 Démarrer le serviceisc-dhcp-server.

2 Tout en capturant les trames, brancher le 6757i pour vérifier qu’il reçoit bien une adresse IP du serveur DHCP. Vérifier également qu’il répond aux messages ping.

Q. 2.1 Donner une copie d’écran du fichierdhcpd.confdu serveur DHCP.

Q. 2.2 Observer avec wireshark le contenu de la requête DHCP DISCOVER envoyée par le 6757i lorsque celui-ci redémarre. Les informations demandées par le téléphone au serveur DHCP se trouve dans la liste de paramètres Parameter Request List. Chacun de ces paramètres a un code.

— Quel est le code utilisé pour demander l’adresse d’un serveur TFTP ?

— Quel est le code utilisé pour demander l’adresse de serveurs NTPs ? À quoi sert un tel serveur ?

Au démarrage, le 6757i récupère plusieurs fichiers sur le serveur FTP indiqué par le serveur DHCP, parmi ceux-ci :

— aastra.cfg — fichier de configuration demandé par tous les équipements de la marque Aastra. On peut y définir certains paramètres généraux comme l’adresse et le port du serveur SIP.

— <adresse-mac-du-telephone>.cfg— fichier de configuration propre au téléphone. On peut y définir le numéro du téléphone et le login et le mot de passe permettant l’enregistrement auprès du registrar.

— lang_fr.txt— fichier avec les intitulés de menus et messages du 6757i en langue française.

Le répertoire racine du serveur FTP sur asterisk est/srv/tftp.

3 Configuration du serveur FTP.

3.1 Créer dans le répertoire/srv/tftpun fichieraastra.cfgayant la structure suivante :

# mode d ’ u t i l i s a t i o n de SIP ( 0 = s t a n d a r d ) sip mode : 0

# IP + p o r t du proxy e t du r e g i s t r a r sip proxy ip : < a d r e s s e - i p - d e - a s t e r i s k >

sip proxy port : 5060

sip r e g i s t r a r ip : < a d r e s s e - i p - d e - a s t e r i s k >

sip r e g i s t r a r port : 5060

# pour f i x e r l a l a n g u e du t é l é phone time zone name : F R - P a r i s

tone set : Fr ance

l a n g u a g e : 1

l a n g u a g e 1 : l a n g _ f r . txt

3.2 Créer dans le répertoire/srv/tftpun fichier<adresse-mac-du-telephone>.cfg(sans les : et avec les carac- tères alphabétiques en majuscules) ayant la structure suivante :

sip screen name : < nom-qui-s ’ a f f i c h e - s u r - l e - t é l é phone >

sip d i s p l a y name : < nom-qui-s ’ a f f i c h e - c h e z - l ’ a u t r e - q u a n d - o n - a p p e l l e >

sip user name : < c o m p t e - p o u r - a u t h e n t i f i c a t i o n >

sip auth name : < c o m p t e - p o u r - a u t h e n t i f i c a t i o n >

sip p a s s w o r d : < m o t - d e - p a s s e - p o u r - a u t h e n t i f i c a t i o n >

Les paramètressip user nameetsip auth namecorrespondent, dans le fichiersip.confdu serveur asterisk, au nom de la section (entre crochets) qui déclare le téléphone 6757i.

3.3 Toujours dans le répertoire/srv/tftp, télécharger le fichierlang_fr.txtdisponible ici :

http://lipn.univ-paris13.fr/~evangelista/cours/M4205/TP4/lang_fr.txt 3.4 Démarrer le servicetftpd-hpa.

4 Redémarrer le 6757i en mode usine (clef à molettes→Menu Admin. (mot de passe = 22222)→Paramètres usine) afin qu’il télécharge les fichiers de configuration.

5 Vérifier que le nom choisi dans le fichier de configuration du téléphone s’affiche sur le 6757i.

6 Tester en passant des appels entre le softphone et le 6757i dans les deux sens.

Q. 2.3 Donner un copie d’écran du fichieraastra.cfg.

Q. 2.4 Donner un copie d’écran du fichier<adresse-mac-du-telephone>.cfg.

(13)

M4205 — TÉLÉPHONIE SURIP 2021–2022 TP 4 — MISE EN ŒUVRE DUNE ARCHITECTURE DE TÉLÉPHONIE

Exercice 3 — Mise en place des serveurs de noms

1 Relier maintenant votre switch au switch d’un autre binôme. Il faut que cet autre binôme ait d’abord terminé l’exercice précédent.

2 Modifier vos fichiers asterisk pour que les numéros et adresses IP et numéros qui y apparaissent soient cohérents avec notre plan d’adressage et de numérotation.

3 Tester en passant des appels entre les téléphones des deux binômes.

Actuellement les serveurs asterisk distants sont référencés dansextensions.confpar leurs adresses IP. En pratique, on utilise plutôt le nom du domaine SIP. Il faut pour cela que chaque domaine de notre réseau (rt1.edu,rt2.edu, . . . ) ait un serveur DNS permettant de renseigner les autres serveurs SIP sur le nom et l’adresse IP du serveur SIP de son domaine.

Nous allons pour cela procéder en deux temps. Dans un premier temps, nous allons configurer le serveur DNS du domaine afin de pouvoir renseigner les serveurs asterisk des autres réseaux. Puis, dans un second temps, nous allons modifier le serveur asterisk afin qu’il utilise des noms de domaine plutôt que des adresses IP.

4 Configuration du serveur DNS

4.1 Créer un fichier/etc/bind/named.conf(le supprimer au préalable s’il existe) comme suit :

— L’optionrecursion yesdoit être utilisée afin que le serveur accepte les requêtes récursives.

— Le fichier doit définir deux zones : la zone sur laquelle le serveur fait autorité et la zone du binôme auquel vous êtes reliés.

— Le serveur doit être déclaré comme maître (type master) pour sa zone et comme relais (type forward) pour la zone de l’autre binôme.

— Enfin, le fichier de sa zone doit être/var/named/rtN.edu.

Remarque. En situation réelle, il ne serait pas nécessaire de déclarer les autres zones car le DNS obtiendrait l’adresse IP des DNS de ces zones directement auprès du serveur de plus haut (le DNS deedu.dans notre cas).

4.2 Créer le fichier de zone/var/named/rtN.edudonnant les informations DNS de votre zone :

— Le nom et l’adresse IP du serveur DNS de la zone.

— Une description textuelle de la zone.

— Le nom et l’adresse IP du serveur SIP de la zone (voir le cours).

4.3 Démarrer le servicebind9.

5 Sur asterisk : désactiver eth0 puis modifier le fichier/etc/resolv.confafin que dns devienne le serveur DNS du serveur asterisk. (Il est nécessaire de désactiver eth0 car sinon, le client DHCP associé à eth0 écrase périodiquement ce fichier avec les informations DNS fournies par le serveur DHCP de l’IUT.)

6 Sur asterisk : tester en interrogeant le serveur DNS sur le nom du serveur SIP+UDP de la zone :

$ h o s t − t SRV _ s i p . _udp . rtN . edu .

7 Modification du serveur asterisk

7.1 Modifier, dansextensions.conf, l’extension qui vous permet de router les appels vers le serveur SIP de l’autre binôme en changeant l’adresse IP de ce serveur par son nom de domaine.

7.2 Ajouter dans la sectiongeneraldesip.confle paramètre ci-dessous qui active la recherche DNS :

srvlookup= yes

8 Tester en passant des appels entre téléphones de réseaux distincts.

Q. 3.1 Donner une copie d’écran du fichiernamed.conf.

Q. 3.2 Donner une copie d’écran du fichierrtN.edu.

Q. 3.3 Donner une copie d’écran du fichierextensions.conf.

Q. 3.4 Observer, avec wireshark, les échanges DNS ayant lieu lors d’un appel entre deux téléphones de réseaux dis- tincts : quels sont les messages DNS échangés entre le serveur Asterisk et son serveur DNS ? Donner des copies d’écran des messages DNS capturés.

(14)

TP 5 — SIP, RTPETNAT 2021–2022 M4205 — TÉLÉPHONIE SURIP

TP 5 — SIP, RTP et NAT

Le but de ce TP est d’étudier les problèmes liés à l’utilisation de la translation d’adresses dans le cas de la téléphonie sur IP et de voir une solution proposée par Asterisk pour résoudre ce problème. Le TP est à réaliser en binôme sur trois PCs sur lesquels on chargera un système debian (version 9 ou supérieure). Nous mettrons en œuvre l’architecture ci-dessous :

S

R

linphone asterisk

eth0 : 1.2.3.1

eth1 : 10.21.1.254

eth1 : 10.21.1.1 eth1 : 10.21.1.100 Réseau 10.21.1.0/24

R

linphone asterisk

eth0 : 1.2.3.2

eth1 : 10.21.2.254

eth1 : 10.21.2.1 eth1 : 10.21.2.100 Réseau 10.21.2.0/24 Réseau 1.2.3.0/24

Chaque groupe administrera le réseau 10.21.N.0/24 (avec N = numéro de groupe) connecté au réseau 1.2.3.0/24 via le routeur R qui fera également office de passerelle NAT. Chaque binôme travaillera avec un autre binôme.

Exercice 1 — Travail préliminaire

1 Installer les paquets suivants :

— Sur R : wireshark.

— Sur linphone : wireshark, linphone.

— Sur asterisk : wireshark, asterisk.

2 Réaliser le câblage de la figure en introduction.

3 Restaurer sur la machine asterisk votre sauvegarde du TP 1.

4 Désactiver les deux interfaces (eth0 et eth1) des trois machines.

5 Attribuer les adresses IP aux interfaces comme indiqué sur la figure.

6 Modifier le fichierextensions.confpour que votre linphone ait le numéro N01.

7 Enregistrer le linphone.

Exercice 2 — Mise en place du routage

Nous allons maintenant configurer les tables de routage pour permettre les communications entre différents réseaux.

1 Sur linphone et asterisk : ajouter une route par défaut vers R. Pour rappel, la commande ci-dessous permet d’ajouter une route par défaut :

$ r o u t e add d e f a u l t gw < i p − r o u t e u r >

2 Sur R : ajouter une route vers le réseau (privé) du binôme auquel vous êtes connectés. Pour rappel, la commande ci-dessous permet d’ajouter une route :

$ r o u t e add − n e t < i p − r e s e a u − d e s t i n a t i o n > netmask < m a s q u e − r e s e a u − d e s t i n a t i o n > gw < i p − r o u t e u r >

3 Sur R : modifier avec la commandesysctlle paramètre systèmenet.ipv4.ip_forwardpour activer le routage.

4 Vérifier avec ping que les machines peuvent bien communiquer avec les autres réseaux.

Q. 2.1 Donner une copie d’écran des tables de routage de asterisk et R.

5 Modifier vos fichiers asterisk pour que les numéros et adresses IP et numéros qui y apparaissent soient cohérents avec notre plan d’adressage et de numérotation (vérifier l’adresse IP du serveur asterisk et le numéro de téléphone de l’autre binôme).

6 Tester en passant des appels entre les téléphones des deux binômes.

(15)

M4205 — TÉLÉPHONIE SURIP 2021–2022 TP 5 — SIP, RTPETNAT

Exercice 3 — Mise en place de la translation d’adresse

Nous allons, dans cet exercice, mettre en place sur R la translation d’adresses afin de masquer les adresses privées dans les paquets allant sur le réseau public (1.2.3.0/24). Pour simplifier, on mettra uniquement en place de la translation d’adresses (pas de translation de port).

Nous utiliserons pour cela l’outil iptables qui permet également de faire du filtrage (voir cours de sécurité).

Les différentes règles iptables (de filtrage ou de translation d’adresse) sont placées dans deschaînes. Une chaîne est une séquence de règles à appliquer sur un paquet dans un contexte particulier. Dans le cas de la translation d’adresses, deux chaînes sont utilisées :

— PREROUTING — modification de la partie destination du paquet (IP et/ou port) avant le routage du paquet

— POSTROUTING — modification de la partie source du paquet (IP et/ou port) après le routage du paquet

On utilise donc la chaîne POSTROUTING lorsqu’un paquet sort du réseau privé et qu’on veut substituer l’IP source par l’IP publique ; et la chaîne PREROUTING lorsqu’un paquet entre dans le réseau privé et qu’on veut l’envoyer vers une IP précise (p.ex., si on veut autoriser les paquets HTTP à entrer sur le réseau privé et les rediriger vers l’IP privée du serveur web).

Pour ajouter une règle de translation d’adresse la syntaxe d’utilisation d’iptables est la suivante :

$ i p t a b l e s − t n a t −A <cha î ne > < c o n d i t i o n s > − j < t y p e − d e − n a t > −−to <@ip>

avec :

— <chaîne>= PREROUTING ou POSTROUTING

— <conditions>: voir le manuel

— <type-de-nat>= SNAT (si<chaîne>= POSTROUTING) ou DNAT (si<chaîne>= PREROUTING)

— <@ip>= adresse IP de substitution

Toutes les commandes iptables devront être écrites dans un scriptfw.sh.

1 Écrire une première commande iptables permettant de supprimer toutes les règles de translation d’adresse (-F= flush) :

$ i p t a b l e s − t n a t −F

2 Ajouter une règle iptables permettant de substituer dans tout paquet sortant du réseau privé l’adresse IP source (privée) par l’adresse IP publique de R (1.2.3.N).

3 Exécuter le scriptfw.sh.

À partir de maintenant, les machines ne connaissent plus les adresses privées des machines des autres réseaux mais uniquement leurs adresses publiques. Par conséquent, nous allons supprimer toutes les références aux adresses privées distantes dans la configuration actuelle.

4 Supprimer dans la table de routage de R la route vers le réseau privé de l’autre binôme.

5 Modifier dans le fichierextensions.confdu serveur asterisk les adresses privées par les adresses publiques.

6 Vérifier qu’un ping depuis linphone vers l’IP publique du routeur d’un autre groupe routeur fonctionne toujours et qu’un ping vers l’IP privée d’une machine d’un autre réseau ne fonctionne plus.

7 Vérifier avec wireshark que la translation d’adresse a bien lieu au niveau de R lors d’un ping de linphone vers une IP publique.

8 Demander à un autre groupe d’initier un appel vers votre softphone. Le téléphone ne devrait pas sonner.

Q. 3.1 Observer avec wireshark, au niveau de la passerelle NAT lorsque un autre groupe tente d’appeler votre softphone.

Que voit-on ?

9 Ajouter une règle iptables permettant de rediriger le trafic SIP entrant vers asterisk.

10 Ré-exécuter le scriptfw.sh.

Q. 3.2 Donner le contenu du fichierfw.sh.

11 Demander à un autre groupe d’initier un appel vers votre softphone pour vérifier que, maintenant, le téléphone sonne.

12 Décrocher, et vérifier qu’aucun son n’est audible. Aucun flux RTP ne doit être observé entre les softphones.

Q. 3.3 Observer avec wireshark le contenu SDP d’un message INVITE reçu lorsqu’un autre téléphone tente de vous appeler. Quelle ligne de ce contenu permet d’expliquer pourquoi les paquets RTP envoyés ne peuvent pas arriver à destination ?

Exercice 4 — Solution au problème du NAT avec Asterisk

Une solution proposée par asterisk au problème que nous avons observé est de faire transiter le flux RTP par le serveur asterisk. Au lieu que les paquets RTP soient directement échangés entre les linphones, on rajoute un (ou des) intermédaire(s) : le(s) serveur(s) asterisk.

(16)

TP 5 — SIP, RTPETNAT 2021–2022 M4205 — TÉLÉPHONIE SURIP

En procédant de cette manière on peut identifier un intervalle de ports UDP qui seront utilisés par le serveur asterisk pour le flux RTP. Ceci permet ensuite de modifier le comportement de la passerelle NAT afin qu’elle redirige tout le flux RTP entrant (identifié par un port UDP appartenant à l’intervalle défini) directement vers le serveur asterisk. C’est ensuite au serveur asterisk de rediriger le flux vers la bonne IP et le bon port sur son réseau privé.

Le fonctionnement du serveur asterisk lors de l’envoi d’un paquet RTP du softphone vers le réseau public peut alors être résumé à l’aide de la figure ci-dessous :

réseau privé

asterisk : 10.21.N.100

NAT

réseau public

règle : paquet entrant avec port dest. [8001,9000]redirigé vers 10.21.N.100 port src = 12797

port src = 8027

— Le softphone envoie d’abord le paquet RTP au serveur asterisk (au lieu de l’envoyer directement au destinataire).

— Asterisk relaie le paquet RTP après avoir modifié le port source par un port dans l’intervalle[8001,9000] qui est l’intervalle des ports autorisés au niveau de la passerelle NAT.

1 Ajouter les 3 lignes ci-dessous dans la sectiongeneraldu fichiersip.confafin d’indiquer au serveur asterisk son IP publique et l’IP de son réseau privé.

nat= yes

externip= < i p - p u b l i q u e - d u - r é seau >

localnet= < i p - p r i v é e- du-r é seau >/ < m a s q u e - d u - r é s e a u - p r i v é >

Dans le fichierrtp.confd’asterisk les paramètresrtpstartetrtpenddéfinissent l’intervalle des ports UDP utilisés par asterisk pour le flux RTP. Pour chaque communication avec l’extérieur, asterisk choisira un port dans cet intervalle.

2 Modifier (ou ajouter) ces paramètres afin d’avoir un intervalle d’une centaine de ports pour le flux RTP.

3 Fixer ànola valeur des paramètresdirectmediaetdirectrtpsetupdanssip.conf. Ceux-ci déterminent si le flux RTP va directement entre les deux UAs mis en relation par le serveur asterisk (yes) ou s’il passe par le serveur (no).

4 Redémarrer le serveur asterisk.

5 Dans le fichierfw.shde R, ajouter une règle iptables permettant de rediriger vers asterisk le trafic UDP destiné à un des ports de l’intervalle choisi au point 2.

6 Ré-exécuter le scriptfw.sh.

7 Vérifier qu’un appel passe bien entre deux réseaux privés.

Q. 4.1 Quels sont les inconvénients de cette solution ?

Q. 4.2 Lors d’un appel entre deux réseaux privés différents, quelles différences observe-t-on dans le contenu SIP du message INVITE avant et après le relais de ce message par asterisk ? (Ne pas regarder le premier message INVITE envoyé par linphone : celui-ci ne contient pas d’information d’authentification et est rejeté par asterisk.

Ensuite linphone renvoie un message INVITE et celui-ci contient son mot de passe chiffré.) Q. 4.3 Donner le contenu du fichierfw.sh.

Références

Documents relatifs

Lorsque tous les bits de l'hostid sont égaux à 1, on est en présence non pas d'une adresse d'hôte mais d'une adresse de diffusion dirigée (direct broadcast) c'est à dire un message

On peut remarquer que le nombre maximum d'adresses d'hôtes disponibles correspond à l'espace d'adressage du sous-réseau moins deux.. C'est parce que la première adresse désigne

Les deux premiers octets étant compris dans la partie réseau, ils restent inchangés?. Le quatrième octet (40) étant compris dans la partie hôte, il suffit de le remplacer

Donner pour le routeur, l’adresse privée qui lui permet de communiquer avec le superviseur sur internet ainsi que l’adresse publique qui lui permet de communiquer avec le matériel de

Donner pour le routeur, l’adresse privée qui lui permet de communiquer avec le superviseur sur internet ainsi que l’adresse publique qui lui permet de communiquer avec le matériel de

Une adresse IP permet de : q faciliter la maintenance q augmenter la taille du réseau q simplifier l'adressage.. q connaître le nombre de machines sur

Une adresse IP permet de : q faciliter la maintenance q augmenter la taille du réseau q simplifier l'adressage.. q connaître le nombre de machines sur

Exemple : 192.145.56.255 est une adresse de classe C dont la partie réservée à l'hostid est égale à 255 donc pour laquelle tous les bits sont à 1, on est donc en présence d'un