Сбой в astdb
Перестали приниматься звонки без аутентификации.
Сообщений: 7
|
Сбой в astdb
Здравствуйте, уважаемые коллеги!
Установлен elastix 2.0
Звонки с FXO шлюзов принимались * по ip адресу без аутентификации:
[172.20.0.10]
type=user
insecure=yes
dtmfmode=auto
context=from-pstn
[192.168.1.151]
type=user
insecure=yes
context=from-pstn
dtmfmode=auto
После кратковременного сбоя * начал считать звонки с адресов 172.20.0.10 192.168.1.151 анонимными.
В логах идут сообщения:
Failed to authenticate device <sip:XXXXXXXXX@172.20.0.10>;tag=1e4ce11fa4
где XXXXXXXXX callerid звонящего
Все SIP телефоны, регистрирующиеся на *, корректно работают.
Если перенастроить шюзы на регистрацию внутренних линий работают и они.
Измениений в конфигурационных файлах до и после сбоя нет(сравнивал дампы сервера)
Из относящихся к * изменились только
/var/lib/mysql/asterisk/notifications.MYD
/var/lib/mysql/asterisk/notifications.MYI
/var/lib/mysql/asteriskcdrdb/cdr.MYD
/var/lib/mysql/asteriskcdrdb/cdr.MYI
/var/lib/asterisk/astdb
Подозреваю что в astdb некорректные данные.
Если запретить * обращаться к astdb, то звонки не "отбрасываются":
Sep 29 22:59:18] WARNING[4204] db.c: Unable to open Asterisk database '/var/lib/asterisk/astdb': Permission denied
[Sep 29 22:59:20] VERBOSE[4236] netsock.c: == Using SIP RTP TOS bits 184
[Sep 29 22:59:20] VERBOSE[4236] netsock.c: == Using SIP RTP CoS mark 5
[Sep 29 22:59:20] VERBOSE[4240] pbx.c: -- Executing [YYYYYY@from-sip-external:1] NoOp("SIP/172.20.0.10-00000000", "Received incoming SIP connection from unknown peer to YYYYYY") in new stack
Замена astdb на базу из бекапа не помогает
(резервное копирование делал с помощью lvm snapshot возможно она в неработоспособном состоянии)
Помогите определить astdb ли является причиной странного поведения *?
Как восстановить и как правильно делать её резервную копию?
|
Откуда: Уфа
Сообщений: 5856
|
Re: Сбой в astdb
chmod 777 /var/lib/asterisk/astdb
|
Сообщений: 7
|
Re: Сбой в astdb
ll /var/lib/asterisk/astdb
-rw-rw-r-- 1 asterisk asterisk 184320 Sep 30 12:04 /var/lib/asterisk/astdb
Права неправильные я выставлял сам чтобы определить является ли astdb причиной некорректной работы астериск.
Если * читает базу данных то не принимает звонки если не может прочитать - то принимает. Значит в базе данные которые нарушают логику его работы.
Как эти данные из базы убрать?
|
Откуда: Уфа
Сообщений: 5856
|
Re: Сбой в astdb
database del
если есть freepbx, то он будет неработоспособным после этой операции.
но можно восстановить вот таким скриптом
#!/usr/bin/env php
<?php
require_once('common/php-asmanager.php');
require_once('functions.inc.php');
// get settings
$amp_conf = parse_amportal_conf("/etc/amportal.conf");
$asterisk_conf = parse_asterisk_conf("/etc/asterisk/asterisk.conf");
$astman = new AGI_AsteriskManager();
if (! $res = $astman->connect("127.0.0.1", $amp_conf["AMPMGRUSER"] , $amp_conf["AMPMGRPASS"])) {
unset( $astman );
}
require_once('common/db_connect.php');
require_once("modules/core/functions.inc.php");
core_users2astdb();
core_devices2astdb();
?>
этот скрипт надо положить в /var/www/html/admin и запустить
|
Сообщений: 7
|
Re: Сбой в astdb
Спасибо БОЛЬШОЕ!
базу создал вновь.
Помогло до следующей перезагрузки.
Для корректной работы скрипта нужно добавить require_once('../admin/functions.inc.php'); в начало
/var/www/html/admin/common/php-asmanager.php
После работы скрипта нужно откатить изменения в php-asmanager.php иначе не работает веб интерфейс.
Я, кажется, копаю не в том направлении. Похоже база данных только хранит состояние ошибки но не вызывает её.
Если запись user не содержит данные аутентификации и первый звонок после рестарта * (часто нужно ещё удалить базу) принят от SIP/IP то дальше работа идет корректно до рестарта сервиса.
Если звонок принят как анонимный, то это также будет продолжаться до рестарта.
Было состояние когда один шлюз работал без аутентификации другой требовал её.
Шлюзы регистрируют свои порты на *.
Если убрать регистрацию, то глюк становится реже, но все равно появляется.
Подскажите куда копать.
|
Откуда: Уфа
Сообщений: 5856
|
Re: Сбой в astdb
с похожей траблой недавно сталкивался из-за того, что не правильно настроил.
у вас в описании пиров слишком мало параметров. Сделайте нормальный транк в FreePBX и зарегистрируйте шлюз на сервере:
username=7811 ;имя пользователя для порта
type=friend ;позволяет и принимать и отправлять вызовы
secret=7811 ;для простоты пароль равен логину
qualify=yes ;разрешает серверу определять доступность шлюза
port=5060 ;SIP порт шлюза
nat=no ;запрещает NAT
host=dynamic ;для работы шлюз должен зарегистрироваться
dtmfmode=rfc2833 ;режим DTMF должен быть общим для всего шлюза
context=from-pstn ;контекст указывает обработчик входящих вызовов
canreinvite=no ;запрещает передачу медиатрафика минуя астериск
|
Сообщений: 7
|
Re: Сбой в astdb
Схема с аутентификацией по ip была выбрана для получения callerid из города.
Если регистрировать порты шлюза то звонок с callerid не проходит аутентификацию.
Трассировка соединения c callerid:
Method: INVITE
[Resent Packet: False]
Message Header
Via: SIP/2.0/UDP 172.20.0.10:5060;branch=z9hG4bK184c5ed6a4846
Transport: UDP
Sent-by Address: 172.20.0.10
Sent-by port: 5060
Branch: z9hG4bK184c5ed6a4846
From: <sip:XXXXXXXXXX@172.20.0.11>;tag=184c5ed6a4
SIP from address: sip:XXXXXXXXXX@172.20.0.11
SIP tag: 184c5ed6a4
To: <sip:2222@172.20.0.11>
SIP to address: sip:2222@172.20.0.11
Без callerid:
Method: INVITE
[Resent Packet: False]
Message Header
Via: SIP/2.0/UDP 172.20.0.10:5060;branch=z9hG4bKae4cd2d4a4263
Transport: UDP
Sent-by Address: 172.20.0.10
Sent-by port: 5060
Branch: z9hG4bKae4cd2d4a4263
From: <sip:4003@172.20.0.11>;tag=ae4cd2d4a4
SIP from address: sip:4003@172.20.0.11
SIP tag: ae4cd2d4a4
To: <sip:2222@172.20.0.11>
SIP to address: sip:2222@172.20.0.11
Пира XXXXXXXXXX в * нет и вызов получает отказ
Вечером попробую настроить шлюз как транк.
|
Откуда: Уфа
Сообщений: 5856
|
Re: Сбой в astdb
настройте шлюз так, чтоб с callerid нормально работал и все дела
|
|