
1. линукс Дистрибутив Rocky 9.6 (на котором часто разворачивают серверы Asterisk)
1.1. Командная строка linux и базовые команды для взаимодействия с ней
1.1.1. Пакетный менеджер yum и атрибут к нему install для установки необходимых пакетов
1.1.2. команды cd, ls, cat для перемещения, просмотра и взаимодействия с файловой системой
1.1.3. текстовые редакторы в виде vim, nano, micro для редактирования текстовых документов
1.1.4. команда touch выполняет создание файла если его не было, а если он был то ничего не будет выполнено
1.2. Файловая система linux
1.2.1. Директория /etс хранит конфиги
1.2.1.1. /etc/asterisk /etc/DAHDI (Для подключения условно аналоговой телефонии к АТС астериск)
1.2.2. Директория /usr
1.2.2.1. /usr/lib/asterisk/modules хранит модули астериска
1.2.2.1.1. в этой директории лежат ВСЕ модули которые будут запускаться если им не будет задано другое условие (может быть причиной ошибок)
1.2.3. Директория /home, как ясно из названия домашняя директория
1.2.4. Директория /var
1.2.4.1. /lib/asterisk/moh
1.2.4.1.1. здесь все файлы озвучки
1.2.4.2. /run/asterisk
1.2.4.2.1. идентификатор процесса (используется редко можно посмотреть но навряди ли пригодится)
1.2.4.3. /spool/asterisk
1.2.4.3.1. здесь всё что связано с голосовой почтой и записями звонков
1.2.4.4. /log/asterisk
1.2.4.4.1. ВАЖНО все логи тут, если что то не так то здесь можно понять что именно
1.2.4.4.2. ПИШЕТ СВОИ ЛОГИ В ДОКУМЕНТ full ВНУТРИ ЭТОЙ ДИРЕКТОРИИ ВСЕ
1.2.5. Файлы можно "инклюдить" то есть ссылать друг на друга, полезно в случае если какой то один конфиг необходимо для удобства восприятия разбить на несколько
1.2.5.1. Директива #include
1.2.6. Шаблоны конфигураций
1.2.7. Лучше создавать директории и не кидать файлы и архивы напрямую в домашнюю (правило хорошего тона)
1.3. IPTABLES
1.3.1. это утилита командной строки, которая является частью Netfilter, встроенной в ядро Linux. Она служит межсетевым экраном (firewall) и позволяет администраторам настраивать правила для фильтрации сетевого трафика, проходящего через их систему. Это, по сути, программа, которая решает, каким пакетам можно пройти, а каким – нет.
1.3.1.1. работает, анализируя каждый сетевой пакет и сравнивая его с набором правил, заданным администратором. Если пакет соответствует какому-либо правилу, выполняется соответствующее действие (например, разрешить, заблокировать или изменить пакет).
1.3.1.1.1. Таблицы
1.3.1.2. Цепочки (Chains): Цепочки — это упорядоченные списки правил внутри каждой таблицы. Когда пакет поступает в таблицу, он проходит через определенную цепочку. Существуют предопределенные цепочки, а также можно создавать свои собственные
1.3.1.2.1. INPUT: Используется для обработки входящих пакетов, предназначенных для самой системы.
1.3.1.2.2. OUTPUT: Используется для обработки исходящих пакетов, созданных самой системой.
1.3.1.2.3. FORWARD: Используется для обработки пакетов, которые проходят через систему, но не предназначены для нее (например, трафик, проходящий через маршрутизатор).
1.3.2. существуют более современные инструменты такие как nftables или firewalld
2. Putty
3. make - утилита для автоматического определения частей какой либо программы которая показывает необходима ли перекомпиляция
3.1. в свою очередь make install распределяет комопненты по файловой системе
3.1.1. make config создает скрипты автозапуска
3.1.1.1. после make config необходимо проверить работоспособность asterisk командой systemctl start asterisk
3.1.1.2. добавляем asterisk в автозапуск, что бы в случае перезагрузки АТС не делать этого вручную командой systemctl enable asterisk
3.1.1.3. запуск консоли CLI asterisk -r asterisk -c
4. make menuselect Эта команда вызывает интерфейс выбора опций установки
4.1. отсюда можно выставить какие то необходимые компоненты или убрать ненужные
5. MikroTik
5.1. Установка https://lms.voxlink.ru/school/lesson/32351569
5.1.1. https://mikrotik.com/download?ysclid=mcx54imppp281043654 Переходим и устанавливаем сам дистрибутив архитектуры Х86 + для удобства настройки необходимо поставить WinBox, как было сказано в курсе делать через веб интерфейс (который тоже существует) неудобно
5.1.1.1. Создаём виртуалку не забывая что надо проставить два интерфейса 1 сетевой мост 2 внутрянка например PBX-LAN можно выделить не так много ресурсов в последующем при установке ставим новый пароль
5.1.1.1.1. 1. прописываем айпи на интерфейсе что бы иметь возможность в будущем подключиться через винбокс ip/address/add XXX.XXX.XXX.XXX/24 и выбираем сам интерфейс на который прописываем адрес
5.1.1.1.2. 2. заходим в винбокс прописываем адрес и подключаемся, сбрасываем стандартный конфиг system => reset configuration => no default configuration
5.1.1.1.3. 3 обновление роутера необходимо делать когда роутер подключился к интернету и после обновления необходимо заходить в system => routerboaed => upgrade freimware, нежелательно что бы routeros отличалась от freimware
5.1.1.1.4. 4 создание bridge local и объединение интерфейсов bridge => создать => выбираем необходимые порты
5.1.1.1.5. 5 создание ip адресов и вешаем их на необходимые интерфейсы
5.1.1.1.6. 6 маршрутизация ip => routes => создаём 0.0.0.0 с стандартным gateway (проверка пингом 8.8.8.8)
5.1.1.1.7. 7 поднимаем днс ip => DNS => 8.8.8.8 77.88.8.8 208.67.222.222 1.1.1.1 галочка на allow remote request что бы сам микротик стал ДНС сервером и мог принимать чужие запросы (проверка кэшем)
5.1.1.1.8. 8 создание dhcp сервера что бы микротик самостоятельно выдавал адреса ip => ip pool что бы задать пул адресов на выдачу ip => dhcp server => указываем внутренний интерфейс и время лизинга и соответственно сам пул откуда будут браться адреса далее во вкладке networks адрес указываем который расположен ЗА микротиком и шлюзом выступает сам микротик, задаём доменное имя и прописываем ntp сервер
5.1.1.1.9. 9 в настройках dhcp задаём дополнительные опции для выдачи конфига напрямую в телефон создаем во вкладке options => tftp66 с кодом 66 и значением => s'XXX.XXX.XXX.XXX' адрес внутренней сети
5.1.1.1.10. 10 настройка файервола в разделе ip => firewall => NAT => srcnat => адрес сети для внутренних устройств => out interface => action => masquerade => log (ПО НЕОБХОДИМОСТИ0)
5.1.1.1.11. 11 создание учётной записи пользователя => system => users группа full имя и пассворд админа + с каких айпишников можно подключаться под этой учёткой
5.1.1.1.12. 12 ip => services => необходмые сервисы оставляем остальные отбрасываем
5.1.1.1.13. 14 логи во вкладке log там хранятся все логи
5.1.1.1.14. 14 логи во вкладке log там хранятся все логи
5.2. Сетевые железки которые представляют собой гибкую платформу для построения сетей
6. Safe mode - кнопка в момент нажатия которой роутер запоминает конфигурацию в текущий момент времени, в случае если пользователь вылетит ОС подождет время и в случае отсутствия повторного подключения вернётся к изначальной настройке в момент нажатия, коварность кнопки заключается в том что надо не забывать её отжимать
7. клиентская программа для работы с сетевыми протоколами Telnet и SSH и удаленного подключения
7.1. Telnet старый протокол для удаленного доступа без шифрования (редко используется)
7.2. SSH более новая версия протокола для подключения и передачи зашифрованного трафика работает на 22 порту
8. Типизация вызова
8.1. Транк
8.1.1. Белые айпи адреса - связующие звенья для экстеншенов которые работают напрямую с телефонными сетями и осуществляют адресацию вызовов
8.2. Экстеншн
8.2.1. Максимально похожая аналогия - серые айпи адреса, внутренняя телефонная сеть с короткими номерами
9. конфигурационные файлы
9.1. asterisk.conf Директории asterisk и глобальные парамерты
9.2. pjsip.conf протокол SIP: транки и экстеншены
9.3. rtp.conf порты RTP
9.4. iax.conf протокол iax2: транки и экстеншены
9.5. extensions.conf Диалплан: Функции (ДВО), роутинг, логика
9.6. queues.conf Очереди, операторы
9.7. logger.conf Логгирование ошибок и событий
9.8. modules.conf управление загрузкой модулей
10. DAHDI - технология, обеспечивающая поддержку различного оборудования (в основном плат расширения) в системах VoIP-телефонии (есть возможность подключения к аналоговым устройствам)
10.1. Для корректной настройки необходимо установить библиотеку libPRI - предназначенную для работы с потоковыми TDM интерфейсами
10.2. Установка DAHDI
10.2.1. конфигурация файла modules - добавление модуля ядра
10.2.2. конфигурация файла system.conf - описание характеристик потока E1 или аналоговой карты
10.2.3. конфигурация файла chan_dahdi.conf - настройка параметров каналов asterisk
11. Входящая маршрутизация
11.1. Входящая маршрутизация в Asterisk определяет, что происходит, когда поступает звонок извне, обычно от телефонного провайдера через PJSIP-транк или другой канал
11.1.1. Входящий звонок поступает на Asterisk-сервер черeз /etc/asterisk/extensions.conf
11.1.2. Asterisk определяет, в какой контекст в диалплане нужно направить звонок. Этот контекст обычно указывается в настройках транка (в sip.conf или pjsip.conf). Например, это может быть контекст [from-trunk].
11.1.3. В указанном контексте Asterisk начинает искать соответствие между номером, на который поступил звонок (DID - Direct Inward Dialing), и расширениями (exten) в диалплане. Asterisk сопоставляет номер назначения со строками exten =>
11.1.4. Если найдено соответствие, Asterisk начинает выполнять команды, указанные для этого расширения, начиная с приоритета 1.
11.1.4.1. Ответ на звонок Answer
11.1.4.2. Воспроизведение аудиофайла Playback
11.1.4.3. Перенаправление звонка на внутренний номер Dial
11.1.4.4. Перенаправление звонка на IVR
11.1.5. Если ни одно расширение не соответствует номеру назначения в exten, аsterisk может выполнить действия по умолчанию, например, воспроизвести сообщение "Номер не существует" или завершить звонок. exten => i
12. IVR - интерактивное голосовое меню внутри астериска
13. Если телефон не подключается ТО смотреть сюда
13.1. endpoints (альяс команды pjsip list endpoints) показывает конечные хосты
13.2. pjsip debug (альяс pjsip set logger on) выводит лог файлы в консоль
13.3. pjsip show auth показывает учетные записи
13.4. pjsip show endpoint (например 201) показывает детальные настройки канала 201
13.5. команда pjsip reload не демонстрирует ошибок при выполнении
14. 1. Поступает звонок. 2. Asterisk определяет контекст, в котором нужно искать правила. 3. Asterisk пытается сопоставить набранный номер (${EXTEN}) с расширениями в этом контексте. 4. Если найдено соответствие, выполняются команды, связанные с этим расширением, в порядке приоритета. 5. Asterisk переходит к следующему шагу, определяемому командами.
15. SIP и RTP
16. Диалплан
16.1. Он определяет как обрабатываются вызовы в вашей системе. Диалплан, как скриптовый язык содержит инструкции, которым следует Астериск, реагируя на внешние события
16.1.1. Состоит из контекстов которые описывают действия внутри диалплана
16.1.1.1. Контексты состоят из экстеншенов приоритетов и приложений
16.1.1.1.1. Экстеншены представляют собой какой то добавочный номер при наборе которого происходит какая либо обработка вызова
16.1.1.1.2. Каждое расширение может иметь несколько шагов, называемых приоритетами. Приоритеты нумеруются последовательно, начиная с 1, и каждый шаг выполняет одно специфическое действие. Например, следующее ниже расширение выполнит ответ на звонок (поднимет трубку на приоритете 1) и затем положит трубку (на приоритете 2):
16.1.1.1.3. Приложения — это рабочие лошадки диалплана. Каждое приложение выполняет определённое действие в текущем канале, типа — воспроизвести звуки, принять набор сигналов DTMF, найти что-то в базе данных, сделать вызов в канал, повесить трубку или что-то иное
17. Маршрутизация
17.1. Набор инструкций (правил), определяющих, как обрабатывать входящие и исходящие звонки. • Записана в файле extensions.conf (или других файлах, включенных в него). • Определяет логику вызова, используя различные команды (Answer, Dial, Playback,)
17.1.1. Основные компоненты:
17.1.1.1. Context (Контекст): Раздел диалплана, определяющий логику для определенной группы пользователей или типов звонков. (например [from-internal], [from-trunk])
17.1.1.2. extension (Расширение): Соответствует набранному номеру (или шаблону набранного номера). (exten => 123, ..., exten => _X., ...).
17.1.1.3. Priority (Приоритет): Порядок выполнения команд внутри расширения (обычно начинается с 1). (exten => 123,1, ..., exten => 123,2