AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Странности с портом AMI

Newbies/FAQ Forum 13 сообщений -
#1

Доброго дня!

Разбираюсь с установкой и настройкой Asterisk'а. Изучаю работу с ним через AMI интерфейс.
OS: FreeBSD 11.0 amd64, Asterisk 13.11.2

В процессе настройки, вылезла очень странная особенность:
manager.conf
Код:
[general]
enabled = yes
webenabled= no
debug = no

port = 5038
bindaddr= 127.0.0.1

[admin]
secret = secret
deny = 0.0.0.0/0.0.0.0
permit = 127.0.0.1/255.255.255.0
read = system,call,log,verbose,agent,user,config,dtmf,reporting,cdr,dialplan
write = system,call,agent,user,config,command,reporting,originate,message
[/b]

При таком конфиге перезапускаю asterisk и смотрю появившиеся открытые порты:
Код:
tcp4 0 0 *.2000 *.* LISTEN
tcp4 0 0 127.0.0.1.54792 *.* LISTEN
tcp4 0 0 127.0.0.1.8088 *.* LISTEN

Удивляюсь, что нет заказанного для AMI в manager.conf порта 5038, иду в консоль asterisk'а и смотрю:
manager show settings
Код:
Global Settings:
----------------
Manager (AMI): Yes
Web Manager (AMI/HTTP): No
TCP Bindaddress: 127.0.0.1:0
HTTP Timeout (minutes): 60
TLS Enable: No
TLS Bindaddress: Disabled
TLS Certfile: asterisk.pem
TLS Privatekey:
TLS Cipher:
Allow multiple login: Yes
Display connects: Yes
Timestamp events: No
Channel vars:
Debug: Yes

При этом на всякий случай соединяюсь telnet'ом с 127.0.0.1 54792
и вижу:

Код:
telnet 127.0.0.1 54792
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Asterisk Call Manager/2.8.0

Для верности, прошёл весь путь авторизации в telnet'е и выполнил после этого команду, всё ок. Но почему порт 54792, когда в конфиге указан 5038. К тому же почему в консоли не показывается порт на котором работает?
Но это ещё не всё. Не меняя ничего в конфигах, перезапускаю сервис asterisk и открытый порт для AMI уже другой:
Код:
tcp4 0 0 127.0.0.1.57656 *.* LISTEN

И так при каждом перезапуске asterisk'а он меняет открытый для AMI порт.
Помогите пожалуйста разобраться с этой непонятной ситуацией.
#2

Asterisk 13 находится в разработке, т.е. его все ещё пилят, а значит удивляться багам и глюкам не стоит, а стоит это постить в список багов для разрабов и спрашивать "почему так?" там.
Для изучения возьмите стабильную версию: Asterisk 1.8 или Asterisk 11.

P.S. Чисто интересно:
А если в bindaddr указать 0.0.0.0, то какой порт слушается ?
P.S.S. А если убрать все пробелы между ключом и значением ? Ситуация не меняется ? Может бага в парсилке.

_________________
mega-net.ru - IT аутсорсинг
#3

virus_net @ Вс Сен 11, 2016 10:56 писал(а):

P.S. Чисто интересно:
А если в bindaddr указать 0.0.0.0, то какой порт слушается ?
P.S.S. А если убрать все пробелы между ключом и значением ? Ситуация не меняется ? Может бага в парсилке.

Попробовал убрать пробелы между ключом/значением:
Код:
port=5038
bindaddr=127.0.0.1

Не помогло
Затем, адрес сменил на 0.0.0.0
Код:
port=5038
bindaddr=0.0.0.0

Также не помогло.
Ещё заметил что если перезапускать asterisk с небольшим интервалом (там например секунд 10), то порт на который вешается AMI тупо увеличивается после каждого перезапуска на 1.
Жесть какая-то. Пойду в багзиллу им запилю информацию, а сам пока 11-ый поставлю.

Added after 22 minutes:

Сделал запись в багзилле, правда со своим корявым английским, но надеюсь там поймут:
ТУТ
#4

Ну собственно теперь нужно подождать ответа.

P.S.
Петров Р писал(а):
permit = 127.0.0.1/255.255.255.0

255.255.255.255

_________________
mega-net.ru - IT аутсорсинг
#5

virus_net @ Пн Сен 12, 2016 09:42 писал(а):
P.S.
255.255.255.255

Так вроде же считается что для loopback интерфейса подсеть 127.0.0.0/24, хотя сейчас в инете порыл так вообще оказывается 127.0.0.0/8
#6

И кстати для полноты картины установил 11-ую версию, результат тот же.
Скажите, а может надо в изначально поставляемых с дистрибутивом конфигах где-то ещё что-то подрихтовать кроме manager.conf чтобы AMI работало корректно. Хотя работает то она корректно, только на случайном порту Sad
#7

Петров Р писал(а):
вроде же считается что для loopback интерфейса подсеть 127.0.0.0/24

Не знаю кем так считается, наверно теми кто в сетях ни бум бум. IPv4 address space
Петров Р писал(а):
вообще оказывается 127.0.0.0/8

