Szukaj

Kamailio część 1: Instalacja Kamailio 6 na Debian 12 (z obsługą MySQL)

Kamailio część 1: Instalacja Kamailio 6 na Debian 12 (z obsługą MySQL)

Kamailio to jeden z najpopularniejszych serwerów SIP (Session Initiation Protocol) typu open-source, wykorzystywany do obsługi połączeń VoIP (Voice over IP) i komunikacji w czasie rzeczywistym. Kamailio, wcześniej znany jako OpenSER, pozwala na zaawansowaną kontrolę nad połączeniami SIP, ich routingiem i bezpieczeństwem. Dzięki swojej wysokiej skalowalności i elastyczności jest wykorzystywany w systemach o bardzo dużej liczbie użytkowników, takich jak dostawcy usług VoIP, platformy komunikacyjne, a także w firmowych infrastrukturach telekomunikacyjnych.

Kamailio jest napisane w języku C i może obsługiwać miliony połączeń jednocześnie, co czyni go odpowiednim wyborem do dużych wdrożeń. Oferuje zaawansowane funkcje takie jak autentykacja, kontrola jakości połączeń, routing oparty na regułach, integracja z bazami danych, a także wsparcie dla protokołów takich jak WebSocket, XMPP, i inne.

W tej serii wpisów omówię krok po kroku jak zainstalować i skonfigurować Kamailio, byś mógł wykorzystać pełen potencjał tego potężnego narzędzia

Na początek zajmijmy się instalacją Kamailio 6 na systemie Debian 12 z obsługą MySQL.

Spis treści

1) Wymagania wstępne

Tutaj sprawa jest dość prosta, bo jedynym wymaganiem jest właściwie instalacja systemu operacyjnego. Instalując Debiana 12 pamiętaj o ustawieniu statycznego adresu IP.

Jeśli o tym zapomniałeś na etapie instalacji możesz po prostu zedytować plik /etc/network/interfaces. Jego zawartość pewnie będzie zbliżona do poniższej.

W momencie tworzenia tego posta nasz Debian domyślnie zainstalowałby Kamailio w wersji 5.6.3. Możemy to sprawdzić za pomocą polecenia:

				
					apt search kamailio
				
			

Jako, że w styczniu 2025 ogłoszono wydanie Kamailio w wersji 6.0.0 instalujemy nowszą wersję oprogramowania (https://www.kamailio.org/w/2025/01/kamailio-v6-0-0-released/). Najpierw jednak musimy dodać do naszego systemu operacyjnego nowe repozytorium.

W tym celu najpierw zainstalujemy kilka pakietów:

				
					apt -y install gpg curl
				
			

Następnie dodamy klucz gpg Kamailio do naszego pęka kluczy i stworzymy plik kamailio.list z danymi nowego repozytorium. 

				
					curl -s https://deb.kamailio.org/kamailiodebkey.gpg | gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/kamailiodebkey.gpg --import && chmod 644 /usr/share/keyrings/kamailiodebkey.gpg
echo "deb [signed-by=/usr/share/keyrings/kamailiodebkey.gpg] http://deb.kamailio.org/kamailio60 bookworm main" | tee -a /etc/apt/sources.list.d/kamailio.list
				
			
Podpowiedź

Oczywiście możesz też zainstalować inną wersję Kamailio zmieniając w pliku /etc/apt/sources.list.d/kamailio.list kamailio60 na np. kamailio58

Po dodaniu nowego repozytorium odświeżmy informacje.

				
					apt update
				
			

Od teraz polecenie apt search kamailio znajdzie nam najnowszą wersję oprogramowania.

2) Instalacja Kamailio

Skoro repozytorium już jest gotowe, możemy zainstalować Kamailio za pomocą polecenia:

				
					apt -y install kamailio kamailio-mysql-modules gdb
				
			

Dzięki temu zainstalujemy zarówno samo oprogramowanie, jak i moduły do obsługi MySQL oraz kompilator gdb, który w razie potrzeby możemy wykorzystać podczas debugowania.

Po instalacji, Kamailio zostanie automatycznie uruchomione. Dla pewności upewnimy się czy nasze oprogramowanie już działa i dodamy je do autostartu.

				
					systemctl status kamailio
systemctl enable kamailio
				
			

Od teraz możesz wykorzystywać polecenia kamctl np. do monitorowania usługi.

Podpowiedź

Jeśli system nie znajduje poleceń np. kamailio czy kamctl, sprawdź swoje ścieżki systemowe $PATH i ewentualnie dodaj obsługę /usr/sbin/ w pliku /etc/profile lub $HOME/.profile.

Podpowiedź

Jeśli polecenie kamctl monitor wyrzuca błąd column: not found, nie oznacza to problemów z bazą danych, ale raczej brak polecenia column.

Jeśli polecenie which column nic nie pokazuje, doinstaluj dodatkowy pakiet:

				
					apt -y install bsdmainutils
				
			

Po wszystkim polecenie kamctl monitor powinno działać poprawnie.

 

Dla pewności możesz sprawdzić czy system nasłuchuje na porcie 5060.

3) Instalacja bazy danych MySQL

Oczywiście nic nie stoi na przeszkodzie, żeby na tym etapie pozostać i dokonywać zmian w samym pliku /etc/kamailio/kamailio.cfg. Ale jeśli planujesz wykorzystywać Kamailio jako SIP Proxy, SIP Registrar lub podobne, obsługa MySQL będzie niezastąpiona.

Zanim zainstalujemy oprogramowanie polecam wygenerować trzy bezpieczne hasła np. za pomocą strony https://www.avast.com/random-password-generator

