2026-09-19
Установка и базовая настройка Asterisk на Ubuntu: первые SIP-номера

Установка и базовая настройка Asterisk на Ubuntu: первые SIP-номера

Asterisk — открытая платформа IP-телефонии (PBX), позволяющая поднять собственную АТС на Linux. В этой инструкции — сборка из исходников, настройка и заведение первых SIP-номеров.

Пример актуален для Asterisk 22 LTS и Ubuntu 22.04/24.04/26.04. Вместо устаревшего chan_sip используется chan_pjsip.


Подготовка сервера

apt-get update
apt install chrony
systemctl enable chrony --now

Для синхронизации времени используем chrony (ntpdate устарел и удалён из современных дистрибутивов).


Установка

Можно поставить из репозитория (apt install asterisk), но разберём сборку из исходников.

Для работы с аппаратными платами телефонии рекомендуются DAHDI (драйверы) и LibPRI (для потоковых TDM-интерфейсов). Порядок сборки: DAHDI → LibPRI → Asterisk.

apt install make pkg-config linux-headers-$(uname -r)

Сборка DAHDI

wget https://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
tar -xvf dahdi-linux-complete-current.tar.gz
cd dahdi-linux-complete-*/
make
make install
make config
cd ..

Сборка LibPRI

wget https://downloads.asterisk.org/pub/telephony/libpri/libpri-1-current.tar.gz
tar -xvf libpri-*.tar.gz
cd libpri-*/
make
make install
cd ..

Установка Asterisk

Скачиваем актуальную версию:

wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-22-current.tar.gz
tar -xvf asterisk-*.tar.gz
cd asterisk-*

Ставим зависимости:

./contrib/scripts/install_prereq install
./contrib/scripts/install_prereq install-unpackaged
make distclean
./contrib/scripts/get_mp3_source.sh

Конфигурируем:

./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=/usr/lib64 
  --with-dahdi --with-pri --with-iconv --with-libcurl --with-speex

где:

  • --with-dahdi — драйверы DAHDI;
  • --with-pri — библиотека PRI;
  • --with-iconv — конвертация кодировок (нужно для русских символов);
  • --with-libcurl — извлечение данных через HTTP;
  • --with-speex — дополнительный VBR-кодек.

Полный список опций — ./configure -h.

Выбор модулей (можно оставить по умолчанию, Save & Exit):

make menuselect

Сборка и установка:

make
make install
make samples
make progdocs
make config
make install-logrotate

Создаём файл с путём к библиотекам:

vi /etc/ld.so.conf.d/asterisk.conf
/usr/lib64

Путь совпадает с опцией --libdir при конфигурации.

ldconfig

Настройка и запуск

vi /etc/asterisk/asterisk.conf
runuser = asterisk
rungroup = asterisk
defaultlanguage = ru
documentation_language = ru_RU

Создаём системного пользователя и задаём права:

useradd asterisk -m
chown -R asterisk:asterisk /var/run/asterisk
chown -R asterisk:asterisk /etc/asterisk
chown -R asterisk:asterisk /var/{lib,log,spool}/asterisk
chown -R asterisk:asterisk /usr/lib64/asterisk
chown -R asterisk:asterisk /var/log/asterisk

Проверяем конфигурацию:

asterisk -c

Ошибки запуска

  • No configured users for ARI. Отключаем ARI:
vi /etc/asterisk/ari.conf
enabled = no
  • Name or service not known. Система не разрешает имя компьютера — настройте DNS или добавьте имя в /etc/hosts.
  • No directory URL or host found. Не настроен модуль lpad.
  • PostgreSQL RealTime: Failed to connect database asterisk on 127.0.0.1. Включён модуль для PostgreSQL.
  • Failed to open /dev/dahdi/transcode. Нет оборудования DAHDI.

Причины — включённые, но неиспользуемые модули. Отключаем:

vi /etc/asterisk/modules.conf
noload => res_config_ldap.so
noload => res_config_pgsql.so
noload => codec_dahdi.so

Предупреждения при запуске

Unable to find a valid server address or name.
Process_dahdi: Ignoring any changes to ...
CEL pgsql config file missing global section.
Cel_tds module had config problems; declining load.

Отключаем модули:

noload => res_phoneprov.so
noload => app_dahdiras.so
noload => chan_dahdi.so
noload => res_pjsip_phoneprov_provider.so
noload => cel_pgsql.so
noload => cel_tds.so

Список загружаемых модулей:

ls -la /usr/lib64/asterisk/modules/

Запускаем сервис:

systemctl enable asterisk
systemctl start asterisk

Заведение первых номеров

Для первой настройки достаточно двух SIP-номеров.

Создаём контекст обработки вызова:

vi /etc/asterisk/extensions.conf
[outcalling]
exten => _XXXX,1,Dial(PJSIP/${EXTEN},,m)

Контекст outcalling для четырёхзначных номеров (XXXX) с вызовом по PJSIP.

Настраиваем SIP через PJSIP. В современных версиях Asterisk chan_sip удалён, поэтому используем pjsip.conf:

vi /etc/asterisk/pjsip.conf
[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0:5060

[1001]
type=endpoint
context=outcalling
disallow=all
allow=alaw,ulaw
auth=1001
aors=1001
callerid="1001"

[1001]
type=auth
auth_type=userpass
username=1001
password=1234

[1001]
type=aor
max_contacts=4

[1002]
type=endpoint
context=outcalling
disallow=all
allow=alaw,ulaw
auth=1002
aors=1002
callerid="1002"

[1002]
type=auth
auth_type=userpass
username=1002
password=1234

[1002]
type=aor
max_contacts=4

Секции с одинаковым именем ([1001]) но разными type — стандартный синтаксис PJSIP: endpoint, auth, aor описывают один и тот же номер.

Ключевые параметры:

  • type — тип объекта PJSIP (endpoint/auth/aor/transport);
  • context — контекст (группа правил обработки вызова);
  • disallow / allow — запрет и разрешение кодеков (alaw, ulaw — G.711);
  • password — пароль аутентификации;
  • max_contacts — лимит одновременных регистраций;
  • callerid — идентификатор звонящего.
systemctl restart asterisk

Проверка

Логи:

tail -f /var/log/asterisk/messages

Для проверки статуса абонентов:

asterisk -r
> pjsip show endpoints

Для теста используйте IP-телефон или софтфон: Zoiper (Windows/Android/iOS), Linphone и др. В настройках клиента указываем сервер (IP Asterisk), логин/пароль (1001/1234 и 1002/1234).

Пробуем позвонить с одного номера на другой.


Тонкости и подводные камни

  • chan_sip удалён — в Asterisk 22 используйте только chan_pjsip и pjsip.conf.
  • Порядок сборки — DAHDI → LibPRI → Asterisk; иначе зависимости не соберутся.
  • --libdir и ld.so.conf.d — если библиотеки в нестандартном пути, обязательно добавьте его в ld.so.conf.d/asterisk.conf и выполните ldconfig.
  • Пользователь asterisk — все каталоги АТС должны принадлежать ему, иначе сервис не стартует.
  • Неиспользуемые модули — отключайте через noload, чтобы не засорять логи ошибками.
  • Брандмауэр — откройте SIP (5060/tcp,udp), RTP (10000–20000/udp) и веб-порты при необходимости.
  • Безопасность — не оставляйте простые пароли; ограничивайте доступ к SIP по IP.

Шпаргалка

apt install make pkg-config linux-headers-$(uname -r)
# DAHDI -> LibPRI -> Asterisk
wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-22-current.tar.gz
./contrib/scripts/install_prereq install
./configure --with-dahdi --with-pri --with-iconv --with-libcurl --with-speex
make && make install && make samples && make config
useradd asterisk -m
chown -R asterisk:asterisk /etc/asterisk /var/{lib,log,spool}/asterisk
systemctl enable asterisk --now
# pjsip.conf: transport + endpoint/auth/aor для 1001/1002

Проверено на: Ubuntu 22.04/24.04/26.04 + Asterisk 22 LTS.
Дата: Сентябрь 2026.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *