Не проходит вызов с одного сервера Asterisk на 2-ой сервер при хранении пользователей в MySQL.
Есть 2 сервера Asterisk, (server1) и (server2).
Сервера связаны между собой sip-транком. (server1) (server2)
На (server1) подключается (Phone1) номер 1001, на (server2) подключается (Phone2) номер 1002. Phone1 и 2 - программные sip-телефоны.
На серверах настроено внешнее хранение extensions.conf и sip.conf в БД MySQL. Так же на серверах настроены хранение абонентов в БД MySQL(Realtime, таблица sippeers).
То есть, общая схема такая
| Код: | |||
| (MySQL Сервер) / \ (Phone1) -----> (Server1) (Server2) | |||
| У вас схема не правильная. Отказаустойчивость делается - через наличии mysql баз на обоих серверах и синхронизацией их в режиме - мастер/мастер. sip show peer 1001 и sip show peer 1002 - покажите | |||
| Извините, что долго не писал. Вот вывод для 1001 на Server1: * Name : 1001 Secret : MD5Secret : Remote Secret: Context : from-internal Subscr.Cont. : Language : ru AMA flags : Unknown Transfer mode: open CallingPres : Presentation Allowed, Not Screened Callgroup : Pickupgroup : MOH Suggest : Mailbox : VM Extension : asterisk LastMsgsSent : 32767/65535 Call limit : 0 Max forwards : 0 Dynamic : Yes Callerid : "" MaxCallBR : 384 kbps Expire : 537 Insecure : no Force rport : Yes ACL : No DirectMedACL : No T.38 support : No T.38 EC mode : Unknown T.38 MaxDtgrm: -1 DirectMedia : No PromiscRedir : No User=Phone : No Video Support: No Text Support : No Ign SDP ver : No Trust RPID : No Send RPID : No Subscriptions: Yes Overlap dial : Yes DTMFmode : rfc2833 Timer T1 : 500 Timer B : 32000 ToHost : Addr->IP : 192.168.77.102:41672 Defaddr->IP : (null) Prim.Transp. : TLS Allowed.Trsp : TLS Def. Username: 1001 SIP Options : (none) Codecs : 0x408 (alaw|ilbc) Codec Order : (alaw:20,ilbc:30) Auto-Framing : No Status : Unmonitored Useragent : Acrobits Softphone Reg. Contact : sip:1001@192.168.77.102:41672;rinstance=5119B249;transport=tls Qualify Freq : 60000 ms Sess-Timers : Accept Sess-Refresh : uas Sess-Expires : 1800 secs Min-Sess : 90 secs RTP Engine : asterisk Parkinglot : Use Reason : No Encryption : Yes Вот вывод для 1002 на Server2: * Name : 1002 Secret : MD5Secret : Remote Secret: Context : from-internal Subscr.Cont. : Language : ru AMA flags : Unknown Transfer mode: open CallingPres : Presentation Allowed, Not Screened Callgroup : Pickupgroup : MOH Suggest : Mailbox : VM Extension : asterisk LastMsgsSent : 32767/65535 Call limit : 0 Max forwards : 0 Dynamic : Yes Callerid : "" MaxCallBR : 384 kbps Expire : 484 Insecure : no Force rport : Yes ACL : No DirectMedACL : No T.38 support : No T.38 EC mode : Unknown T.38 MaxDtgrm: -1 DirectMedia : No PromiscRedir : No User=Phone : No Video Support: No Text Support : No Ign SDP ver : No Trust RPID : No Send RPID : No Subscriptions: Yes Overlap dial : Yes DTMFmode : rfc2833 Timer T1 : 500 Timer B : 32000 ToHost : Addr->IP : 192.168.77.100:56153 Defaddr->IP : (null) Prim.Transp. : TLS Allowed.Trsp : TLS Def. Username: 1002 SIP Options : (none) Codecs : 0x408 (alaw|ilbc) Codec Order : (alaw:20,ilbc:30) Auto-Framing : No Status : Unmonitored Useragent : Acrobits Softphone Reg. Contact : sip:1002@192.168.77.100:56153;rinstance=83314BB6;transport=tls Qualify Freq : 60000 ms Sess-Timers : Accept Sess-Refresh : uas Sess-Expires : 1800 secs Min-Sess : 90 secs RTP Engine : asterisk Parkinglot : Use Reason : No Encryption : Yes По MySQL понятно, так и предполагалось делать. | |||
| transport=udp ? Между серверами ? Prim.Transp. : TLS - И tls на клиентах ? Allowed.Trsp : TLS Вы как-то уже определитесь в чем вы работает в UDP или TLS И не забывайте - раз сервера и клиенты в разных сетях - 192.168. и 10.0. Делайте в extension.conf тестовых телефоны, примерно вот так и балуйтесь звоня на них Звоните, пикнуло, поругались в микрофон, нажали решетку, услышали свой голов +1 к мудрости exten => 592,1,Set(TIME="${STRFTIME(${EPOCH},,%Y-%m-%d_%H-%M-%S)}") exten => 592,n,Playback(beep) exten => 592,n,Record(/var/lib/asterisk/sounds/custom/record_${TIME}:gsm) exten => 592,n,Playback(beep) exten => 592,n,Playback(/var/lib/asterisk/sounds/custom/record_${TIME}) exten => 592,n,Hangup() Просто слушаете музыку exten => 598,1,Answer() exten => 598,n,MusicOnHold() exten => 598,n,Hangup() | |||
| Может непонятно объяснил. Транк между серверами я настроить могу, и он работает, и звонить могу, но только если настройки писать в sip.conf, и не использовать MySQL для хранения пользователей. Проблем с обычной настройкой через sip.conf нет. Проблема заключается в звонке через транк, когда пользователи хранятся в MySQL, и данная таблица используется всеми серверами. Я думаю, что необходимо при посылке INVITE подменять IP в каком то поле, наверно FROM, так как при INVITE посылается "1001@server1_ip_add" , а если поменять на IP на котором висит Phone1(т.е. 192.168.77.102), то Asterisk должен это проглотить. Возможно я что-то не знаю в авторизации INVITE, и не прав, тогда поправьте пожалуйста. Если логика верна, то как можно редактировать поле (и главное какое?), пробовал редактировать так Set(SIP_HEADER(From)="1001@192.168.77.102") , но Asterisk сказал "Function SIP_HEADER cannot be written to". Можно ли как то редактировать SIP заголовки, или необходим sip-proxy(Например kamailio)? На клиентах TLS, а между сервером UDP. А разве так запрещено делать? Вот что приходит на сервер Server2 от Server1 из sip-транка , при звонке с 1001 на 1002: INVITE sip:1002@10.0.0.5:5857 SIP/2.0 Via: SIP/2.0/UDP 10.0.0.4:5857;branch=z9hG4bK7e4051ae;rport Max-Forwards: 70 From: "1001" ;tag=as65b94839 To: Contact: Call-ID: 633ec19e6d85db38184f2327090d7ac2@10.0.0.4 CSeq: 102 INVITE User-Agent: VerySecureSipServer Date: Sat, 29 Dec 2012 06:26:43 GMT Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH Supported: replaces, timer Content-Type: application/sdp Content-Length: 274 Дальше он посылает ответ: SIP/2.0 401 Unauthorized Via: SIP/2.0/UDP 10.0.0.4:5857;branch=z9hG4bK7e4051ae;received=10.0.0.4;rport=5857 From: "1001" ;tag=as65b94839 To: ;tag=as1f02cf85 Call-ID: 633ec19e6d85db38184f2327090d7ac2@10.0.0.4 CSeq: 102 INVITE Server: VerySecureSipServer Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH Supported: replaces, timer WWW-Authenticate: Digest algorithm=MD5, realm="vsss", nonce="251ac46c" Content-Length: 0 UPD. Версия Asterisk 1.8.16. | |||
| Тогда проблема в маршрутизации с 10.0 и 192.168 Строку инвайте можно менять через включения\выключения NAT на астериск и редактируя externip и externhost, localnet Просто видя вот это Reg. Contact : sip:1002@192.168.77.100:56153;rinstance=83314BB6;transport=tls - значит клиент на 192.168.77.100 - смотрим sip show peers - и видим что регистрация успешная ? Потом идет звонок и ответ приходят на INVITE sip:1002@10.0.0.5:5857 SIP/2.0 - а почему 10.0.0.5 ? должен ведь приходить с адреса клиента | |||
| Возможно не совсем поняли, или я не понял. Номер 1001 регистрируется на Server1, номер 1002 регистрируется на Server2. Мы делаем вызов с номера 1001(который регистрировался на сервере Server1) номер 1002 (который регистрировался на сервере Server2). Сначала INVITE(тут строка правильная) приходит на (Server1) от номер 1001, потом (Server1) через SIP-Транк посылает INVITE на (Server2) "INVITE sip:1002@10.0.0.5:5857 SIP/2.0" и Server2 посылает ответ Server1-у в виде "SIP/2.0 401 Unauthorized " Или я вас не понял? Да, так же я пробовал звонить не через sip-trunk с server1 на Server2, а так: 1001 делает вызов на 1002, с 1001 INVITE приходит на Server1, далее Server1, находит сам в MySQL адрес 1002, и посылает 1002 INVITE(поля вроде правильные), но Server1 выдает "Connction Refuse", причем и порт и ip правильные, и телефон доступен. Как мне кажется, по правильному, такая логика и должна быть, Абонент делает вызов, сервер в БД находит Абонента, которому звонят, и делает ему вызов. Но такая логика вроде используется для SIP-proxy. Мне кажется, вэ том случае проблема кроется в том, где регистрируется клиент, и потом не принимает вызовы от других серверов, так как там не регистрировался. В какую сторону копать? в сторону звонка через sip-trunk, или напрямую абоненту? | |||
| Пьянству бой. type=peer за место friend и настраивайте маршрутизацию звонков _1001,1,Dial(SIP/Server1/${EXTEN}) | |||
| Да, собственно, у меня везде указаны friend. Ни peers , ни user не использую. UPD: Понял, рано увидел ваш комментарий, который не изменен. Да, Dial(SIP/Server1/${EXTEN}) такой. А зачем вместо friend использовать peers? | |||
| Сервер серверу звонить будет ? И тогда конструкция _1001,1,Dial(SIP/Server1/${EXTEN}) - заработает | |||
Не понял вопроса? Сервер серверу у меня звонит, но сервер, которому звонят, не авторизует INVITE.
| |||
| У вас не сервер серверу звонит, а пользователь на сервере звонит другому пользователю и в зависимости от маршрутизации идет разными путями
| |||
Да, верно, и по моей маршрутизации, звонок идет через транк на другой сервер. И проблема как раз втом, что второй сервер не пропускает такой вызов. Но если можно сделать вызов напрямую нужному абоненту, то мне транк и не нужен будет. Но так я пробовал(описано 2 поста назад), и получал ошибку. | |||
| Заработало ?
| |||
| Нет, проблема сохранилась "Failed to authenticate on INVITE to 1001".
| |||
| Включите guest=ok _________________ P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16 Не люблю gui-сборки: натуральный продукт вкуснее. И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу. | |||
| Если это единственный выход, тогда понятно. Спасибо.
| |||
| Не единственный - еще можно делать insecure=port раз у вас ТОЧНЫЕ направленгия _________________ P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16 Не люблю gui-сборки: натуральный продукт вкуснее. И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу. | |||
| Боюсь, я так уже делал. В самом начале написано "insecure=invite,port" | |||
| У меня написано именно порт, а не инвайт. Т.е. идентификация идет по порту, а не запросом _________________ P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16 Не люблю gui-сборки: натуральный продукт вкуснее. И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу. | |||
| Я не понимаю, почему вас не устраивает "insecure=invite,port". Но я пробовал и так как вы написали, тоже самое. | |||
| По моему проще уже доступ до консоли получить и самому настроить
| |||
| Простите, но доступ дать не могу, потому что они крутятся в тестовой виртуальной среде, и из-вне доступа к ним нет. Просто, у меня складывается ощущение, что вы считаете, что я один из многих новичков, который не может соединить 2 asterisk-а по sip-транку. Я могу это сделать, если настраивать через обычный файл, и у меня все работает, при настройке серверов через "ОБЫЧНЫЙ" файл sip.conf. И проблема возникает, при использовании MySQl для хранения пользователей. Если я не прав, исправьте меня пожалуйста. Если у вас есть настройки, которые должны работать в такой конфигурации, буду рад посмотреть. | |||
| У вас проблема не mysql, у вас проблема в настройках или клиентов или серверов. показывайте настройки на серверах по новой и показывайте звонок без дебага, и потом с дебагом | |||
| Скажите пожалуйста, а вы поднимали подобную схему? Просто интересуюсь, если да, то это возможно и значит у меня и правда где-то неправильная настройка. Но все равно, спасибо за ответы. Сейчас , к сожалению, не могу ничего показать, но завтра днем постораюсь. | |||
| Я в стане профи, есть конечно старший админ, и глобальные косяки правит он. Дома крутится тестовый сервер с реалтаймом на mysql, а на работе вообще толпа серверов и все работает. Правда потихоньку уходим от чистого астериск и переходим на связку веб морда и mysql. Веб довольно редкий, я не разу не видел обсуждений в русской части интернета - можете погуглить VOICEONE | |||
| Вот, добрался до виртуалок. В принципе проблему решил переходом с sip-транка на iax-транк. Но хотелось бы знать, почему не работало, если такая схема возможна. Настройки Server1: [general] static=yes language=ru alwaysauthreject=yes context=default allowguest=no tcpenable=no tlsenable=yes tlscafile=/etc/asterisk/keys/ca.pem tlscertfile=/etc/asterisk/keys/asterisk.pem tlsbindaddr=0.0.0.0 transport=tls rtptimeout=60 directmedia=no encryption=yes nat=yes canreinvite=no localnet=10.0.0.0/255.255.255.0 localnet=192.168.77.0/255.255.255.0 useragent=VerySecureSipServer realm=vsss disallow=all allow=alaw allow=ilbc rtcachefriends=yes rtautoclear=600 rtsavesysname=yes bindaddr=0.0.0.0:5857 [server2] host=10.0.0.5 type=friend port=5857 secret=A123456! transport=udp insecure=invite,port encryption=no context=from-internal Настройки на Server2: [general] static=yes language=ru alwaysauthreject=yes context=default allowguest=no tcpenable=no tlsenable=yes tlscafile=/etc/asterisk/keys/ca.pem tlscertfile=/etc/asterisk/keys/asterisk.pem tlsbindaddr=0.0.0.0 transport=tls rtptimeout=60 directmedia=no0 encryption=yes nat=yes canreinvite=no localnet=10.0.0.0/255.255.255.0 localnet=192.168.77.0/255.255.255.0 useragent=VerySecureSipServer realm=vsss disallow=all allow=alaw allow=ilbc rtcachefriends=yes rtautoclear=600 rtsavesysname=yes bindaddr=0.0.0.0:5857 [server1] host=10.0.0.4 type=friend port=5857 secret=A123456! transport=udp insecure=invite,port encryption=no context=from-internal Лог звонка на Server1(Звоним с 1001 на номер 1002 через sip-транк): [Jan 2 17:42:03] VERBOSE[1819] pbx_realtime.c: -- Executing [s@macro-dial-internal-to-internal:22] Dial("SIP/1001-00000000", "SIP/server2/1002") [Jan 2 17:42:03] VERBOSE[1819] netsock2.c: == Using SIP RTP CoS mark 5 [Jan 2 17:42:03] VERBOSE[1819] app_dial.c: -- Called SIP/server2/1002 [Jan 2 17:42:03] NOTICE[1802] chan_sip.c: Failed to authenticate on INVITE to '"1001" ;tag=as380e9680' [Jan 2 17:42:03] VERBOSE[1819] app_dial.c: -- SIP/server2-00000002 is circuit-busy На Server2 пусто. Теперь с sip дебагом. Лог звонка на Server1: [Jan 2 17:48:13] VERBOSE[1833] pbx_realtime.c: -- Executing [s@macro-dial-internal-to-internal:22] Dial("SIP/1001-00000003", "SIP/server2/1002") [Jan 2 17:48:13] VERBOSE[1833] netsock2.c: == Using SIP RTP CoS mark 5 [Jan 2 17:48:13] VERBOSE[1833] chan_sip.c: Audio is at 57082 [Jan 2 17:48:13] VERBOSE[1833] chan_sip.c: Adding codec 0x8 (alaw) to SDP [Jan 2 17:48:13] VERBOSE[1833] chan_sip.c: Adding codec 0x400 (ilbc) to SDP [Jan 2 17:48:13] VERBOSE[1833] chan_sip.c: Adding non-codec 0x1 (telephone-event) to SDP [Jan 2 17:48:13] VERBOSE[1833] chan_sip.c: Reliably Transmitting (NAT) to 10.0.0.5:5857: INVITE sip:1002@10.0.0.5:5857 SIP/2.0 Via: SIP/2.0/UDP 10.0.0.4:5857;branch=z9hG4bK3fa27566;rport Max-Forwards: 70 From: "1001" ;tag=as43c29f42 To: Contact: Call-ID: 1ba7486839ca5ca0765660b91463d6bb@10.0.0.4:5857 CSeq: 102 INVITE User-Agent: VerySecureSipServer Date: Wed, 02 Jan 2013 13:48:13 GMT Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH Supported: replaces, timer Content-Type: application/sdp Content-Length: 272 v=0 o=root 386280923 386280923 IN IP4 10.0.0.4 s=Asterisk PBX 1.8.16.0 c=IN IP4 10.0.0.4 t=0 0 m=audio 57082 RTP/AVP 8 97 101 a=rtpmap:8 PCMA/8000 a=rtpmap:97 iLBC/8000 a=fmtp:97 mode=30 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16 a=ptime:20 a=sendrecv --- [Jan 2 17:48:13] VERBOSE[1833] app_dial.c: -- Called SIP/server2/1002 [Jan 2 17:48:13] VERBOSE[1802] chan_sip.c: SIP/2.0 401 Unauthorized Via: SIP/2.0/UDP 10.0.0.4:5857;branch=z9hG4bK3fa27566;received=10.0.0.4;rport=5857 From: "1001" ;tag=as43c29f42 To: ;tag=as70eca72c Call-ID: 1ba7486839ca5ca0765660b91463d6bb@10.0.0.4:5857 CSeq: 102 INVITE Server: VerySecureSipServer Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH Supported: replaces, timer WWW-Authenticate: Digest algorithm=MD5, realm="vsss", nonce="6f894d81" Content-Length: 0 [Jan 2 17:48:13] VERBOSE[1802] chan_sip.c: --- (11 headers 0 lines) --- [Jan 2 17:48:13] VERBOSE[1802] chan_sip.c: Transmitting (NAT) to 10.0.0.5:5857: ACK sip:1002@10.0.0.5:5857 SIP/2.0 Via: SIP/2.0/UDP 10.0.0.4:5857;branch=z9hG4bK3fa27566;rport Max-Forwards: 70 From: "1001" ;tag=as43c29f42 To: ;tag=as70eca72c Contact: Call-ID: 1ba7486839ca5ca0765660b91463d6bb@10.0.0.4:5857 CSeq: 102 ACK User-Agent: VerySecureSipServer Content-Length: 0 --- [Jan 2 17:48:13] NOTICE[1802] chan_sip.c: Failed to authenticate on INVITE to '"1001" ;tag=as43c29f42' [Jan 2 17:48:13] VERBOSE[1833] app_dial.c: -- SIP/server2-00000005 is circuit-busy В это же время лог на Server2: [Jan 2 17:48:15] VERBOSE[1868] chan_sip.c: INVITE sip:1002@10.0.0.5:5857 SIP/2.0 Via: SIP/2.0/UDP 10.0.0.4:5857;branch=z9hG4bK3fa27566;rport Max-Forwards: 70 From: "1001" ;tag=as43c29f42 To: Contact: Call-ID: 1ba7486839ca5ca0765660b91463d6bb@10.0.0.4:5857 CSeq: 102 INVITE User-Agent: VerySecureSipServer Date: Wed, 02 Jan 2013 13:48:13 GMT Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH Supported: replaces, timer Content-Type: application/sdp Content-Length: 272 v=0 o=root 386280923 386280923 IN IP4 10.0.0.4 s=Asterisk PBX 1.8.16.0 c=IN IP4 10.0.0.4 t=0 0 m=audio 57082 RTP/AVP 8 97 101 a=rtpmap:8 PCMA/8000 a=rtpmap:97 iLBC/8000 a=fmtp:97 mode=30 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16 a=ptime:20 a=sendrecv [Jan 2 17:48:15] VERBOSE[1868] chan_sip.c: --- (14 headers 13 lines) --- [Jan 2 17:48:15] VERBOSE[1868] chan_sip.c: Sending to 10.0.0.4:5857 (NAT) [Jan 2 17:48:15] VERBOSE[1868] chan_sip.c: Using INVITE request as basis request - 1ba7486839ca5ca0765660b91463d6bb@10.0.0.4:5857 [Jan 2 17:48:15] VERBOSE[1868] chan_sip.c: Found peer '1001' for '1001' from 10.0.0.4:5857 [Jan 2 17:48:15] VERBOSE[1868] chan_sip.c: SIP/2.0 401 Unauthorized Via: SIP/2.0/UDP 10.0.0.4:5857;branch=z9hG4bK3fa27566;received=10.0.0.4;rport=5857 From: "1001" ;tag=as43c29f42 To: ;tag=as70eca72c Call-ID: 1ba7486839ca5ca0765660b91463d6bb@10.0.0.4:5857 CSeq: 102 INVITE Server: VerySecureSipServer Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH Supported: replaces, timer WWW-Authenticate: Digest algorithm=MD5, realm="vsss", nonce="6f894d81" Content-Length: 0 [Jan 2 17:48:15] VERBOSE[1868] chan_sip.c: Scheduling destruction of SIP dialog '1ba7486839ca5ca0765660b91463d6bb@10.0.0.4:5857' in 32000 ms (Method: INVITE) [Jan 2 17:48:15] VERBOSE[1868] chan_sip.c: ACK sip:1002@10.0.0.5:5857 SIP/2.0 Via: SIP/2.0/UDP 10.0.0.4:5857;branch=z9hG4bK3fa27566;rport Max-Forwards: 70 From: "1001" ;tag=as43c29f42 To: ;tag=as70eca72c Contact: Call-ID: 1ba7486839ca5ca0765660b91463d6bb@10.0.0.4:5857 CSeq: 102 ACK User-Agent: VerySecureSipServer Content-Length: 0 [Jan 2 17:48:15] VERBOSE[1868] chan_sip.c: --- (10 headers 0 lines) --- Буду рад, если подскажете, в чем проблема и что почитать дополнительно. | |||
| судя по настройкам вы советами не пользуетесь.
| |||
| Простите, а о каких конкретно настройках вы говорите? Перечитал, и вроде на все настройки, которые предлагали, я пробовал и отписывался, что не помогает, и ничего не меняется. Или что-то пропустил?
| |||
| Предлагали убрать invite оставить только port, сменить тип - за место friend, peer.
| |||
| Да, я это делал все, и отписывался, что ничего не поменялось.
| |||
| Скажите - а не забываете делать sip reload после изменений? Если честно - задача решается за 5 минут!!!!! Просто надо голову включить _________________ P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16 Не люблю gui-сборки: натуральный продукт вкуснее. И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу. | |||
| Да, я делал "sip reload". Может я чего то не понимаю. Понимаете, проблема в том, что если я использую одну таблицу MySQL с пользователями, то получаю вышеописанную ошибку. Но если я одного пользователя пропишу в sip.conf на Server1, а второго пользователя на Server2, с такими же параметрами как в таблице, и не меняя настроек sip-транка, то звонок проходит(!!!). Но если обоих пользователей вписать в sip.conf на каждый сервер(получатеся, каждый сервер имеет одинаковых peer-ов), и не использовать таблицу MySQL, то я получаю такую же ошибку. Соответственно вопрос, можете ли вы предоставить рабочий конфиг для серверов, с 2-мя одинаковыми пользователями на каждом сервере и sip-транком, чтобы 1 пользователь регистрировался на 1 сервере, а 2 пользователь регистрировался на втором сервере, и они могли бы звонить друг другу? | |||
| Подозреваю что все таки проблема не с базой mysql, и даже не с настройкой сервера. Скорее всего что-то в диал плане, под подозрением поиск пользователя - разделите пользователей не 1001 и 1002, а сделайте 1001 и 2001 И тогда на одном 1 сервере где зарегистрирован 1001, звонок на другой сервер пойдет через _2XXX,1,Dial(SIP/Server2/${EXTEN}) И соотвественно на 2 сервере где будет зарегистрировани 2001, звонок на вервер 1 пойдет через _1XXX,1,Dial(SIP/Server1/${EXTEN}) | |||
| Не факт насчет пользователей - у ТС не проходит авторизация, которая НАФИГ ему не нужна. Он пытается серверами 1 и 2 авторизоваться- тут уж искать траблы в асторизации-настройках. _________________ P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16 Не люблю gui-сборки: натуральный продукт вкуснее. И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу. | |||
| Не получается ли у вас такой ситуации, что host у нужного пользователя совпадает с host-ом сервера? Сталкивался несколько раз с подобной ситуацией, когда один из старых пиров оставался мусором в конфиге, а новый добавленный с тем же IP адресом работать отказывался из-за авторизации. _________________ IT Logic, разработка CRM систем, Call центры, сложные VoIP решения, телефонизация под ключ. | |||
| Не совсем понял вопроса. Если имеется ввиду совпадение IP peer-а и сервера, то в логах так и есть, при отправке INVITE с одного сервера, на другой, сервер, который отправляет INVITE, подставляет свой IP. Или я вас не понял. По поводу "мусора". Вы имеете ввиду, что на серверах имеется одинаковые peer-ы (т.е. на обоих серверах и 1001, и 1002) в настройках, то наверно так и есть, только используется не sip.conf, а таблица sippeers в MySQL. Я описал подобную ситуацию чуть выше. И как такая ситуация решается? Если я вас неправильно понял, не могли бы вы описать по подробней? | |||
| Вопрос - при чем тут INVITE??????? Вы понимаете понятие авторизации по порту-разрешениямIP-.... У одного моего заказчика было 3 сервера с учеткамии 1001 - но все звонки между ними летали. Одно но - звонок с сервера 1 номера 1001 в биллинге сервера 2 трактовался как .... звонок с сервера 2 на сервер 2!!!! Вот и вся засада. _________________ P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16 Не люблю gui-сборки: натуральный продукт вкуснее. И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу. | |||
| Наверно и не причем, поэтому я и написал вначале , что не понял вопроса. Что такое "авторизация по порту-разрешениямIP" - представляю. | |||
Как такая ситуация решается я не знаю, т.к. надо глубоко вникать в суть вашей проблемы. Я лишь попытался дать направление для размышления, посмотрите дамп SIP трафика, может быть asterisk запрос воспринимает не от того пира от которого вы хотите. _________________ IT Logic, разработка CRM систем, Call центры, сложные VoIP решения, телефонизация под ключ. | |||
| Всем спасибо за помощь. Решил проблему. Чтение исходников привело к мысли, что надо убрать пароль в настройках транка, и добавить параметр fromuser. Получилось следующая настройка транка на Server2: [server1] host=192.168.1.12 type=friend transport=udp fromuser=server2 fromdomain=192.168.1.13 qualify=yes encryption=no context=from-internal Звонок проходит, работает как надо. | |||