Перешел на Realtime - проблемы
Jan 21 05:17:23] ERROR[5361]: stasis_cache.c:845 caching_topic_exec: Attempting to remove an item from the SIP/1001-cached cache that isn't there: ast_endpoint_snapshot_type SIP/1001
как от этого избавиться, боюсь он мне чего-нибудь переполнит и завалится?
Вопрос, как включать includes Extension
Например в контекст [phones]
include => ext_calls
include => int_calls
Голову сломал, не знаю как сделать.
А что самое противное он не читает конфигурацию из extentsion.conf при использовании realtime. (игнорирует эти инклуды)
id context exten priority app appdata
1 default _X. 1 Congestion 10
2 default _X. 2 Hangup
3 incoming_sipnet 878 1 Answer 500
4 incoming_sipnet 878 2 Dial SIP/1001,30
5 incoming_sipnet 878 3 Busy 3
6 incoming_sipnet 878 4 Hangup
7 incoming_sipout 898 1 Answer 500
8 incoming_sipout 898 2 Dial SIP/1001,30
9 incoming_sipout 898 3 Busy 3
10 incoming_sipout 898 4 Hangup
11 internal_calls _1XXX 1 Answer 500
12 internal_calls _1XXX 2 Dial SIP/${EXTEN},30,m
13 internal_calls _1XXX 3 Busy 3
14 internal_calls _1XXX 4 Hangup
18 outgoing_calls _XXXXX. 4 Dial SIP/sipout/${EXTEN},120
15 outgoing_calls _[78]XXXXXXXXXX 1 Dial SIP/sipout/${EXTEN},120
16 outgoing_calls _[78]XXXXXXXXXX 2 Playback noanswer
17 outgoing_calls _[78]XXXXXXXXXX 3 Hangup
-----------------
Соответственно есть контекст [phones] в котором раньше включались все эти контексты так:
[phones]
include => incoming_calls
include => outgoing_calls
include => incoming_sipnet
include => incoming_sipout
После перехода на MYSQL (realtime)в файле extentsions.conf все эти контексты закомментировал и сделал ссылки на БД mysql.
Но непонятно как быть с контекстом [phones] и с includes. Просто тупо вписать те же правила в 1 контекст как-то некрасиво, да и будет на порядок сложнее администрировать.
Как быть?
Added after 1 hours 57 minutes:
всем спасибо, эту проблему тоже решил.
Теперь у меня полный реалтайм, за исключением нескольких статичных фиговин в конфигах.
| zotac писал(а): |
| вылечил, всем спасибо. |
| zotac писал(а): |
| всем спасибо, эту проблему тоже решил. |
да пжалста
а вот те, кто попадет в данный топик из гугла вам спасибо точно не скажут, т.к. одни вопросы и ни одно толкового ответа, кроме выше процитированных и того что у вас все теперь работает
мы счастливы !
- все трубки прописаны в контексте [phones]
- закомментированные строчки для понимания что происходит.
-------------------------------
[general]
static=yes
writeprotect=no
clearglobalvars=no
allowguest = no
[default]
switch => Realtime/default@extensions
;exten => _X.,1,Congestion(10)
;exten => _X.,2,Hangup
[incoming_sipnet]
switch => Realtime/incoming_sipnet@extensions
;exten => 878,1,Answer(500)
;exten => 878,1, Dial(SIP/1001,30)
;exten => 878,n, Busy(3)
;exten => 878,n, Hangup()
[incoming_sipout]
switch => Realtime/incoming_sipout@extensions
;exten => 898,1,Answer(500)
;exten => 898,n, Dial(SIP/1001,30)
;exten => 898,n, Busy(3)
;exten => 898,n, Hangup()
[outgoing_calls]
switch => Realtime/outgoing_calls@extensions
;exten => _[7-8]XXXXXXXXXX, 1, Dial(SIP/sipout/${EXTEN},120)
;exten => _[7-8]XXXXXXXXXX, n, PlayBack(noanswer)
;exten => _[7-8]XXXXXXXXXX, n, HangUp
[internal_calls]
switch => Realtime/internal_calls@extensions
;exten => _1XXX, 1, Answer()
;exten => _1XXX, n, Dial(SIP/${EXTEN},30,m)
;exten => _1XXX, n, Hangup()
[outgoing_sip]
switch => Realtime/outgoing_sip@extensions
;exten => _XXXXXX., 1, Dial(SIP/sipout/${EXTEN},120)
;exten => _XXXXXX., n, Hangup()
[phones]
switch => Realtime/incoming_sipnet@extensions ;здесь раньше был include => incoming_sipnet
switch => Realtime/incoming_sipout@extensions ;здесь раньше был include => incoming_sipout
switch => Realtime/outgoing_calls@extensions ;здесь раньше был include => outgoing_calls
switch => Realtime/outgoing_sip@extensions ;здесь раньше был include => outgoing_sip
switch => Realtime/internal_calls@extensions ;здесь раньше был include =>internal_calls
Added after 2 minutes:
Перечитывать extensions.conf конечно придется, если вы захотите добавить новый контекст или добавить/удалить include.
Особое внимание при Realtime-изации уделите порядку столбцов в таблице СУБД, например я долго маялся с кодеками только из-за того, что у меня шел сначала столбец allow=ulaw-bla-bla а потом disallow=all, поменял местами - ОК.
Added after 7 minutes:
Если кто подскажет в SQL команду как вытащить параметры создания (create) тех таблиц которые я наделал, то выложу сюда еще и таблицы для REALTIME.
Имеется в виду:
CREATE TABLE Extensions
-- колонка 1
-- колонка 2
-- колонка 3
...
-- колонка n
Added after 2 minutes:
В планах еще прикрутить iVR и CALLBACK
Added after 23 minutes:
Короче опять все нашел
Структура таблицы `cdr`
--
CREATE TABLE IF NOT EXISTS `cdr` (
`calldate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`clid` varchar(80) CHARACTER SET latin1 NOT NULL DEFAULT '',
`src` varchar(80) CHARACTER SET latin1 NOT NULL DEFAULT '',
`dst` varchar(80) CHARACTER SET latin1 NOT NULL DEFAULT '',
`dcontext` varchar(80) CHARACTER SET latin1 NOT NULL DEFAULT '',
`channel` varchar(80) CHARACTER SET latin1 NOT NULL DEFAULT '',
`dstchannel` varchar(80) CHARACTER SET latin1 NOT NULL DEFAULT '',
`lastapp` varchar(80) CHARACTER SET latin1 NOT NULL DEFAULT '',
`lastdata` varchar(80) CHARACTER SET latin1 NOT NULL DEFAULT '',
`duration` int(11) NOT NULL DEFAULT '0',
`billsec` int(11) NOT NULL DEFAULT '0',
`start` datetime DEFAULT NULL,
`answer` datetime DEFAULT NULL,
`end` datetime DEFAULT NULL,
`disposition` varchar(45) CHARACTER SET latin1 NOT NULL DEFAULT '',
`amaflags` int(11) NOT NULL DEFAULT '0',
`accountcode` varchar(20) CHARACTER SET latin1 NOT NULL DEFAULT '',
`userfield` varchar(255) CHARACTER SET latin1 NOT NULL DEFAULT '',
`uniqueid` varchar(32) CHARACTER SET latin1 NOT NULL DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Added after 2 minutes:
Структура таблицы `extensions`
--
CREATE TABLE IF NOT EXISTS `extensions` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`context` varchar(20) CHARACTER SET latin1 NOT NULL DEFAULT '',
`exten` varchar(20) CHARACTER SET latin1 NOT NULL DEFAULT '',
`priority` int(6) NOT NULL DEFAULT '0',
`app` varchar(20) CHARACTER SET latin1 NOT NULL DEFAULT '',
`appdata` varchar(128) CHARACTER SET latin1 NOT NULL DEFAULT '',
PRIMARY KEY (`context`,`exten`,`priority`),
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=21 ;
Added after 1 minutes:
Структура таблицы `sip_buddies`
--
CREATE TABLE IF NOT EXISTS `sip_buddies` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`disallow` varchar(10) NOT NULL DEFAULT 'all',
`allow` varchar(100) DEFAULT 'gsm;ulaw;alaw;g729;ilbc',
`context` varchar(80) NOT NULL DEFAULT 'phones',
`dtmfmode` varchar(7) DEFAULT NULL,
`host` varchar(31) NOT NULL DEFAULT '',
`insecure` varchar(20) DEFAULT NULL,
`mailbox` varchar(50) DEFAULT NULL,
`musiconhold` varchar(100) DEFAULT NULL,
`directmedia` varchar(5) NOT NULL DEFAULT 'no',
`qualify` varchar(5) NOT NULL DEFAULT 'yes',
`secret` varchar(80) DEFAULT NULL,
`type` varchar(6) NOT NULL DEFAULT 'friend',
`username` varchar(80) NOT NULL DEFAULT '',
`videosupport` enum('yes','no') DEFAULT 'yes',
`name` varchar(50) DEFAULT NULL,
`ipaddr` varchar(20) DEFAULT NULL,
`port` varchar(5) DEFAULT NULL,
`regseconds` int(11) DEFAULT '0',
`lastms` varchar(20) DEFAULT NULL,
`fullcontact` varchar(80) DEFAULT NULL,
`useragent` varchar(20) DEFAULT NULL,
`regserver` varchar(50) DEFAULT NULL,
`callbackextension` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC AUTO_INCREMENT=5
Added after 59 seconds:
Структура таблицы `voicemail_users`
--
CREATE TABLE IF NOT EXISTS `voicemail_users` (
`uniqueid` int(11) NOT NULL AUTO_INCREMENT,
`customer_id` int(11) NOT NULL DEFAULT '0',
`context` varchar(50) CHARACTER SET latin1 NOT NULL DEFAULT '',
`mailbox` int(5) NOT NULL DEFAULT '0',
`password` varchar(4) CHARACTER SET latin1 NOT NULL DEFAULT '0',
`fullname` varchar(50) CHARACTER SET latin1 NOT NULL DEFAULT '',
`email` varchar(50) CHARACTER SET latin1 NOT NULL DEFAULT '',
`pager` varchar(50) CHARACTER SET latin1 NOT NULL DEFAULT '',
`stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`uniqueid`),
KEY `mailbox_context` (`mailbox`,`context`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;
1. В таблице sip-buddies заменить колонку secret на колонку md5secret, просто переименовав ее.
=====
Теперь пароли не будут лежать в открытом тексте. А чтобы сгенерировать их нужно выполнить эти действия:
echo -n "::" | md5sum
Example:
To generate the md5-hash for user 1234 with secret abcd you do:
echo -n "1234:asterisk:abcd" | md5sum
and as result you should get: 4a8e71480c5b1ef0a5d502a8eb98576a
его и вставляем в поле md5secret. При этом в телефонах можно продолжать вводить пароль открытым текстом.
=====
2. Меняем стандартный порт, врятли вы пользуетесь звонками за пределами своей SIP сети.
Настройка порта производится в файле sip.conf в секции [general]:
bindport=5060 => bindport=5172
3. Запрещаем анонимные звонки и излишнюю болтливость Астера:
allowguest=yes => allowguest=no ; Allow or reject guest calls (default is yes)
alwaysauthreject = no => alwaysauthreject = yes
После такой настройки, астериск будет давать одинаковый отбой для любых неверных авторизаций.
4. Делаем фильтр подключений для SIP-клиентов
deny=0.0.0.0/0.0.0.0
permit=10.1.1.1/24
permit=10.1.2.1/24
в базе делаем поле deny и поле permit. В поле permit пишем через ";"
5. Делаем лимит звонков чтобы хакеры не могли звонить одновременно в несколько линий. Обратите внимание что это отбразится и на обычных пользователей:
call-limit=1
Делаем в таблице поле call-limit (INT) и ему присваиваем дефолтное значение 1. Для тех пользователей кому нужно больше - вручную меняем на нужное число.
6. Вырубаем [default] экстеншен
[default]
exten => _X.,1,Hangup
7. Не делаем один универсальный план extension, лучше его детализировать
это очень опасный план: exten => _X.,1,Dial(SIP/${EXTEN}@operator)
лучше его разбить на составные части:
;Москва
exten => _8495XXXXXXX,1, Dial(SIP/${EXTEN}@operator)
exten => _8495XXXXXXX,n, Hangup
exten => _8499XXXXXXX,1, Dial(SIP/${EXTEN}@operator)
exten => _8499XXXXXXX,n, Hangup
exten => _XXXXXXX,1, Dial(SIP/${EXTEN}@operator)
exten => _XXXXXXX,n, Hangup
;Межгород Россия/Мобильные
exten => _8XXXXXXXXXX,1, Dial(SIP/${EXTEN}@operator)
exten => _8XXXXXXXXXX,n, Hangup
-----------------------
Пока все, буду пополнять.
Added after 57 minutes:
8. Убрать лишние модули, например отловил у себя в логах строчку типа:
[Jan 22 14:50:06] NOTICE[19574]: chan_skinny.c:7508 skinny_session: Starting Skinny session from 46.165.220.215
[Jan 22 14:50:06] WARNING[19574]: chan_skinny.c:7568 skinny_session: Skinny packet too large (542393675 bytes), max length(2000 bytes)
[Jan 22 14:50:06] NOTICE[19574]: chan_skinny.c:7615 skinny_session: Skinny Session returned: Success
[Jan 22 14:50:06] NOTICE[19574]: chan_skinny.c:7450 skinny_session_cleanup: Ending Skinny session from unknown at 46.165.220.215
добавьте в своем exten в правилах выхода на город/межгород 2-3 цыферки (которые будут обрезаться правилом), злоумышленник никогда не найдет выход наружу.
Пример:
- Было: exten =>_[7-8]XXXXXXXXXX, 1, Dial(SIP/sipout/${EXTEN},120) выход на Русский межгород и мобильные
- Стало: exten =>_321[7-8]XXXXXXXXXX, 1, Dial(SIP/sipout/${EXTEN:3},120) - теперь пусть резвятся в песочнице
Ну и сделать правило в котором называете эти паразитирующие организмы своими именами:
exten => _8X.,1,playback(ya-bolshe-tak-ne-budu)
Таких "умников", которые хотят вас хакнуть, таким образом не вырубишь: они пытаются и 98Х. и 018Х. и .... Вариантов подстановки куча, в зависимости от бота-метода и т.д.
_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
Более половины отвалиться уже на этапе скана портов. А к тому моменту пока кто-то дойдет то последней стадии перебора выхода на межгород Вы уже будете в курсе что вас пытаются ломать.
Ну и как всегда, полезные советы - Вэлкам!
Привет. В личку форум писать не дает. Можешь рассказать, как избавился от "cache that isn't there"?
Выложенный конфиг особо понимания не добавил.
Выложенный конфиг особо понимания не добавил.