Samouczek Asteriska: minimalna konfiguracja użytkowników/peerów SIP

Poniższa konfiguracja umożliwia tylko i wyłącznie konfigurację konieczną do rejestracji telefonu lub operatora i NIE ZAWIERA ŻADNYCH ZABEZPIECZEŃ. Jest to jedynie punkt odniesienia do dalszej konfiguracji opisanej w kolejnych postach.

1) Sekcja SIP [general]

Zanim zaczniemy rejestrować urządzenia końcowe zdefiniujmy podstawowe zmiennie, które umożliwią rejestrację urządzeń końcowych. Poniżej znajdziesz podstawową listę wraz z krótkim wyjaśnieniem.

Zmienna Opis
context=public Domyślny kontekst dla połączeń przychodzących (zamiast domyślnego "default")
bindaddr=0.0.0.0 Nasłuchuje na dowolnym adres IP na porcie UDP 5060. Możesz sprecyzować konkretny adres IP i/lub port wpisując np. bindaddr=192.168.1.200:5070. Możesz też zdefiniować adres IP oraz porty niezależnie dla UDP, TCP i TLS, określając różne wartości dla „udpbindaddr”, „tcpbindaddr” i „tlsbindaddr”.
transport=udp Domyślna metoda komunikacji. Kolejność określa podstawową domyślną metodę transportu, np. transport=udp,tcp,tls.

2) Lokalne konto SIP

Poniżej znajdziesz podstawową listę zmiennych koniecznych do rejestracji telefonu, bramki lub innego urządzenia końcowego odbierającego połączenie.

Zmienna Opis
[100] Unikalny lokalny numer (lub nazwa), na który będzie wykonane połączenie (w tym przypadku będzie to Dial(SIP/100).
type=friend Typ urządzenia końcowego. Dla urządzeń lokalnych, służących do obierania połączeń zazwyczaj będzie to 'friend'.
host=dynamic Adres IP, z którego możliwa jest rejestracja. Dla konkretnego adresu IP należy wpisać np. host=192.168.1.101
secret=TwojeSuperHaslo Hasło do rejestracji urządzenia. Czym bardziej skomplikowane tym lepiej.
context=internal Kontekst urządzenia, czyli miejsce w dialplanie, z którego startuje to urządzenie podczas wykonywania połączenia.
callerid="Moja nazwa" <100> Informacja o tym, jak się ma prezentować urządzenie. Składa się z dwóch części: "nazwa" oraz "numer". Kilka urządzeń może mieć taką samą prezentację.

3) Połączenie z zewnętrznym serwerem VOIP

Poniżej znajdziesz podstawową listę zmiennych, które umożliwią połączenie z zewnętrznym serwerem VOIP. Możesz umożliwić komunikację np. z Twoim dostawcą usług VOIP lub innym serwerem Asterisk w innej lokalizacji (celem wykonywana bezpłatnych, lokalnych połączeń między jednostkami).

W zależności od konfiguracji możliwa jest autoryzacja na kilka sposobów.

3.1) Autoryzacja za pomocą adresu IP

Tutaj sprawa jest bardzo prosta, bo do komunikacji wystarczy wskazać adres IP docelowego urządzenia.

Zmienna Opis
[CARRIER] Unikalna nazwa użytkownika, z którą nawiązujemy połączenie. Można też na nią wykonać połączenie poprzez użycia Dial(SIP/numer@nazwa) np. Dial(SIP/123456789@CARRIER)
type=peer Typ urządzenia końcowego. Dla zewnętrznych serwerów zazwyczaj będzie to 'peer'.
host=1.2.3.4 Adres IP, z którym nawiązywane jest połączenie.
port=5060 Port wykorzystywany do komunikacji z urządzeniem.

3.2) Autoryzacja za pomocą nazwy użytkownika i hasła

W tym przypadku niezbędne są dwie zmiany w pliku sip.conf.

Najpierw w sekcji [general] należy dodać ciąg rejestracyjny. Pełny wpis wydaje się dosyć skomplikowany:

register => [peer?][transport://]user[@domain][:secret[:authuser]]@host[:port][/extension][~expiry]

Najprostszym sposobem będzie następująca struktura nazwa_użytkownika:hasło@host, np.:

register => Uzytkownik:ZdalneHaslo@1.2.3.4

Następnie należy dodać urządzenie zgodnie z poniższą tabelą.

Zmienna Opis
[CARRIER] Unikalna nazwa użytkownika, z którą nawiązujemy połączenie. Można też na nią wykonać połączenie poprzez użycia Dial(SIP/numer@nazwa) np. Dial(SIP/123456789@CARRIER)
type=peer Typ urządzenia końcowego. Dla zewnętrznych serwerów zazwyczaj będzie to 'peer'.
host=1.2.3.4 Adres IP, z którym nawiązywane jest połączenie.
fromdomain=1.2.3.4 jak wyżej
defaultuser=Uzytkownik Nazwa użytkownika wykorzystywana do autoryzacji podczas wykonywania połączeń.
fromuser=Uzytkownik jak wyżej
secret=ZdalneHaslo Hasło do drugiego urządzenia (nadawane przez np. operatora) wykorzystywane do autoryzacji podczas wykonywania połączeń.

Całość w pliku (domyślnie /etc/asterisk/sip.conf) będzie wyglądała następująco.

[general]
register => CarrierUSERNAME:CarrierSECRET@1.2.3.4
context=public
bindaddr=0.0.0.0
transport=udp

[100]
type=friend
callerid="My name" <100>
host=dynamic
secret=YourSECRET
context=internal

[CARRIER_IP_AUTH]
type=peer
host=1.2.3.4
port=5060

[CARRIER_USER_AUTH]
type=peer
host=1.2.3.4
fromdomain=1.2.3.4
defaultuser=CarrierUSERNAME
fromuser=CarrierUSERNAME
secret=CarrierSECRET

Jeśli wprowadzimy w pliku rzeczywiste dane i przeładujemy moduł, w Asterisku (polecenie asterisk -r) możemy wykonać polecenia, które wyświetlą naszą konfigurację.

sip reload # przeładowanie konfiguracji
sip show peers # lista użytkowników
sip show registry # lista rejestracji do zewnętrznych central
Jeszcze raz podkreślmy, że powyższa konfiguracja kont SIP, operatorów, itp… nie zawiera żadnych reguł bezpieczeństwa. Zostaną one opisane w osobnym poście.