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