Есть kamailio+rtpproxy на PU.BL.IC.IP, другой стороной в PR.IV.AT.IP.
Есть asterisk за нат. Kamailio и * cвязаны между собой по статье asipto
Два клиента с разных сетей (оба сидят за натом) снаружи цепляются к kamailio.
клиент A - A.IP и A.NAT_IP
клиент B - B.IP и B.NAT_IP
В астериске созданы экстеншены на прием голосовой почты и на звонки между абонентами
приступаем к тестированию
Звоним с A и B на voicemail. Результат - слышимость в обе стороны, запись произведена успешно. RTP поток отправялется на PR.IV.AT.IP
Звоним с клиента A на клиента B Результат - RTP пакеты в сторону B отправляются не через RTPPROXY а на B.NAT !!
Got RTP packet from PR.IV.AT.IP:54352 (type 00, seq 001250, ts 2972880, len 000160)
Sent RTP packet to B.NAT_IP:42450 (type 00, seq 049499, ts 2972880, len 000160)
Got RTP packet from PR.IV.AT.IP:54352 (type 00, seq 001251, ts 2973040, len 000160)
Sent RTP packet to B.NAT_IP:42450 (type 00, seq 049500, ts 2973040, len 000160)
Got RTP packet from PR.IV.AT.IP:54352 (type 00, seq 001250, ts 2972880, len 000160)
Sent RTP packet to A.NAT_IP:42450 (type 00, seq 049499, ts 2972880, len 000160)
Got RTP packet from PR.IV.AT.IP:54352 (type 00, seq 001251, ts 2973040, len 000160)
Sent RTP packet to A.NAT_IP:42450 (type 00, seq 049500, ts 2973040, len 000160)
начал дебажить kamailio на nat traversal
# Caller NAT detection route
route[NATDETECT] {
#!ifdef WITH_NAT
force_rport();
if ( nat_uac_test("19") ) {
if (is_method("REGISTER")) {
fix_nated_register();
xlog('L_INFO',"route[NATDETECT] fix_nated_register() $rm from $fu (IP:$si:$sp)\n");
} else {
fix_nated_contact();
xlog('L_INFO',"route[NATDETECT] fix_nated_contact() $rm from $fu (IP:$si:$sp)\n");
}
setflag(FLT_NATS);
} else {
xlog('L_INFO',"route[NATDETECT] NO NAT nat_uac_test(\"19\") is false. $rm from $fu (IP:$si:$sp)\n");
}
#!endif
return;
}
что выяснилось - natuactest("19") не работает так как надо, а именно выдает FALSE для всех абонентов кроме приходящих из сети провайдера (хотя IP глобальный) в ситуации описанной первоначально оба абонента в сети провайдера
вот лог камалио с неправильным rtp
Sep 4 21:43:39 localhost /usr/local/sbin/kamailio[6439]: INFO: <script>: route[NATDETECT] NO NAT nat_uac_test("19") is false. REGISTER from sip:mylogin@sipp.xxx.ru:6000;transport=UDP (IP:176.83.127.50:53257)
Sep 4 21:43:39 localhost /usr/local/sbin/kamailio[6438]: INFO: <script>: route[NATDETECT] NO NAT nat_uac_test("19") is false. REGISTER from sip:mylogin@sipp.xxx.ru:6000;transport=UDP (IP:176.83.127.50:53257)
Sep 4 21:43:45 localhost /usr/local/sbin/kamailio[6441]: INFO: <script>: route[NATDETECT] NO NAT nat_uac_test("19") is false. REGISTER from sip:mylogin@sipp.xxx.ru:6000;transport=UDP (IP:176.83.127.50:53257)
Sep 4 21:43:45 localhost /usr/local/sbin/kamailio[6440]: INFO: <script>: route[NATDETECT] NO NAT nat_uac_test("19") is false. REGISTER from sip:mylogin@sipp.xxx.ru:6000;transport=UDP (IP:176.83.127.50:53257)
Sep 4 21:43:50 localhost /usr/local/sbin/kamailio[6439]: INFO: <script>: route[NATDETECT] NO NAT nat_uac_test("19") is false. INVITE from sip:mylogin@sipp.xxx.ru:6000;transport=UDP (IP:176.83.127.50:53257)
Sep 4 21:43:52 localhost /usr/local/sbin/kamailio[6438]: INFO: <script>: route[NATDETECT] NO NAT nat_uac_test("19") is false. INVITE from sip:mylogin@sipp.xxx.ru:6000;transport=UDP (IP:176.83.127.50:53257)
Sep 4 21:43:52 localhost /usr/local/sbin/kamailio[6440]: INFO: <script>: route[NATDETECT] NO NAT nat_uac_test("19") is false. INVITE from sip:mylogin@sipp.xxx.ru:6000;transport=UDP (IP:176.83.127.50:53257)
Sep 4 21:43:52 localhost /usr/local/sbin/kamailio[6440]: INFO: <script>: route[NATMANAGE] #1
Sep 4 21:43:52 localhost /usr/local/sbin/kamailio[6440]: INFO: <script>: route[NATMANAGE] #2
Sep 4 21:43:52 localhost /usr/local/sbin/kamailio[6440]: INFO: <script>: route[NATDETECT] NO NAT nat_uac_test("19") is false. INVITE from sip:mylogin@sipp.xxx.ru:6000;transport=UDP (IP:176.83.127.50:53257)
Sep 4 21:43:52 localhost /usr/local/sbin/kamailio[6426]: INFO: <script>: route[NATMANAGE] #1
Sep 4 21:43:52 localhost /usr/local/sbin/kamailio[6426]: INFO: <script>: route[NATMANAGE] #2
Sep 4 21:43:52 localhost /usr/local/sbin/kamailio[6427]: INFO: <script>: route[NATMANAGE] #1
Sep 4 21:43:52 localhost /usr/local/sbin/kamailio[6427]: INFO: <script>: route[NATMANAGE] #2
Sep 4 21:43:52 localhost /usr/local/sbin/kamailio[6427]: NOTICE: acc [acc.c:279]: acc_log_request(): ACC: transaction answered: timestamp=1378316632;method=INVITE;from_tag=f95c8372;to_tag=as7ee14b69;call_id=MjA1NjU4YmM0YzcwMzhiM2VkNjhjNTRjYTIyODVmZjg.;code=200;reason=OK;src_user=mylogin;src_domain=sipp.xxx.ru;src_ip=176.83.127.50;dst_ouser=599045;dst_user=599045;dst_domain=sipp.xxx.ru
Sep 4 21:43:52 localhost /usr/local/sbin/kamailio[6438]: INFO: <script>: route[NATDETECT] NO NAT nat_uac_test("19") is false. INVITE from sip:mylogin@sipp.xxx.ru:6000;transport=UDP (IP:176.83.127.50:53257)
Sep 4 21:43:53 localhost /usr/local/sbin/kamailio[6425]: INFO: <script>: route[NATMANAGE] #1
Sep 4 21:43:53 localhost /usr/local/sbin/kamailio[6425]: INFO: <script>: route[NATMANAGE] #2
Sep 4 21:43:53 localhost /usr/local/sbin/kamailio[6440]: INFO: <script>: route[NATDETECT] NO NAT nat_uac_test("19") is false. ACK from sip:mylogin@sipp.xxx.ru:6000;transport=UDP (IP:176.83.127.50:53257)
Sep 4 21:43:53 localhost /usr/local/sbin/kamailio[6440]: INFO: <script>: route[NATMANAGE] #1
Sep 4 21:43:53 localhost /usr/local/sbin/kamailio[6440]: INFO: <script>: route[NATMANAGE] #2
Sep 4 21:43:53 localhost /usr/local/sbin/kamailio[6439]: INFO: <script>: route[NATDETECT] NO NAT nat_uac_test("19") is false. ACK from sip:mylogin@sipp.xxx.ru:6000;transport=UDP (IP:176.83.127.50:53257)
Sep 4 21:43:53 localhost /usr/local/sbin/kamailio[6439]: INFO: <script>: route[NATMANAGE] #1
Sep 4 21:43:53 localhost /usr/local/sbin/kamailio[6439]: INFO: <script>: route[NATMANAGE] #2
Sep 4 21:43:53 localhost /usr/local/sbin/kamailio[6438]: INFO: <script>: route[NATDETECT] NO NAT nat_uac_test("19") is false. ACK from sip:mylogin@sipp.xxx.ru:6000;transport=UDP (IP:176.83.127.50:53257)
Sep 4 21:43:53 localhost /usr/local/sbin/kamailio[6438]: INFO: <script>: route[NATMANAGE] #1
Sep 4 21:43:53 localhost /usr/local/sbin/kamailio[6438]: INFO: <script>: route[NATMANAGE] #2
Sep 4 21:43:55 localhost /usr/local/sbin/kamailio[6441]: INFO: <script>: route[NATDETECT] NO NAT nat_uac_test("19") is false. BYE from sip:mylogin@sipp.xxx.ru:6000;transport=UDP (IP:176.83.127.50:53257)
Sep 4 21:43:55 localhost /usr/local/sbin/kamailio[6426]: NOTICE: acc [acc.c:279]: acc_log_request(): ACC: transaction answered: timestamp=1378316635;method=BYE;from_tag=f95c8372;to_tag=as7ee14b69;call_id=MjA1NjU4YmM0YzcwMzhiM2VkNjhjNTRjYTIyODVmZjg.;code=200;reason=OK;src_user=mylogin;src_domain=sipp.xxx.ru;src_ip=176.83.127.50;dst_ouser=599045;dst_user=599045;dst_domain=192.168.30.1
неправильно настроен nat traversal на kamailio. как правильно - смотрите example или обратитесь к проффесионалам.
Задан: 2013-08-31 18:21:48 +0400
Просмотрен: 1,242 раз
Обновлен: Sep 04 '13
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
не шуми. тут ты это не решишь. или в списке рассылок или обнови версию(перечитай доки)
meral ( 2013-09-05 02:25:36 +0400 )редактироватьпоследняя версия kamailio. может наоборот downgrade нужен ?
neiroman2k ( 2013-09-05 17:17:52 +0400 )редактироватьпроще всего разделить пиры на те у кого ната нет(через dispatcher/permission) и включить всем остальным. да и вообще нат всем не сильно мешает.
meral ( 2013-09-05 20:18:38 +0400 )редактироватьне представляю как это возможно. вот сейчас я за границей, соответственно через нат. Через неделю вернусь домой и буду без нат, но тоже не стабильно. как это все реализовать чтобы не заводить два акаунта (nat/nonat) на каждого абонента?
может-ли natuactest("19") из-за firewall криво работать ?
p.s. поставил kamailio 3.3.5 - все тоже самое :(
neiroman2k ( 2013-09-06 18:40:48 +0400 )редактироватьhint: акканты без ната вполне работают если вы их занатите.
meral ( 2013-09-07 04:02:37 +0400 )редактироватьспасибо, кэп :) я не понял смысла разделения
neiroman2k ( 2013-09-08 21:38:25 +0400 )редактироватьну так убери. только есть провайдеры которые не люят когда их натят. вообще я считаю системы на базе ser* подсемейства уже глубоко комерческие, и бесплатно их не консультирую.
meral ( 2013-09-09 01:47:51 +0400 )редактировать