Назад | Перейти на главную страницу

Не удается получить голос после изменения порта UDP в Asterisk

Тестовая среда состоит из клиента CSipSimple, сервера Asterisk и маршрутизатора с NAT. Раньше оборудование использовало UDP порт 5060, и все было хорошо. Затем я изменил номер порта на 15000 в Asterisk, в правиле переадресации маршрутизатора и в клиентском приложении. Теперь при доступе к сети извне клиент может зарегистрироваться, но при вызове какого-либо расширения Asterisk жалуется на невозможность создания канала DAHDI. Когда клиент находится в локальной сети, звонки работают.

Что пошло не так? Я изменил только номер порта управления.

Обновить

Прежде всего, я должен упомянуть, что Asterisk всегда жалуется на невозможность создания канала DAHDI, когда я звоню на внутренний номер 100, независимо от того, работает голос или нет. Таким образом, это сообщение об ошибке можно игнорировать.

Теперь разные хвосты подробных журналов вызовов:

Мобильный клиент зарегистрирован через 3G, нет звука (звонок, перехват, тайм-аут):

-- SIP/103-00000001 answered SIP/101-00000000
   > 0x7fda800295a0 -- Probation passed - setting RTP source address to 192.168.1.100:5062

Вот и все. Больше сообщений нет.

Мобильный клиент зарегистрирован по WiFi, звук работает (звонок, звонок, разговор, зависание):

  -- SIP/103-00000003 answered SIP/101-00000002
     > 0x7fda88026620 -- Probation passed - setting RTP source address to 192.168.1.100:5062
     > 0x7fda78013fb0 -- Probation passed - setting RTP source address to 192.168.1.112:4000
     > 0x7fda78013fb0 -- Probation passed - setting RTP source address to 192.168.1.112:4000
  -- Executing [h@macro-dial-one:1] Macro("SIP/101-00000002", "hangupcall,") in new stack
  -- Executing [s@macro-hangupcall:1] GotoIf("SIP/101-00000002", "1?theend") in new stack
  -- Goto (macro-hangupcall,s,3)
  -- Executing [s@macro-hangupcall:3] ExecIf("SIP/101-00000002", "0?Set(CDR(recordingfile)=)") in new stack
  -- Executing [s@macro-hangupcall:4] Hangup("SIP/101-00000002", "") in new stack
== Spawn extension (macro-hangupcall, s, 4) exited non-zero on 'SIP/101-00000002' in macro 'hangupcall'
== Spawn extension (macro-dial-one, h, 1) exited non-zero on 'SIP/101-00000002'
== Spawn extension (macro-dial-one, s, 43) exited non-zero on 'SIP/101-00000002' in macro 'dial-one'
== Spawn extension (macro-exten-vm, s, 9) exited non-zero on 'SIP/101-00000002' in macro 'exten-vm'
== Spawn extension (from-internal, 103, 2) exited non-zero on 'SIP/101-00000002'

Я подозреваю, что ваш порт SIP теперь находится в диапазоне RTP, поэтому Asterisk не понимает, что это SIP-соединение. Либо переместите порт SIP, либо переместите диапазон портов RTP, чтобы они не перекрывались.

Захватите вывод CLI неудавшегося вызова (вне локальной сети) и успешного вызова (в локальной сети) и опубликуйте результаты здесь.


Чтобы записать вывод CLI, из командной строки bash:

asterisk -r
core set verbose 10

Затем сделайте звонок из вашей локальной сети, которая работает, затем сделайте звонок из-за пределов вашей локальной сети, которая не работает. Опубликуйте полный вывод вышеуказанного (я предполагаю, что у вас есть простой диалплан). Если вы используете стандартную АТС, такую ​​как Elastix или FreePBX, вывод может быть слишком длинным, чтобы размещать здесь ...