Столкнулся с непонятной мне ошибкой asterisk, которая возникла ни с того ни с сего без каких-либо видимых изменений в настройках. Двухсторонняя связь серверов asterisk в определенный момент перестала работать.
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Реклама ИП Скоромнов Д.А. ИНН 331403723315
Есть два удаленных сервера astersik, связанных между собой vpn каналом на базе openvpn. Длительное время все нормально работало, настройки никто не менял, кроме добавления пользователей, как минимум пару лет. Работает и работает, необходимости в изменениях не было.
В один прекрасный момент один из серверов перестал регистрироваться на другом. В логах сервера, который отклонял регистрацию, было следующее:
[Oct 10 03:55:53] NOTICE[26576] chan_sip.c: Registration from '<sip:servnew@10.1.4.13>' failed for '108.68.220.194:54233' - Peer is not supposed to register [Oct 10 03:55:54] ERROR[26576] chan_sip.c: Peer 'servnew' is trying to register, but not configured as host=dynamic
А тот, что пытался зарегистрироваться в лог сыпал сообщениями:
[2015-10-10 03:27:21] NOTICE[29264] chan_sip.c: -- Registration for 'servnew@10.1.4.13' timed out, trying again (Attempt #10)
Часть конфигурации сервера, который пытается зарегистрироваться:
register => servnew:1455Fxcdvg@10.1.4.13:51612/servxm
А это учетка на сервере приемнике:
[servnew] type = friend host = 10.1.3.205 username = servnew secret = 1444Fxczvg insecure = invite trunk = yes qualify = yes context = old_serv peercontext = old_serv
Связь между серверами стабильная, все в порядке, они друг друга видят. Судя по настройкам, ошибка очевидна и должна быть, так как в настройках учетной записи явно указан адрес сервера 10.1.3.205, ему нет необходимости регистрироваться. Однако, все именно с такими настройками и работало длительное время. Я специально это проверил, восстановив виртуалки и сравнив конфиги. Они не изменились с тех пор, но ошибка появилась только сейчас.
Так как я не очень глубоко знаком с astersik, работал только с простыми конфигурациями, то пришлось прилично повозиться, чтобы разобраться в ситуации. К тому же эти сервера настраивал не я, а несколько разных человек в разное время. Никакой документации не осталось, а конфигурации достаточно сложные. Я никак не мог понять, почему появилась ошибка, ведь видимых изменений не было.
Первым делом я решил изменить параметр учетной записи и поменять параметр host со старого на новый:
host = dynamic
По идее с этим параметром должна проходить регистрация. Но это почему-то не помогло. Сервер, который пытался зарегистрироваться, получал такую же ошибку, что и раньше о тайм ауте, а на приемнике вообще никаких упоминаний о событии не было. Я опять потратил много времени, но не смог понять, почему. Причем, регистрация в обратную сторону работает как раз с параметром dynamic и по тому же каналу связи. То есть настройки серверов получились идентичными, но один сервер авторизуется на другом, в другой в обратную сторону нет. Как я не пытался понять, почему так происходит, не получилось разобраться.
Решил проблему простым способом. На сервере приемнике поставил как и было:
host = 10.1.3.205
А на сервере, который пытался зарегистрироваться через
register => servnew:1455Fxcdvg@10.1.4.13:51612/servxm
отключил эту регистрацию. В итоге звонки стали нормально перенаправляться и все заработало как прежде. Очень хочется понять причину возникновений ошибки, и почему один сервер на другом нормально авторизуется с параметром dynamic, а в обратную сторону регистрация не проходит.
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Реклама ИП Скоромнов Д.А. ИНН 331403723315
Сейчас вспомнил про эту заметку. Я разобрался, в чем была причина ошибки. На проблемном сервере было указано несколько локальных IP. Из-за этого иногда возникали ошибки разного рода.