Как бы да, полная сеть такая. Но поговаривают, что в виду закончившихся IP-адресов IPv4 эту подсеть собираются "распечатать". Хотя я слабо представляю как они собираются это делать, т.к. у подавляющего большинства трафик с/на 127/8 в firewall`ах разрешено только для loopback ифейса.
Петров Р писал(а):
где-то ещё что-то подрихтовать кроме manager.conf

Как бы золотое правило: Когда ничего не помогает - открой инструкцию.
Согласно инструкции:
Цитата:
manager.conf: Configuration of the Asterisk manager API

Сколько раз поднимал Asterisk, но никогда ничего подобного как у вас не было.
11-ая версия у вас какая именно ? 11.23.1 ?

Added after 15 minutes:

Ради интереса запустил свою завалявшуяся виртуалку с 11-ой версией.
Код:
Connected to Asterisk 11.7.0 currently running on localhost (pid = 1631)
localhost*CLI> manager show settings

Global Settings:
----------------
Manager (AMI): Yes
Web Manager (AMI/HTTP): No
TCP Bindaddress: 0.0.0.0:5038
HTTP Timeout (minutes): 60
TLS Enable: No
TLS Bindaddress: Disabled
TLS Certfile: asterisk.pem
TLS Privatekey:
TLS Cipher:
Allow multiple login: Yes
Display connects: No
Timestamp events: No
Channel vars:
Debug: No
Block sockets: No

Код:
[root@localhost ~]# netstat -anp | grep :5038
tcp 0 0 0.0.0.0:5038 0.0.0.0:* LISTEN 1631/asterisk

Меняем 0.0.0.0 на 127.0.0.1:
Код:
localhost*CLI> manager show settings

Global Settings:
----------------
Manager (AMI): Yes
Web Manager (AMI/HTTP): No
TCP Bindaddress: 127.0.0.1:5038
HTTP Timeout (minutes): 60
TLS Enable: No
TLS Bindaddress: Disabled
TLS Certfile: asterisk.pem
TLS Privatekey:
TLS Cipher:
Allow multiple login: Yes
Display connects: No
Timestamp events: No
Channel vars:
Debug: No
Block sockets: No

Код:
[root@localhost asterisk]# netstat -anp | grep :5038
tcp 0 0 127.0.0.1:5038 0.0.0.0:* LISTEN 1631/asterisk

manager.conf
Код:
[general]
enabled = yes
port = 5038
bindaddr = 127.0.0.1
displayconnects=no ;only effects 1.6+

[admin]
secret = amp111
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.255
read = system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate
write = system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate


Собственно никаких проблем с портом.

_________________
mega-net.ru - IT аутсорсинг
#8

А ОС какая? Я думаю здесь дело в особенности работы астериска на фряхе. Попробовал на двух разных машинах, обе имеющиеся в портах версии. Никаких настроек кроме активации ami в manager.conf не делал.
На фряшном форуме тоже на всякий случай топик создал, может там чего скажут. Ещё видимо к ментейнеру пакета обращусь.
#9

Моя виртуалка Asterisk 11 была установлена с образа http://downloads.freepbxdistro.org/ISO/F ... 662516.iso - соответственно там Linux.
Сам под FreeBSD сижу, но до сих пор пользую Asterisk 1.8, там таких проблем тоже нет.

Петров Р писал(а):
здесь дело в особенности работы астериска на фряхе.

Не понимаю о каких таких "особенностях" идет речь. Никаких особенностей не встречал/видел. Поставил, настроил, позьзуешь.

_________________
mega-net.ru - IT аутсорсинг
#10

virus_net @ Пт Сен 16, 2016 06:09 писал(а):
Моя виртуалка Asterisk 11 была установлена с образа http://downloads.freepbxdistro.org/ISO/F ... 662516.iso - соответственно там Linux.

Centos

Есть FreeBSD, Сentos , и остальной *nix Зоопарк Wink
#11

Ну в общем грешу в данном случае на излишние "настройки" своих систем. Видимо связано с тем, что сервак когда поднимаю пересобираю ядро и мир с внесением правок в ядро и src.conf.
Сейчас поставил в виртуалке чистую 11-RC1, никакого "пересбора" не произвожу.
Указал только в целом безобидные опции для сборки портов:
/etc/make.conf
Код:
CPUTYPE?=opteron-sse3
CFLAGS=-O2 -pipe
COPTFLAGS=-O2 -pipe

DEFAULT_VERSIONS+= perl=5.22 perl5=5.22 php=7.0 mysql=10.1m ruby=2.2

Так вот установил в этом окружении и AMI законно повисла на 5038 порту. Ну что значит сам с системой я перемудрил, но всё же надо понять в чём дело.
Есть подозрение что это из-за выпиленной в обоих предыдущих случаях поддержки IPV6 из ядра системы. Сейчас проверю.

Итого нашёл таки причину. Как говорится в IT-тусовке: ССЗБ Smile
Отключение IPV6 в src.conf, вне зависимости от состояния IPV6 в ядре приводит к тому, что AMI вешается на случайный порт.
#12

Ну не знаю не знаю. М.б. это для 11-ой ветки, но могу сказать что у меня тоже IPv6 выпилен из ядра FreeBSD и проблем с AMI на 1.8 нет.
Попробуйте установить 1.8 в виртуалку с вашими настройками.

_________________
mega-net.ru - IT аутсорсинг
#13

Нет, я же специально уточнил, что проявляется бага, когда именно системное окружение собрано без IPV6, это при указании
/etc/src.conf
Код:
WITHOUT_INET6=yes

А в ядре как раз никак не влияет есть поддержка IPV6 или нет.