VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Не работают звонки через SRTP

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

Ответить
Аватара пользователя
Reader
Сообщения: 152
Зарегистрирован: 24 апр 2013, 10:35

Не работают звонки через SRTP

Сообщение Reader »

Дано: Elastix 2.4.0 х64, есть 2 local SIP-Ext. Связь по UDP - замечательная. Теперь поставлена задача сделать им связь через SRTP. Ну, поставлена, значит нам туда дорога. Проверил - модуль SRTP в Астериск загружен. Сгенерировал ключи SRTP согласно рекомендациям производителя (https://wiki.asterisk.org/wiki/display/ ... g+Tutorial). Сгенерировались. Установил себе Zoiper (free). Сделал account, сделал через Zoiper обычную связь через SIP-UDP - fine. Загрузил в Zoiper файлик certs.pem. Загрузилось. Добавил записи поддержки TLS v1 и SRTP. Сделал Unregister - Register. Добился идеальной регистрации (зелёная галочка, Registered). Звоню. По исходящей связи дозвон на DAHDI и на обычных local SIP-Ext. получается быстро, но в соединении стороны вообще не слышат друг друга !!! А входящие звонки на построенного SIP-SRTP-Зойпера обрываются так и не установившись (звучит "пип" и CLI пишет Congested, а Zoiper пишет "SIP 2 - Can't find matching codec in SDP, service or option not implemented, unspecified", хотя ранее без SRTP все кодеки Астериска Зойпер устраивали). Странно, но Log никаких Error не пишет (только традиционные VERBOSE) ... Что бы ещё донастроить в Астериске, чтобы SRTP-connect заработал и чтобы абоненты слышали друг друга ?
Уж лучше колымить в Гондурасе, чем гондурасить на Колыме !
ded
Сообщения: 15628
Зарегистрирован: 26 авг 2010, 19:00

Re: Не работают звонки через SRTP

Сообщение ded »

Теория: два клиента (Zoiper) смогут установить шифроголосовое соединение по SRTP peer-to-peer если
- разрешён реинвайт (+ directmedia=yes)
- нет никаких опций в строке Dial, то есть
exten => 123,1,Dial(SIP/123)
иначе вместо одного закрытого медиапотока между двумя телефонами образовывается два плеча, через Астериск, что разрушает саму концепцию шифрования голоса.

Увидеть почему SIP 2 - Can't find matching codec in SDP Вы можете включив sip debug и отловить INVITE, вот там в SDP всё увидите.
Аватара пользователя
Reader
Сообщения: 152
Зарегистрирован: 24 апр 2013, 10:35

Re: Не работают звонки через SRTP

Сообщение Reader »

А не поможете разобраться ?
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
-- Executing [s@macro-dial-one:37] Dial("SIP/7201-0000006d", "SIP/2476,"",tr") in new stack
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
Audio is at 12480
Adding codec 0x4 (ulaw) to SDP
Adding codec 0x8 (alaw) to SDP
Adding codec 0x2 (gsm) to SDP
Adding non-codec 0x1 (telephone-event) to SDP
Reliably Transmitting (NAT) to 213.87.240.255:55384:
INVITE sip:2476@10.47.169.32:42009;rinstance=e0e841e5572f3dbc;transport=TLS SIP/2.0
Via: SIP/2.0/TLS 10.11.200.21:5061;branch=z9hG4bK69772874;rport
Max-Forwards: 70
From: "3CX phone" <sip:7201@10.11.200.21>;tag=as3b559919
To: <sip:2476@10.47.169.32:42009;rinstance=e0e841e5572f3dbc;transport=TLS>
Contact: <sip:7201@10.11.200.21:5061;transport=TLS>
Call-ID: 1173d242081575865ce80d9a02a901e9@10.11.200.21:5061
CSeq: 102 INVITE
User-Agent: FPBX-2.8.1(1.8.20.0)
Date: Thu, 26 Jun 2014 08:32:39 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
Content-Type: application/sdp
Content-Length: 282

v=0
o=root 227377576 227377576 IN IP4 10.11.200.21
s=Asterisk PBX 1.8.20.0
c=IN IP4 10.11.200.21
t=0 0
m=audio 12480 RTP/AVP 0 8 3 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:3 GSM/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=sendrecv

---
-- Called SIP/2476

<--- SIP read from TLS:213.87.240.255:55384 --->
SIP/2.0 415 Unsupported Media Type
Via: SIP/2.0/TLS 10.11.200.21:5061;branch=z9hG4bK69772874;rport=5061;received=195.58.3.56
To: <sip:2476@10.47.169.32:42009;rinstance=e0e841e5572f3dbc;transport=TLS>;tag=3a533134
From: "3CX phone"<sip:7201@10.11.200.21>;tag=as3b559919
Call-ID: 1173d242081575865ce80d9a02a901e9@10.11.200.21:5061
CSeq: 102 INVITE
User-Agent: Z 3.2.21357 r21367
Content-Length: 0

<------------->
--- (8 headers 0 lines) ---
Transmitting (NAT) to 213.87.240.255:55384:
ACK sip:2476@10.47.169.32:42009;rinstance=e0e841e5572f3dbc;transport=TLS SIP/2.0
Via: SIP/2.0/TLS 10.11.200.21:5061;branch=z9hG4bK69772874;rport
Max-Forwards: 70
From: "3CX phone" <sip:7201@10.11.200.21>;tag=as3b559919
To: <sip:2476@10.47.169.32:42009;rinstance=e0e841e5572f3dbc;transport=TLS>;tag=3a533134
Contact: <sip:7201@10.11.200.21:5061;transport=TLS>
Call-ID: 1173d242081575865ce80d9a02a901e9@10.11.200.21:5061
CSeq: 102 ACK
User-Agent: FPBX-2.8.1(1.8.20.0)
Content-Length: 0


---
Scheduling destruction of SIP dialog '1173d242081575865ce80d9a02a901e9@10.11.200.21:5061' in 43840 ms (Method: INVITE)
== Everyone is busy/congested at this time (1:0/0/1)
-- Executing [s@macro-dial-one:38] ExecIf("SIP/7201-0000006d", "0?Set(DIALSTATUS=)") in new stack
-- Executing [s@macro-dial-one:39] GosubIf("SIP/7201-0000006d", "0?s-CHANUNAVAIL,1") in new stack
-- Executing [s@macro-dial-one:40] MacroExit("SIP/7201-0000006d", "") in new stack
-- Executing [s@macro-exten-vm:10] GotoIf("SIP/7201-0000006d", "0?exit") in new stack
-- Executing [s@macro-exten-vm:11] Set("SIP/7201-0000006d", "SV_DIALSTATUS=CHANUNAVAIL") in new stack
-- Executing [s@macro-exten-vm:12] GosubIf("SIP/7201-0000006d", "0?docfu,1") in new stack
-- Executing [s@macro-exten-vm:13] GosubIf("SIP/7201-0000006d", "0?docfb,1") in new stack
-- Executing [s@macro-exten-vm:14] Set("SIP/7201-0000006d", "DIALSTATUS=CHANUNAVAIL") in new stack
-- Executing [s@macro-exten-vm:15] NoOp("SIP/7201-0000006d", "Voicemail is 'novm'") in new stack
-- Executing [s@macro-exten-vm:16] GotoIf("SIP/7201-0000006d", "1?s-CHANUNAVAIL,1") in new stack
-- Goto (macro-exten-vm,s-CHANUNAVAIL,1)
-- Executing [s-CHANUNAVAIL@macro-exten-vm:1] NoOp("SIP/7201-0000006d", "IVR_RETVM: IVR_CONTEXT: ") in new stack
-- Executing [s-CHANUNAVAIL@macro-exten-vm:2] GotoIf("SIP/7201-0000006d", "0?exit,1") in new stack
-- Executing [s-CHANUNAVAIL@macro-exten-vm:3] PlayTones("SIP/7201-0000006d", "congestion") in new stack
-- Executing [s-CHANUNAVAIL@macro-exten-vm:4] Congestion("SIP/7201-0000006d", "10") in new stack
== Spawn extension (macro-exten-vm, s-CHANUNAVAIL, 4) exited non-zero on 'SIP/7201-0000006d' in macro 'exten-vm'
== Spawn extension (from-internal, 2476, 1) exited non-zero on 'SIP/7201-0000006d'
-- Executing [h@from-internal:1] Macro("SIP/7201-0000006d", "hangupcall") in new stack
-- Executing [s@macro-hangupcall:1] GotoIf("SIP/7201-0000006d", "1?endmixmoncheck") in new stack
-- Goto (macro-hangupcall,s,9)
-- Executing [s@macro-hangupcall:9] NoOp("SIP/7201-0000006d", "End of MIXMON check") in new stack
-- Executing [s@macro-hangupcall:10] GotoIf("SIP/7201-0000006d", "1?nomeetmemon") in new stack
-- Goto (macro-hangupcall,s,28)
-- Executing [s@macro-hangupcall:28] NoOp("SIP/7201-0000006d", "End of MEETME check") in new stack
-- Executing [s@macro-hangupcall:29] GotoIf("SIP/7201-0000006d", "1?noautomon") in new stack
-- Goto (macro-hangupcall,s,34)
-- Executing [s@macro-hangupcall:34] NoOp("SIP/7201-0000006d", "TOUCH_MONITOR_OUTPUT=") in new stack
-- Executing [s@macro-hangupcall:35] GotoIf("SIP/7201-0000006d", "1?noautomon2") in new stack
-- Goto (macro-hangupcall,s,41)
-- Executing [s@macro-hangupcall:41] NoOp("SIP/7201-0000006d", "MONITOR_FILENAME=") in new stack
-- Executing [s@macro-hangupcall:42] GotoIf("SIP/7201-0000006d", "1?skiprg") in new stack
-- Goto (macro-hangupcall,s,45)
-- Executing [s@macro-hangupcall:45] GotoIf("SIP/7201-0000006d", "1?skipblkvm") in new stack
-- Goto (macro-hangupcall,s,48)
-- Executing [s@macro-hangupcall:48] GotoIf("SIP/7201-0000006d", "1?theend") in new stack
-- Goto (macro-hangupcall,s,50)
-- Executing [s@macro-hangupcall:50] AGI("SIP/7201-0000006d", "hangup.agi") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/hangup.agi
-- <SIP/7201-0000006d>AGI Script hangup.agi completed, returning 0
-- Executing [s@macro-hangupcall:51] Hangup("SIP/7201-0000006d", "") in new stack
== Spawn extension (macro-hangupcall, s, 51) exited non-zero on 'SIP/7201-0000006d' in macro 'hangupcall'
== Spawn extension (from-internal, h, 1) exited non-zero on 'SIP/7201-0000006d'

<--- SIP read from TLS:213.87.240.255:55384 --->
PUBLISH sip:2476@e2.uralmash.ru;transport=TLS SIP/2.0
Via: SIP/2.0/TLS 10.47.169.32:42009;branch=z9hG4bK-d8754z-a5fc7d086f84c323-1---d8754z-
Max-Forwards: 70
Contact: <sip:2476@10.47.169.32:42009;transport=TLS>
To: <sip:2476@e2.uralmash.ru;transport=TLS>
From: <sip:2476@e2.uralmash.ru;transport=TLS>;tag=c2782660
Call-ID: MDczZjY3ZTk0NDNhYjFjZTU4Nzc4YmIxNDI4ODZkM2M.
CSeq: 1 PUBLISH
Expires: 600
Allow: INVITE, ACK, CANCEL, BYE, NOTIFY, REFER, MESSAGE, OPTIONS, INFO, SUBSCRIBE
Content-Type: application/pidf+xml
Supported: replaces, norefersub, extended-refer, timer, X-cisco-serviceuri
User-Agent: Z 3.2.21357 r21367
Event: presence
Allow-Events: presence, kpml
Content-Length: 262

<?xml version="1.0" encoding="UTF-8"?>
<presence xmlns="urn:ietf:params:xml:ns:pidf" entity="sip:2476@e2.uralmash.ru;transport=TLS"> <tuple id="2476" > <status><basic>open</basic></status> <note>Online</note> </tuple>
</presence>
<------------->
--- (16 headers 3 lines) ---

<--- Transmitting (NAT) to 213.87.240.255:55384 --->
SIP/2.0 489 Bad Event
Via: SIP/2.0/TLS 10.47.169.32:42009;branch=z9hG4bK-d8754z-a5fc7d086f84c323-1---d8754z-;received=213.87.240.255;rport=55384
From: <sip:2476@e2.uralmash.ru;transport=TLS>;tag=c2782660
To: <sip:2476@e2.uralmash.ru;transport=TLS>;tag=as1b2cd90e
Call-ID: MDczZjY3ZTk0NDNhYjFjZTU4Nzc4YmIxNDI4ODZkM2M.
CSeq: 1 PUBLISH
Server: FPBX-2.8.1(1.8.20.0)
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
Content-Length: 0


<------------>
Really destroying SIP dialog 'MDczZjY3ZTk0NDNhYjFjZTU4Nzc4YmIxNDI4ODZkM2M.' Method: PUBLISH
Уж лучше колымить в Гондурасе, чем гондурасить на Колыме !
Аватара пользователя
zzuz
Сообщения: 1658
Зарегистрирован: 21 сен 2010, 13:33
Контактная информация:

Re: Не работают звонки через SRTP

Сообщение zzuz »

- нет никаких опций в строке Dial, то есть
Линия24 - Системы Массового Телефонного Обслуживания
ded
Сообщения: 15628
Зарегистрирован: 26 авг 2010, 19:00

Re: Не работают звонки через SRTP

Сообщение ded »

У Вас там нет никакого SRTP, смотреть надо на начальный инвайт от клиента, а у Вас (выше) от Астериска.
При правильном раскладе sdp содержит такие строки
a=rtcp:49189 - порт для RTCP медиа потока
a=label:Audio
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:D/WNrgIRlJGl/eNZLSThRIVb7LwMm6DMw+Uj6yfm|2^31|1:1
a=crypto:2 AES_CM_128_HMAC_SHA1_80 inline:Q8Fp7ixgaQoY4oCSzPjIUm0Hp8ORT3Jw0KVX7mVA|2^31

http://ru.wikipedia.org/wiki/SRTP
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH