Разбираюсь с установкой и настройкой 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 |
При таком конфиге перезапускаю 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 порт.
Помогите пожалуйста разобраться с этой непонятной ситуацией.
Для изучения возьмите стабильную версию: Asterisk 1.8 или Asterisk 11.
P.S. Чисто интересно:
А если в bindaddr указать 0.0.0.0, то какой порт слушается ?
P.S.S. А если убрать все пробелы между ключом и значением ? Ситуация не меняется ? Может бага в парсилке.
_________________
mega-net.ru - IT аутсорсинг
Попробовал убрать пробелы между ключом/значением:
| Код: |
| 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:
Сделал запись в багзилле, правда со своим корявым английским, но надеюсь там поймут:
ТУТ
P.S.
| Петров Р писал(а): |
| permit = 127.0.0.1/255.255.255.0 |
255.255.255.255
_________________
mega-net.ru - IT аутсорсинг
| virus_net @ Пн Сен 12, 2016 09:42 писал(а): |
| P.S. 255.255.255.255 |
Так вроде же считается что для loopback интерфейса подсеть 127.0.0.0/24, хотя сейчас в инете порыл так вообще оказывается 127.0.0.0/8
Скажите, а может надо в изначально поставляемых с дистрибутивом конфигах где-то ещё что-то подрихтовать кроме manager.conf чтобы AMI работало корректно. Хотя работает то она корректно, только на случайном порту
| Петров Р писал(а): |
| вроде же считается что для 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 аутсорсинг
На фряшном форуме тоже на всякий случай топик создал, может там чего скажут. Ещё видимо к ментейнеру пакета обращусь.
Сам под FreeBSD сижу, но до сих пор пользую Asterisk 1.8, там таких проблем тоже нет.
| Петров Р писал(а): |
| здесь дело в особенности работы астериска на фряхе. |
Не понимаю о каких таких "особенностях" идет речь. Никаких особенностей не встречал/видел. Поставил, настроил, позьзуешь.
_________________
mega-net.ru - IT аутсорсинг
| virus_net @ Пт Сен 16, 2016 06:09 писал(а): |
| Моя виртуалка Asterisk 11 была установлена с образа http://downloads.freepbxdistro.org/ISO/F ... 662516.iso - соответственно там Linux. |
Centos
Есть FreeBSD, Сentos , и остальной *nix Зоопарк
Сейчас поставил в виртуалке чистую 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-тусовке: ССЗБ
Отключение IPV6 в src.conf, вне зависимости от состояния IPV6 в ядре приводит к тому, что AMI вешается на случайный порт.
Попробуйте установить 1.8 в виртуалку с вашими настройками.
_________________
mega-net.ru - IT аутсорсинг
/etc/src.conf
| Код: |
| WITHOUT_INET6=yes |
А в ядре как раз никак не влияет есть поддержка IPV6 или нет.