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

После обновления перестал работать SRTP.

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

Модератор: april22

После обновления перестал работать SRTP.

Сообщение o13 » 01 июл 2018, 04:09

Здравствуйте!

После обновления fedora 27 на fedora 28 (asterisk 14.7.x на asterisk 15.3.x) перестал работать SRTP.
Соединение устанавливается корректно (без ошибок), но голоса нет.
95.95.95.95 - IP 2-ух клиентов за NAT на Android CSipSimple
96.96.96.96 - external static IP Asterisk server 15.3.0
При установке соединения с SRTP на сервере:
Код: выделить все
sip set debug on
...
INVITE sips
Via: SIP/2.0/TLS
...
CSeq: 11970 INVITE
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
Supported: replaces, 100rel, timer, norefersub
Session-Expires: 1800
Min-SE: 90
User-Agent: CSipSimple_ASUS_Mobile/r2457
Content-Type: application/sdp
Content-Length: 588

v=0
o=- 3739380822 3739380822 IN IP4 192.168.7.5
s=pjmedia
c=IN IP4 192.168.7.5
t=0 0
m=audio 4006 RTP/SAVP 99 0 8 101
c=IN IP4 192.168.7.5
a=rtcp:4007 IN IP4 192.168.7.5
a=sendrecv
a=rtpmap:99 SILK/24000
a=fmtp:99 useinbandfec=0
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
...
a=crypto:1 AES_CM_128_HMAC_SHA1_80
a=crypto:2 AES_CM_128_HMAC_SHA1_32


На клиентах CSipSimple:
sip: TLS transport is used for immediate hop
sips: End-to-end signaling is supported secure
SRTP

Все протоколы без SRTP (UDP, TCP, TLS) - работают корректно.
При звонке с TLS+SRTP, на UDP, абонент настроенный на UDP слышит голос (т.е. голос в одну сторону)

tcpdump корректное голосовое соединение, например UDP-UDP (без SRTP):
Код: выделить все
IP (tos 0x20, ttl 52, id 3339, offset 0, flags [DF], proto UDP (17), length 92)
    95.95.95.95.newoak > 96.96.96.96.19129: [udp sum ok] UDP, length 64
IP (tos 0x20, ttl 52, id 3340, offset 0, flags [DF], proto UDP (17), length 92)
    95.95.95.95.newoak > 96.96.96.96.19129: [udp sum ok] UDP, length 64
IP (tos 0x20, ttl 52, id 3341, offset 0, flags [DF], proto UDP (17), length 120)
    95.95.95.95.terabase > 96.96.96.96.19128: [udp sum ok] UDP, length 92
IP (tos 0x20, ttl 52, id 3342, offset 0, flags [DF], proto UDP (17), length 200)
    95.95.95.95.terabase > 96.96.96.96.19128: [udp sum ok] UDP, length 172
IP (tos 0x20, ttl 52, id 0, offset 0, flags [DF], proto UDP (17), length 200)
    95.95.95.95.telelpathstart > 96.96.96.96.18824: [udp sum ok] UDP, length 172
IP (tos 0x20, ttl 52, id 0, offset 0, flags [DF], proto UDP (17), length 200)
    95.95.95.95.telelpathstart > 96.96.96.96.18824: [udp sum ok] UDP, length 172


tcpdump сбойного соединения TLS+SRTP-TLS+SRTP:

Код: выделить все
IP (tos 0x20, ttl 52, id 0, offset 0, flags [DF], proto UDP (17), length 210)
    95.95.95.95.4000 > 96.96.96.96.17862: [udp sum ok] UDP, length 182
IP (tos 0x0, ttl 64, id 11542, offset 0, flags [DF], proto UDP (17), length 210)
    96.96.96.96.12830 > 95.95.95.95.4010: [bad udp cksum 0x74dd -> 0x0cfb!] UDP, length 182
IP (tos 0x20, ttl 52, id 34375, offset 0, flags [DF], proto UDP (17), length 210)
    95.95.95.95.4010 > 96.96.96.96.12830: [udp sum ok] UDP, length 182
IP (tos 0x0, ttl 64, id 11543, offset 0, flags [DF], proto UDP (17), length 210)
    96.96.96.96.17862 > 95.95.95.95.4000: [bad udp cksum 0x74dd -> 0xc30d!] UDP, length 182
IP (tos 0x20, ttl 52, id 34376, offset 0, flags [DF], proto UDP (17), length 210)
    95.95.95.95.4010 > 96.96.96.96.12830: [udp sum ok] UDP, length 182
IP (tos 0x0, ttl 64, id 11544, offset 0, flags [DF], proto UDP (17), length 210)
    96.96.96.96.17862 > 95.95.95.95.4000: [bad udp cksum 0x74dd -> 0x4b15!] UDP, length 182


