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

Как увидеть не номер транка, а номер звонящего?

Asterisk GUI 16 сообщений -
#1

Прикол вот такой... Собсно меня это никогда не тыркало, входящие с транков внешних прекрасно дают номер на астер и абоненту, никаких проблем. А вот у меня тут 3 астера повязаны с экстенами у каждого. И абоненты между собой перезваниваются. Я на сей счет особо не думал, на каждом астере создан транк на 2 других и у каждого астера созданы для этих транков экстены. Ну например на астере а для астера б создан экстен 999, на астере б создан транк который регится в астере а под номером 999. И наоборот. И аутбаунд роуты на всех астерах с указанием соотв. транков эта группа номеров через этот астер, та через тот. Точнее это все не астеры, а триксбоксы различных степеней переделанности. Так вот возвращаясь... Звонит юзер астера а на юзера астера б и у этого юзера б на телефоне определяется не номер юзера а, а номер транка. А вот вдруг понадобилось чтобы был не номер транка у вызываемого, а номер звонящего. И вот я чета с лету не пойму как это сделать теперь... ПоможИте триксоманьяку?
#2

Не нужно использовать номер как регистрационный ИД.
Если речь о транках, то тебе нужно:

1) создать собственно именные транки между Астерисками, суть трубы, по которым звонишь. На этом этапе я очень рекомендую не ставить никакого фильтра в диал патерне, лучше фильтр ставить на маршруте, который использует этот транк. Например, на Астерисе X транки AsterY и AsterZ.
trunk name - AsterY
type=peer
host=dynamic
username=AsterY
secret=yyy

2) Определиться с диал планом внутренних номеров на каждом из них. На этом этапе я очень рекомендую использовать неодинаковые внутренние номера на каждом, например, на Астерисе X внутренние номера 1ХХ, на Астерисе Y - 2ХХ, на Астерисе Z - 3ХХ.

3) Тогда в исходящих маршрутах на Астерисе X пишем
маршрут toY, Dial patern 2XX, use trunk IAX2/AsterY
маршрут toZ, Dial patern 3XX, use trunk IAX2/AsterZ

При таком раскладе все номера сохраняются, и видны правильным образом в репортах CDR.
#3

Ded писал(а):
Не нужно использовать номер как регистрационный ИД.
Если речь о транках, то тебе нужно:

1) создать собственно именные транки между Астерисками, суть трубы, по которым звонишь. На этом этапе я очень рекомендую не ставить никакого фильтра в диал патерне, лучше фильтр ставить на маршруте, который использует этот транк. Например, на Астерисе X транки AsterY и AsterZ.


Я так полагаю что имеется в виду работа именно на уровне транков. С заполнением полей инбаунд и аутбаунд, с указанием в инбаунд context=from-internal? Никаких экстенов в данном случае заводить не надо...

Ded писал(а):
2) Определиться с диал планом внутренних номеров на каждом из них. На этом этапе я очень рекомендую использовать неодинаковые внутренние номера на каждом, например, на Астерисе X внутренние номера 1ХХ, на Астерисе Y - 2ХХ, на Астерисе Z - 3ХХ.
3) Тогда в исходящих маршрутах на Астерисе X пишем
маршрут toY, Dial patern 2XX, use trunk IAX2/AsterY
маршрут toZ, Dial patern 3XX, use trunk IAX2/AsterZ
При таком раскладе все номера сохраняются, и видны правильным образом в репортах CDR.


Попробовал. Вроде и правда. Во всяком случае в статистике полезли именно номера звонящих. Сенкс.
#4

Все работает, это правда. Но немного странновато. Астеры живут и на внешних интерфейсах и повязаны на впн друг с другом, составляя группу внутренних видимых друг другу подсетей. В схеме с сип экстенами и сип транками это все работало нормально. При замене на иакс чистые транки почему-то работать стабильно возжелала только схема с внешними соединениями. Попытка работать на локальные интерфейсы через впн по непонятной причине окончилась неудачно... Связь если и устанавливалась, то секунд на 5, не больше. Причем только в одну сторону. Я в иаксах не спец и нет пока времени попробовать с сип вариации... Нет предположений почему внутри локалки работать не желает? Это все-таки шифрованные соединения, в отличие от открытого трафа через весь инет.
#5

Это транспортный уровень.
Разобраться тебе поможет простой пинг, запущеный с одного * на другой *. На другом смотри tcpdump host VPN_IP_ADDR_OF_1ST_ASTERISK
1) Посмотри, действительно ли приходит с внутреннего адреса на внутренний?
2) Что прописано в iax.conf bindaddr ?
#6

Ded писал(а):
Это транспортный уровень.
Разобраться тебе поможет простой пинг, запущеный с одного * на другой *. На другом смотри tcpdump host VPN_IP_ADDR_OF_1ST_ASTERISK
1) Посмотри, действительно ли приходит с внутреннего адреса на внутренний?
2) Что прописано в iax.conf bindaddr ?


В биндадр прописаны нули. Порт иакса соксстатом честно показывает на звезду. На обоих. Ну пинги, само сбой, идут из обеих локалок, судя по дебагу иакса звонок приходит с ип впн интерфейса удаленного астера, далее идут ретри и отвал по нероуте. Я могу звонить с впн клиента на впн сервер, наоборот никак. В астере же нельзя из 5-ти интерфейсов выбрать только 2, к сожалению... Вот он и хватает все впнклиентские.
#7

Извини, очень невнятно излагаешь. Это комментарий человеку, который как бы рядом с тобой поднимал и конфигурил всю инфраструктуру. Постороннему такие высказывания
Цитата:
Я могу звонить с впн клиента на впн сервер, наоборот никак
вообще ничего не говорят. У нас используются ВПН в полный рост, в качестве впн клиента для коммивояджеров используется Cisco VPN CLient и OpenVPN client софт. В качестве VPN сервера используются Cisco VPN concentrator, Cisco PIX, FreeBSD server with IPsec enabled kernel.
Ни с одного из них нельзя звониnь, как ты понимаешь, никуда.
И что ты подразумевал в этой фразе понятно только тебе. Не пытайся только разъяснять и детализировать.
Схем слишком много, в большинстве случаев мы разделяем аппаратно туннелирование и телефонию, а у тебя похоже шампунь и кондиционер в одном флаконе. Если бы *** стояли во внутренних сетях, только с одним интерфейсом, а функции НАТа, ИП рутинга и тунеллирования выполняли бы другие железки - не было бы таких эффектов, как ты описал. Зачем наворачивать 5 ИП адресов на Астер?
#8

Ded писал(а):
Если бы *** стояли во внутренних сетях, только с одним интерфейсом, а функции НАТа, ИП рутинга и тунеллирования выполняли бы другие железки - не было бы таких эффектов, как ты описал. Зачем наворачивать 5 ИП адресов на Астер?


Все сервера мои и делаю все я от сетей до телефонии... Много туннелей и впн интерфейсов надо для функционирования сети как таковой. Помимо астерофункций у серваков еще куча, среди них - впн объединение кучи сетей. Их 6 штук всего... У всех хоть сколько-нибудь уважающих себя софтов я могу выбрать интерфейсы на которых они висят. У астера у единственого нет такого. Посему в момент когда он запускается в его распоряжении 5 сетевых интерфейсов и 1 туннель, который он, к превеликой моей радости, просечь не может. И ничего сделать я не могу. Мне нужен внешний интерфейс чтобы регились снаружи и нужен 1 внутренний реальный чтобы взаимодействовать со шлюзами и юзерами внутри. Но исключительно благодаря вышеописанному свойству астера выделить их я не могу. Вот потому и висит он на все что увидит. Вешать железо не могу, условия такие. Вешать еще сервера не могу по той же причине. Получается возвращаться к схеме транк-экстен?
#9

подними интерфейс типа eth0:5, назначь ему IP и скажи астерсику слушать только его (впиши его в кофиге). и РОУТИНГОМ рули в своей сетке как тебе нужно.
#10

anest писал(а):
подними интерфейс типа eth0:5, назначь ему IP и скажи астерсику слушать только его (впиши его в кофиге). и РОУТИНГОМ рули в своей сетке как тебе нужно.


Ну по тоакой схеме можно оставить только внешний интерфейс и все, даже локальщики, его смогут видеть. Но тогда начисто теряется шифрование потока, идущего через впн. А шифровать голос у нас пока никто не желает родными средствами.
#11

Цитата:
У всех хоть сколько-нибудь уважающих себя софтов я могу выбрать интерфейсы на которых они висят. У астера у единственого нет такого

Есть. В iax.conf дефолтное значение bindaddr=0.0.0.0 означает - слушать на всех интерфейсах. Но оригинироваться ему - с любого из доступных. Ты можешь прописать там bindaddr=10.1.1.1 и использовать нативный НАТ на этом же сервере.
Внешние клиенты могут на него подключаться по SIP, на его внешний интерфейс. А внутренние будут ходить по туннелям 10.0.0.0.
#12

Ded писал(а):
Цитата:
У всех хоть сколько-нибудь уважающих себя софтов я могу выбрать интерфейсы на которых они висят. У астера у единственого нет такого

Есть. В iax.conf дефолтное значение bindaddr=0.0.0.0 означает - слушать на всех интерфейсах. Но оригинироваться ему - с любого из доступных. Ты можешь прописать там bindaddr=10.1.1.1 и использовать нативный НАТ на этом же сервере.
Внешние клиенты могут на него подключаться по SIP, на его внешний интерфейс. А внутренние будут ходить по туннелям 10.0.0.0.

Что-то в этом роде я уже сделал. Только по непознанной причине один астер может звонить другому после перезагрузки сервера, а другой нет. Причем звонить он начинает, достаточно в веб интерфейсе трикса просто втупую сохранить неизменявшиеся настройки и нажать их apply... Фигня какая-то...
#13

Ну ты же разберёшься?
Если
Цитата:
в веб интерфейсе трикса просто втупую сохранить неизменявшиеся настройки и нажать их apply.
то при этом из базы мускула вписываются отсутствующие данные в _additiona.conf, и всё работает.
Что-то у тебя отсутствует в стартовых файлах конфигурации, а присутствует только в базе.
Проверять iax2 show peers, iax2 show registry.
Конечно, лучше использовать динамическую регистрацию, тогда четко видно с какого ИП идет регистрация.
#14

Ded писал(а):
Ну ты же разберёшься?
Если
Цитата:
в веб интерфейсе трикса просто втупую сохранить неизменявшиеся настройки и нажать их apply.
то при этом из базы мускула вписываются отсутствующие данные в _additiona.conf, и всё работает.

Да вот странно все это, но файлы до и после не имеют никакой разницы... Сейчас поставил иакс на внешние интерфейсы у обоих и поставил нат=ес. Что-то тут не так, а что понять не могу. Без нат ес не заработало после перезагрузки. Попробую с ним теперь.... Когда не работает пишет unable to create channel of type iax2 (cause 3 - no route to destination). Как оно может быть не роут то дестинатион если я на нем удаленно сижу... И почему схватывает при перезапуске через веб интерфейс - хрен знает.

Added after 18 minutes:

Небольшая просьба... А можно мне полный пример реально работающего иакс транка? Может я что не так делаю... Уже начинаются какие-то танцы с бубном просто... Совсем запутался...
#15

Если пляшешь с бубном, то начни с того, что удали существующие транки, и начни снова.
Asterisk X - main static server 10.11.12.13
Asterisk Y - dynamic server 10.9.8.7

IAX trunk on X:
Код:
trunk name IAXasterY
host=dynamic
secret=mysecret
type=peer
username=yyyy
context=from-internal

USER context для входящих: xxxx
Код:
type=user
auth=plaintext
context=from-internal
secret=supersecret


IAX trunk on Y:
Код:
trunk name IAXasterX
host=10.11.12.13
secret=supersecret
type=peer
username=xxxx

register => IAXasterY:mysecret@10.11.12.13

Проверяем на Asterisk X:
CLI>show iax2 peers
Проверяем на Asterisk Y:
CLI>show iax2 registry
#16

Ded писал(а):
Если пляшешь с бубном, то начни с того, что удали существующие транки, и начни снова.
Asterisk X - main static server 10.11.12.13
Asterisk Y - dynamic server 10.9.8.7


Ну так все и было на самом деле, убивать и заводить тоже пробовал. В результате вдруг заработало когда убрал хост динамик везде и с нат=ес. Правда последнее мне сильно сомнительно что нужно, но уже просто сил нет перегружать сервера когда все работает. Интерфейс для иакса залочен на внешний на обоих, коннектится туда же соотв. В общем работает пока, а там посмотрим... Надо стендик собирать, выяснять почему срывается на "виртуальных" интерфейсах. Спасиб. за помощь.