Скрипт быстрой настройки IPTables

Иногда нужно например удалить все правила IPTables и прописать только нужное, так вот для удобства можно указать их в скрипте, после чего выполнить его.

Читать далее «Скрипт быстрой настройки IPTables»

Маршрутизация звонков по времени в Asterisk

Приведу пример маршрутизации звонков по времени в Asterisk.
Допустим в файле /etc/asterisk/extensions.conf есть настроенный контекст для транка со следующими параметрами:

[Trunk_2]
exten => s,1,DIAL(SIP/6004&SIP/6003,19)
exten => s,2,Hangup()

И чтобы разрулить звонки по времени на разные телефоны укажем для контекста этого транка только вложенные контексты:

[Trunk_2]
include => daytime,8:00-18:00,mon-sat,*,*
include => nighttime,18:00-8:00,mon-sun,*,*
include => sunday,8:00-22:00,sun,*,*

По сути daytime, nighttime, sunday это только названия контекстов, для которых прописано время в контексте [Trunk_2], их можно называть как угодно.

И потом в этих отдельных контекстах уже пропишем нужные екстеншены.
То есть, днем:

[daytime]
exten => s,1,DIAL(SIP/6004&SIP/6003,19)
exten => s,2,Hangup()

Ночью:

[nighttime]
exten => s,1,DIAL(SIP/6002,19)
exten => s,2,Hangup()

И в воскресенье:

[sunday]
exten => s,1,DIAL(SIP/6002,19)
exten => s,2,Hangup()

Можно также например создать контекст holiday с праздничными днями:

include => holiday,*,*,1,jan
include => holiday,*,*,8,mar

и т.д.

Для тех кто хочет расписать подробнее по дням, приведу список дней на английском:
mon — Monday — Понедельник
tue — Tuesday — Вторник
wed — Wednesday — Среда
thu — Thursday — Четверг
fri — Friday — Пятница
sat — Saturday — Суббота
sun — Sunday — Воскресенье

Аналогично сокращаются до трех букв и названия месяцев.

Создание RAID при установке Ubuntu

На тесте при установке Ubuntu Server 14.04 LTS создам программный RAID1.
Замечу что, при создании RAID будет автоматически использоваться mdadm.
Подключу к серверу два одинаковых диска (аналогично можно попробовать создать RAID на виртуальной машине например созданной в VirtualBox).

Читать далее «Создание RAID при установке Ubuntu»

mdadm — утилита управления программными RAID массивами

Рекомендую прочитать мою статью Описание типов RAID.

Установить mdadm в Ubuntu можно командой:

Читать далее «mdadm — утилита управления программными RAID массивами»

Решение ошибки при компиляции Asterisk «‘pjsip_tcp_transport_cfg’ has no member named ‘sockopt_params’»

Компилировал однажды Asterisk версии 13.13.1 и при выполнении make заметил следующую ошибку:

‘pjsip_tcp_transport_cfg’ has no member named ‘sockopt_params’

pjproject-2.2.1 уже был скомпилирован.

Решил проблему собрав поновее версию pjproject-2.4.5

cd /usr/src
wget http://www.pjsip.org/release/2.4.5/pjproject-2.4.5.tar.bz2
tar -xjvf pjproject-2.4.5.tar.bz2
cd pjproject-2.4.5
CFLAGS='-DPJ_HAS_IPV6=1' ./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr
make dep
make
make install

После этого, ошибка исчезла.

Настройка TDM410P c asterisk

На тесте подключил китайскую плату TDM410P с четырьмя FXO-портами (красными) в PCI слот выключенного Ubuntu сервера.
Для удобства сразу переключимся на root пользователя:

Читать далее «Настройка TDM410P c asterisk»

Решение проблемы Asterisk — нет звука при звонке через NAT

Заметил недавно что нет звука при звонке с IP-телефона на другой IP-телефон которые оба находились за одним и тем же NAT (роутером).

Читать далее «Решение проблемы Asterisk — нет звука при звонке через NAT»

Установка эхоподавителя Oslec и DAHDI

Устанавливал однажды китайскую плату TDM410P для подключения аналоговых телефонных линий и связку Asterisk + Dahdi.
Так как плата не имеет аппаратного шумоподавления, пришлось ставить Oslec.
При звонках, со стороны аналогового телефона эха не было, а вот кто говорил в IP телефон — слышал сам себя.

Читать далее «Установка эхоподавителя Oslec и DAHDI»

Решение ошибки Asterisk «Context ‘local’ tries to include nonexistent context ‘parkedcalls'»

Прикручивал как-то DAHDI плату и заметил следующую ошибку при входящем вызове с аналоговой линии:

WARNING[7238]: pbx.c:12314 ast_context_verify_includes: Context ‘local’ tries to include nonexistent context ‘parkedcalls’

Ошибка возникала из-за того что не загружен модуль res_parking, чтобы его загрузить, откроем консоль asterisk и выполним команду:

sudo asterisk -vvr
module load res_parking

Чтобы он автоматически загружался при запуске Asterisk, в файле /etc/asterisk/modules.conf, в блоке [modules] добавим строку:

load => res_parking.so