Основное из конфига sip.conf
Код: выделить все
[general]
...
udpbindaddr=0.0.0.0
tcpenable=yes
tcpbindaddr=0.0.0.0
tlsenable=yes
tlsbindaddr=0.0.0.0
transport=udp
srvlookup=yes
tlscertfile=/etc/pki/asterisk/asterisk.pem
tlsprivatekey=/etc/pki/asterisk/asterisk.pem
tlsdontverifyserver=yes
tlscipher=ALL
tlsclientmethod=tlsv1
nat = force_rport,comedia
directmedia=yes
...
[authentication]
;My Start
[office](!)
type=friend
context=call-out
secret=mysecret
host=dynamic
qualify=yes
canreinvite=no
callgroup=1
pickupgroup=1
dtmfmode=auto
allow=alaw
allow=ulaw
allow=g729
allow=g723
allow=g722
allow=gsm
allow=g726


asterisk.pem - self signed x509 server sertificate. Клиентские сертификаты не использую.
До обновления данная конфигурация была вполне рабочей.

Судя по всему нужно решать проблему bad udp cksum, которая проявляется только с SRTP. Но что стало ее причиной не понятно. Если кто сталкивался с подобным или может направить на мысль, буду благодарен. Если что-то еще важное упустил, пишите, предоставлю.
o13
 
Сообщений: 3
Зарегистрирован: 01 июл 2018, 02:18

Re: После обновления перестал работать SRTP.

Сообщение Repz » 01 июл 2018, 10:40

Обновление до 2.6.32-696.30.1.el6 положило srtp, до кучи queue модуль не подгружался ни в каких вариантах.
https://www.redhat.com/archives/rhsa-an ... 00067.html
downgrade или другая ос.
Repz
 
Сообщений: 126
Зарегистрирован: 04 мар 2015, 12:35

Re: После обновления перестал работать SRTP.

Сообщение ded » 01 июл 2018, 17:42

1) Синтаксис файла sip.conf не соответствует требованиям в части [general] transport=udp
https://wiki.asterisk.org/wiki/display/ ... +Transport

2) Смотрите занятие порта 5061 на Астериске через
netstat - nlp | grep :5061
ded
 
Сообщений: 13233
Зарегистрирован: 26 авг 2010, 19:00

Re: После обновления перестал работать SRTP.

Сообщение o13 » 01 июл 2018, 19:35

Код: выделить все
netstat -nlp | grep :5061
tcp        0      0 0.0.0.0:5061            0.0.0.0:*               LISTEN      28165/asterisk

в iptables порт открыт и доступен.

Код: выделить все
[general]
transport=udp


Считал, что это глобальный транспорт по умолчанию для тех клиентов, которые нет возможности настроить на TLS+SRTP. Такие устройства у меня имеются.
А включение TLS+SRTP я делал либо в шаблоне группы (если вся группа TLS+SRTP), либо на самом абоненте:

Код: выделить все
sip.conf
[office](!)
...
transport=tls
encryption=yes


либо

Код: выделить все
[1000](office)
callerid="Secretary" <Secretary>
transport=tls
encryption=yes
[1001](office)
callerid="Manager1" <Manager1>


1000 TLS+SRTP, 1001 UDP. До обновления звонки корректно ходили между различными абонентами.
Если неправильно представляю логику поправьте.

Repz писал(а):Обновление до 2.6.32-696.30.1.el6 положило srtp, до кучи queue модуль не подгружался ни в каких вариантах.
https://www.redhat.com/archives/rhsa-an ... 00067.html
downgrade или другая ос.


Да спасибо. Буду изучать в этом направлении.
Downgrade не хотелось бы. Всё равно рано или поздно придется делать upgrade, да и должны пофиксить, если это их проблема.
o13
 
Сообщений: 3
Зарегистрирован: 01 июл 2018, 02:18

Re: После обновления перестал работать SRTP.

Сообщение Zavr2008 » 03 июл 2018, 23:53

s=pjmedia

Ничего не говорит?
У Вас походу другой канальный драйвер включается chan_pjsip?
Asterisk-совместимые Российские SIP/E1 шлюзы Alvis. Для форумчан скидки ! В цены входит настройка связи с Asterisk! Помогаем в настройке TDM АТС: TDA/TDE/LDK и др.
Аватар пользователя
Zavr2008
 
Сообщений: 1168
Зарегистрирован: 27 янв 2011, 01:35

Re: После обновления перестал работать SRTP.

Сообщение o13 » 04 июл 2018, 09:42

Спасибо за замечание!
pjsip я не использовал, chan_pjsip в модулях загружен не был
В транспортах пусто.
Код: выделить все
pjsip show transports
No objects found.

Но были загружены другие модули res_pjsip*
Отключил их все на всякий случай.
Теперь в загруженных модулях не осталось упоминания о pjsip, тем не менее s=pjmedia так и остался. Похоже данная строка инициируется клиентом csipsimple, вот подтверждение моих мыслей:
https://4pda.ru/forum/index.php?s=&show ... &p=6891176
Однако прохождению голоса без SRTP на csipsimple это не мешает, а проблемы использования SRTP у всех абонентов.
o13
 
Сообщений: 3
Зарегистрирован: 01 июл 2018, 02:18


Вернуться в Вопросы новичков

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

cron
© 2008 — 2018 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH