2017-12-12 1 views
0

Twilio에서 제공 한 보안 SIP 트렁크를 사용하여 IVR을 구현하고 있습니다. Twilio의 Asterisk 구성 안내서를 구현하고/usr/local/lib에 SRTP를 설치하고 https://wiki.asterisk.org/wiki/display/AST/Secure+Calling+Tutorial의 구성을 구현했습니다.별표 : SIP 호출에서 120 초 후 "TLS 완전 종료 경보 읽기 데이터"

2 분보다 긴 모든 호출에 문제가있는 것은 완전히 종료 할 수 없으며 Asterisk를 다시 시작합니다. (pjsip하지 chan_sip 사용)

sip.conf :

[general] 
; other configuration lines removed 
tlsenable=yes 
tlsbindaddr=0.0.0.0 
tlscertfile=/etc/pki/tls/private/pbx.pem 
tlscafile=/etc/pki/tls/private/gd_bundle-g2-g1.crt 
tlscipher=ALL 
tlsclientmethod=tlsv1 
tlsdontverifyserver=yes 


[twilio-trunk](!) 
type=peer 
context=from-twilio ;Which dialplan to use for incoming calls 
dtmfmode=rfc4733 
canreinvite=no 
insecure=port,invite 
transport=tls 
qualify=yes 
encryption=yes 
media_encryption=sdes 

내가하고 잘 전화를 받고, 나는 전화가 Twilio 자신의 지원 대기열에서 와이어 샤크 및 확인을 통해 모두 암호화 확인 할 수 있습니다. 모든 호출에 정확히 1백20초에서

이 디버그 팝업 :

[Dec 6 13:14:39] DEBUG[30015]: iostream.c:157 iostream_read: TLS clean shutdown alert reading data 
[Dec 6 13:14:39] DEBUG[30015]: chan_sip.c:2905 sip_tcptls_read: SIP TCP/TLS server has shut down 

통화가 호출자는 결코 그들이 컨텍스트에서 끊기를 명중 할 때까지 문제, 즉이 알고 양방향으로 흐를 계속 h, 1, 전화 끊기(). 그런 다음 Asterisk가 재시작 (새 PID)되고 호출자가 통화 시간이 빠르기 전에 또 다른 5 분 동안 limbo에 멈추게됩니다. Twilio는 BYE를 확인하고 전화 끊기 시점에서 ACK를 반환합니다.

13.11에 있었고 15.1.3으로 업데이트되었습니다. 120 초 이상 호출하면 디버그 및 별표가 다시 시작될 때 TLS 메시지가 표시됩니다.

Google 검색 결과가 없습니다. Twilio는 진짜 도움이되지 못했습니다. 누군가 일어나고있는 일과 내가 다음에 볼 필요가있는 곳을 밝힐 수 있습니까?

더 많은 로그 :

[Dec 8 10:18:48] DEBUG[4993][C-00000001]: channel.c:5551 set_format: Channel SIP/twilio0-00000000 setting write format path: gsm -> ulaw 
[Dec 8 10:18:48] DEBUG[4993][C-00000001]: res_rtp_asterisk.c:4017 rtp_raw_write: Difference is 2472, ms is 329 
[Dec 8 10:18:48] DEBUG[4993][C-00000001]: channel.c:3192 ast_settimeout_full: Scheduling timer at (50 requested/50 actual) timer ticks per second 
– <SIP/twilio0-00000000> Playing ‘IVR/omnicare_9d_account.gsm’ (language ‘en’) 
[Dec 8 10:18:48] DEBUG[4993][C-00000001]: res_rtp_asterisk.c:4928 ast_rtcp_interpret: Got RTCP report of 64 bytes from 34.203.250.7:10475 
[Dec 8 10:18:53] DEBUG[4993][C-00000001]: res_rtp_asterisk.c:4928 ast_rtcp_interpret: Got RTCP report of 64 bytes from 34.203.250.7:10475 
[Dec 8 10:18:55] DEBUG[4992]: iostream.c:157 iostream_read: TLS clean shutdown alert reading data 
[Dec 8 10:18:55] DEBUG[4992]: chan_sip.c:2905 sip_tcptls_read: SIP TCP/TLS server has shut down 
[Dec 8 10:18:58] DEBUG[4993][C-00000001]: channel.c:3192 ast_settimeout_full: Scheduling timer at (0 requested/0 actual) timer ticks per second 
[Dec 8 10:18:58] DEBUG[4993][C-00000001]: channel.c:3192 ast_settimeout_full: Scheduling timer at (0 requested/0 actual) timer ticks per second 
[Dec 8 10:18:58] DEBUG[4993][C-00000001]: channel.c:3192 ast_settimeout_full: Scheduling timer at (0 requested/0 actual) timer ticks per second 
[Dec 8 10:18:58] DEBUG[4993][C-00000001]: channel.c:5551 set_format: Channel SIP/twilio0-00000000 setting write format path: ulaw -> ulaw 
[Dec 8 10:18:58] DEBUG[4993][C-00000001]: res_rtp_asterisk.c:4928 ast_rtcp_interpret: Got RTCP report of 64 bytes from 34.203.250.7:10475 
[Dec 8 10:19:01] DEBUG[4914]: cdr.c:4305 ast_cdr_engine_term: CDR Engine termination request received; waiting on messages… 
Asterisk uncleanly ending (0). 
Executing last minute cleanups 
== Destroying musiconhold processes 
[Dec 8 10:19:01] DEBUG[4914]: res_musiconhold.c:1627 moh_class_destructor: Destroying MOH class ‘default’ 
[Dec 8 10:19:01] DEBUG[4914]: cdr.c:1289 cdr_object_finalize: Finalized CDR for SIP/twilio0-00000000 - start 1512749813.880448 answer 1512749813.881198 end 1512749941.201797 dispo ANSWERED 
== Manager unregistered action DBGet 
== Manager unregistered action DBPut 
== Manager unregistered action DBDel 
== Manager unregistered action DBDelTree 
[Dec 8 10:19:01] DEBUG[4914]: asterisk.c:2157 really_quit: Asterisk ending (0). 

답변

0

방화벽의 로그를 확인합니다. NAT 항목이 오래된/오래된 것으로 생각되는 방화벽에 의해 세션이 해체되는 문제가있었습니다.

당신은 또한 사용자/트렁크에 대한 sip.conf 항목에 옵션 qualify=yesnat=yes를 사용하여 유지 (keep-alive) 패킷을 보내도록 별표 구성을 시도 할 수 있습니다. 또는 rtpkeepalive=<secs> 인 RTP 스트림 내부. sip.conf에서 찾을 수있는 가장 좋은 문서는 github의 예제 설정입니다.

:

나는 (I 방화벽에 의해 발생 된 추측하고있어) 깨끗한/정상 폐쇄를 제안 some OpenSSL docs에 나를 가리키는 텍스트 "TLS 완전 종료 경고 읽기 데이터"에 대한 the source code 파고

TLS/SSL 연결이 닫혔습니다. 프로토콜 버전이 SSL 3.0 이상인 경우이 결과 코드는 프로토콜에서 클로저 경고가 발생한 경우, 즉 연결이 완전히 닫힌 경우에만 반환됩니다. 이 경우 SSL_ERROR_ZERO_RETURN이 반드시 기본 전송이 종료되었음을 나타내지는 않습니다.

+0

시도해 볼 수있는 또 다른 테스트는 두 번째 PBX가 가능한 한 동일한 구성에 가깝게 로컬로 통화하도록 구성하여 방정식에서 방화벽을 제거하는 것입니다. 이것은 pbx의 문제를 배제하고 방화벽에서 네트워크 간섭을 제안합니다. – QuickDanger