TELEFONIA INTERNETOWA

Transkrypt

TELEFONIA INTERNETOWA
Politechnika Poznańska
Wydział Elektroniki i Telekomunikacji
Katedra Sieci
Telekomunikacyjnych i Komputerowych
TELEFONIA INTERNETOWA
Laboratorium
TEMAT ĆWICZENIA
INSTALACJA I PODSTAWY
SERWERA ASTERISK
Poznań 2011
LABORATORIUM TELEFONII VOIP
Temat ćwiczenia:
Sygnalizacja IAX
Cel ćwiczenia:
Wykonanie połączenia w oparciu o sygnalizację IAX. Połączenie
serwerów Asterisk za pomocą sygnalizacji IAX
I. Wstęp teoretyczny
IAX (ang. The Inter-Asterisk Exchange Protocol) jest, podobnie jak używany wcześniej
SIP, protokołem sygnalizacyjnym dla sieci VoIP. Stworzony został w celu łączenia central
Asterisk, jednak zdobywa coraz większą popularność jako protokół służący do łączenia telefonów. Obecnie stosowana jest wersja druga protokołu. Główną różnicą pomiędzy IAX
i innymi grupami protokołów sygnalizacyjnych jest to, że IAX nie korzysta z protokołu RTP
do przesyłania danych. Zamiast tego posiada on swój własny sposób pakietyzacji zakodowanego głosu.
Implementacja IAX jest prostsza i w porównaniu do SIP czy H.323 w mniejszym stopniu
obciąża aplikacje. Protokół ten jest przeznaczony tylko dla aplikacji telefonicznych, podczas
gdy inne protokoły, takie jak SIP, zawierają znacznie więcej rozszerzeń. Ponadto IAX jest
odporny na NAT. Dzięki temu dziesiątki czy nawet setki równoczesnych połączeń spoza firewalla będą działać poprawnie.
Zazwyczaj protokoły sygnalizacyjne korzystają z kilku portów TCP lub UDP do: przeprowadzenia rejestracji, sygnalizowania połączenia, transmisji głosu, rozłączenia. IAX obsługuje
wszystkie te funkcje, wykorzystując pojedynczy port UDP. Funkcja danego pakietu rozróżniana jest dzięki nagłówkom i metadanym, które zawarte są w każdym pakiecie.
Do wykonania połączenia opartego o protokół IAX zostanie użyty program Zoiper,
a dokładniej jego darmowa wersja Zoiper Classic. Program jest łatwy w obsłudze. Główne
okno programu przedstawiono na rysunku 1.
2
Rysunek 1. Okno główne programu Zoiper
II. Przebieg ćwiczenia
1. Stworzenie użytkowników IAX
Ustawienie plików konfiguracyjnych tak, aby możliwe było wykonanie połączenia przez
protokół IAX jest podobne do tego w przypadku sygnalizacji SIP. Również trzeba stworzyć
rozszerzenia i dodać odpowiednie wpisy w planie połączeń. Należy otworzyć plik iax.conf
i przejrzeć, co się w nim znajduje. Następnie należy utworzyć na końcu pliku przynajmniej
dwóch użytkowników według przykładowego schematu:
[uzytkownik1]
callerid=imie nazwisko
username=uzytkownik
type=friend
auth=md5
notransfer=yes
context=users
disallow=all
allow=gsm
allow=ulaw
allow=alaw
secret=1234
Należy pamiętać o przeładowaniu pliku konfiguracyjnego poleceniem iax reload.
2. Konfiguracja programu Zoiper
Aby skonfigurować program Zoiper należy kliknąć na ikonkę znajdującą się po prawej
stronie okna głównego, a następnie wybrać opcję Add new IAX account. Wpisać nazwę nowego konta (może być dowolna). Gdy konto zostanie utworzone należy podać adres IP serwera Asterisk, nazwę użytkownika taką samą jak nazwa użytkownika (username) w pliku
3
iax.conf oraz hasło (secret). W pozostałych polach należy wpisać nazwę oraz numer użytkownika. Wartości te będą wysyłane do adresata rozmowy.
Jeśli konfiguracja została przeprowadzona prawidłowo oraz jeśli użytkownik istnieje
w pliku iax.conf, to powinna nastąpić rejestracja. Status rejestracji jest wyświetlany obok nazwy użytkownika w polu Account.
3. Konfiguracja dialplanu
Aby móc wykonać połączenie należy jeszcze dokonać odpowiednich wpisów w pliku
extensions.conf. Wystarczy wykorzystać aplikację Dial() tak jak w przypadku połączeń opartych o sygnalizację SIP. Poniższe wpisy powinny znajdować się w kontekście [users]:
exten=>3000,1,Dial(IAX2/uzytkownik1)
exten=>4000,1,Dial(IAX2/uzytkownik2)
Należy pamiętać o przeładowaniu planu połączeń poleceniem dialplan reload.
4. Wykonanie połączenia
Wykonując połączenie proszę obserwować wiadomości CLI Asteriska. Należy pamiętać,
aby ustawić parametr verbosity na przynajmniej 3, przez uruchomienie CLI poleceniem asterisk –vvvr. Wnioski z obserwacji zapisać w sprawozdaniu.
5. Analiza pakietów
Za pomocą programu Wireshark należy przechwycić pakiety podczas krótkiej rozmowy.
Po przeanalizowaniu pakietów proszę odpowiedzieć na pytania.
Pytanie 1. Jakie wiadomości sygnalizacyjne wysyłane są podczas inicjalizacji rozmowy?
Pytanie 2. Między jakimi komputerami przekazywane są pakiety (sygnalizacja i dane)?
Czy serwer Asterisk bierze udział w tym transferze?
Pytanie 3. Jaki kodek został użyty?
Pytanie 4. Jakie dane niesie ze sobą nagłówek datagramu IAX?
Następnie proszę zmienić parametr notransfer użytkowników w pliku iax.conf na
notransfer=no. Ponownie wykonać rozmowę i przechwycić pakiety.
Pytanie 5. Czy pakiety są wysyłane między komputerami w taki sam sposób jak
w poprzednim przypadku? Jak działa parametr notransfer? Jaki jest jego odpowiednik
w przypadku sygnalizacji SIP?
4
Aplikacja Zoiper posiada możliwość wyłączenia lub włączenia obsługi różnych kodeków
audio. W zakładce Audio codecs należy pozostawić włączony tylko jeden z ustawionych
w pliku iax.conf kodeków (GSM, u-law lub a-law). Na drugim komputerze proszę ustawić
inny kodek niż na pierwszym. Alternatywnie można zmienić wpisy w pliku iax.conf tak, aby
dla danego użytkownika dostępny był tylko jeden kodek (parametr allow).
Pytanie 6. Po wykonaniu rozmowy i przechwyceniu pakietów należy zauważyć jak,
w porównaniu do poprzednich przypadków, przesyłane są pakiety oraz jakie wiadomości
ukazują się w CLI Asteriska podczas nawiązywania połączenia. Spostrzeżenia zapisać
w sprawozdaniu.
6. Połączenie serwerów Asterisk
Protokół IAX daje sobie dobrze radę z sygnalizacją i przesyłaniem danych w połączeniach
urządzeń końcowych z serwerem Asterisk. Jednakże pierwotnie został on stworzony do łączenia samych serwerów Asterisk. W ćwiczeniu tym pokazane zostanie jak wykonać połączenie między dwoma softphonami podłączonymi do różnych serwerów Asteriska. Wymagana będzie współpraca przynajmniej dwóch grup laboratoryjnych. Schemat tworzonej sieci
został przedstawiony na rysunku 2.
Konfiguracji serwerów dokonuje się w pliku iax.conf. Poniżej przedstawione jest znaczenie poszczególnych opcji, które będą wykorzystywane w konfiguracji:

Sekcja, w której dokonuje się konfiguracji, powinna nazywać się tak jak nazwa
drugiego serwera. W pliku konfiguracyjnym iax.conf serwera 1, sekcja będzie nazywała się serwer2;

Parametr type ustawiony na wartość friend pozwala na odbieranie i wykonywanie
połączeń;

Wartość parametru username powinna być ustawiona na nazwę drugiego serwera;

Hasło ustawiane w polu secret powinno być takie same na obydwu serwerach.
Auth może być ustawione na plaintext lub bardziej bezpieczne md5;

Parametr host jest adresem IP drugiego serwera. Dla serwera 1, w przypadku adresów IP przedstawionych na rysunku 2., będzie to 150.254.29.210;

Parametr context wskazuje, do którego kontekstu mają być kierowane połączenia
przychodzące z drugiego serwera;

Parametr peercontext zawiera nazwę kontekstu na drugim serwerze, który ma
przyjmować połączenia od serwera 1. Dzięki temu zabiegowi upraszcza się skład-
5
nia komendy Dial(). Odpowiadające konteksty na obydwu serwerach można nazwać tak samo.

Parametr qualify ustawiony na yes pozwala serwerom na wzajemne odpytywanie
się, dzięki czemu wiedzą one o swojej gotowości;

Ustawienie parametru trunk na yes zapewnia oszczędność przepływności w sieci,
jeśli wykonywane jest więcej połączeń między serwerami.
Użytkownik 1 – nr 110
Użytkownik 3 – nr 210
Serwer 1
Serwer 2
IP: 150.254.29.200
IP: 150.254.29.210
Użytkownik 2 – nr 120
Użytkownik 4 – nr 220
Rysunek 2. Schemat sieci łączącej dwa serwery Asterisk
W pliku konfiguracyjnym iax.conf należy stworzyć kontekst odpowiadający nazwie drugiego serwera. Dla serwera 1 wygląda to w następujący sposób:
[serwer2]
type=friend
username=serwer1
secret=password123
auth=plaintext
host=150.254.29.210
context=fromiax
peercontext=fromiax
qualify=yes
trunk=yes
Następnym krokiem jest utworzenie odpowiednich wpisów w pliku extensions.conf. Na
obydwu serwerach wystarczy utworzyć konteksty fromiax, w których lądować będą połączenia przychodzące z drugiego serwera. Dla serwera 2 kontekst ten wygląda następująco:
[fromiax]
exten=>210,1,Dial(IAX2/użytkownik3)
6
Ostatnim krokiem jest dodanie funkcji Dial() do serwera dzwoniącego. W pliku extensions.conf serwera 1, w kontekście [users] należy dodać następujący wpis:
[users]
exten=>2210,1,Dial(IAX2/serwer2/210)
Po wybraniu numeru 2210 na telefonie zarejestrowanym na serwerze 1, połączenie zostanie przekierowane do rozszerzenia 210 w kontekście [fromiax] na serwerze 2. Z kolei to rozszerzenie zadzwoni do użytkownika 3 zarejestrowanego na serwerze 2.
Zadanie 1. Należy tak skonfigurować serwery, aby możliwe było wykonywanie połączeń
między nimi w obydwie strony. Należy zaobserwować, jakie wiadomości ukazują się na CLI
Asteriska z ustawionym parametrem verbosity na 3 na obydwu serwerach. Działający system
przedstawić prowadzącemu.
Zadanie dodatkowe Utworzyć system składający się z trzech lub więcej serwerów Asteriska. Każdy użytkownik powinien mieć możliwość zadzwonienia do wszystkich innych użytkowników.
7