Potrzebujemy hasła dla 3 użytkowników (ze względów konfiguracyjnych nie zalecamy stosowania w haśle znaków $ oraz "):

  • root – główny użytkownik bazy danych, który wykorzystamy do utworzenia kolejnych
  • kamailio – główny użytkownik, który będzie służył do połączenia usługi z bazą danych
  • kamailioro – opcjonalny użytkownik z uprawnieniami tylko do odczytu

Tak przygotowani możemy przystąpić to instalacji bazy.

				
					apt -y install default-mysql-server
				
			

Następnie za pomocą polecenia mysql_secure_installation wstępnie skonfigurujemy naszą bazę. W trakcie konfiguracji na wszystkie pytania możesz odpowiadać twierdzącą i ustawić wygenerowane wcześniej hasło do root’a.

				
					mysql_secure_installation
				
			

Po instalacji uruchomimy naszą nową usługę i dodamy ją do autostartu.

				
					systemctl start mysqld
systemctl enable mysqld
				
			

4) Wygenerowanie tabel Kamailio

Nic tak nie cieszy, jak gotowe skrypty! I tym razem deweloperzy Kamailio przygotowali gotowy skrypt, który utworzy nam zarówno użytkowników Kamailio (kamailio oraz kamailioro), jak i wszystkie konieczne tabele.

Zanim go uruchomimy, musimy przygotować kilka ustawień. W pliku /etc/kamailio/kamctlrc zalecamy odkomentowanie poniższych linii i wprowadzenie następujących ustawień:

  • SIP_DOMAIN – domena np. adres IP serwera
  • DBENGINE – silnik bazy
  • DBRWUSER – nazwa użytkownika z prawami do odczytu/zapisu
  • DBRWPW – hasło użytkownika z prawami do odczytu/zapisu
  • DBROUSER – nazwa użytkownika z prawami tylko do odczytu
  • DBROPW – hasło użytkownika z prawami tylko do odczytu
  • CHARSET (opcjonalnie) –  zestaw znaków do połączenia z bazą znaków np. latin1 (inaczej instalator o to zapyta)

Przykładowa zawartość pliku może wyglądać następująco:

Po wprowadzeniu zmiennych wykonujemy skrypt za pomocą ustalonego wcześniej hasła root’a (do bazy danych, nie systemu operacyjnego) zgadzając się na utworzenie wybranych tabel.

				
					kamdbctl create
				
			

Aby podpiąć utworzone tabele pod Kamailio pora na edycję głównego pliku konfiguracyjnego /etc/kamailio/kamailio.cfg. Najpierw zalecamy wykonanie jego kopii.

				
					cp /etc/kamailio/kamailio.cfg /etc/kamailio/kamailio.cfg-bak
				
			

W samym pliku /etc/kamailio/kamailio.cfg na samym porządku proponujemy dopisać następujące linie:

  • #!define WITH_MYSQL – uruchamia połączenie z MySQL
  • #!define WITH_AUTH – uruchamia możliwość autoryzacji
  • #!define WITH_USRLOCDB – umożliwia trwałe ustalenie lokalizacji użytkownika

Ponadto w linii opisującej połączenie z bazą danych (zaczyna się od #!trydef DBURL "mysql:...), zaktualizuj informacje o danych do połączenia z bazą.

Użyty poniżej ciąg znaków "mysql://kamailio:kamailiorw@localhost/kamailio" jest w formacie: "silnik_bazy://użytkownik:hasło@adres_serwera/nazwa_bazy_danych"

Oczywiście wszystko będzie zależało od funkcjonalności i ról, które będzie uruchamiać na serwerze. W każdym przypadku polecam przejrzeć plik kamailio.cfg, który opisuje całą składnię.

Od teraz w każdym miejscu w kodzie, które korzysta ze zdediniowanego połączenia, będziesz miał możliwość przechowywać informacje w bazie danych.

Nie pozostało nam już nic innego jak tylko zrestartować usługę.

				
					systemctl restart kamailio
				
			

Od teraz możesz zacząć rejestrować konta SIP i przechowywać konfigurację w bazie danych. Żeby dodać nowego użytkownika wykonaj:

				
					kamctl add 101 password_for_101
				
			

5) Pierwsze połączenie

Skoro jesteśmy w stanie rejestrować konta SIP to nic nie stoi na przeszkodzie, żeby zalogować dwa konta SIP i wykonać pierwsze połączenie.

W tym celu dodajmy jeszcze jednego użytkownika.

				
					kamctl add 102 password_for_102
				
			

Po zarejestrowaniu obu kont możesz sprawdzić aktualnie zalogowanych użytkowników za pomocą poleceń kamctl.

				
					kamctl online # wyświetli aktualnie zalogowanych użytkowników
kamctl ul show 101 # wyświetli szczegóły lokalizacyjne dla danego konta
				
			

To takie proste! Od teraz konta 101 i 102 mogą wykonywać połączenia wewnątrz naszego środowiska.

Oczywiście tutaj zabawa się dopiero zaczyna! W kolejnym poście zobaczysz jak w Kamailio włączyć debugowanie i jakie oprogramowanie może Ci pomóc śledzić pakiety SIP.

Kolejny wpis w serii: Kamailio część 2: Uruchomienie monitorowania SIP i debugowania ruchu 

Jeżeli chciałbyś monitorować wszystko, co dzieje się na Twojej centrali, wypróbuj nasze autorskie oprogramowanie VoiperoManager.

Instalacja i konfiguracja zajmuje kilka minut, a system możesz mieć całkowicie za darmo.

Przeczytaj, co potrafi nasz system VoiperoManager w zakresie monitorowania na żywo i raportowania systemów VoIP opartych na Asterisku.

Share this post

Masz pytania lub potrzebujesz oferty?

Skontaktuj się z naszym doradcą.

Popularne wpisy

Powiązane posty

Projekt wystartował!

Monitorowanie i raportowanie Twojego serwera VoIP