Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

История изменений [назад]

нажмите, чтобы скрыть/показать версии 1
изначальная версия
редактировать

спросил 2013-08-31 18:21:48 +0400

neiroman2k Gravatar neiroman2k

kamailio+rtpproxy+asterisk

Есть kamailio+rtpproxy на PU.BL.IC.IP и другой стороной в PR.IV.AT.IP есть asterisk за нат связаны между собой по статье asipto

два клиента с разных сетей (оба сидят за натом) снаружи цепляются к rtpproxy у клиентов имеются

клиент A - A.IP и A.NAT_IP
клиент B - B.IP и B.NAT_IP

в астериске созданы экстеншены на прием голосовой почты и на звонки между абонентами

приступаем к тестированию

  1. Звоним с A и B на voicemail. Результат - слышимость в обе стороны, запись произведена успешно. RTP поток отправялется на PR.IV.AT.IP

  2. Звоним с клиента 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)
  1. Звоним с клиента B на клиента A Результат - RTP пакеты в сторону A отправляются не через RTPPROXY а на A.NAT !!

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+rtpproxy+asterisk

Есть kamailio+rtpproxy на PU.BL.IC.IP и PU.BL.IC.IP, другой стороной в PR.IV.AT.IP есть asterisk за нат связаны между собой по статье asipto

два Два клиента с разных сетей (оба сидят за натом) снаружи цепляются к rtpproxy у клиентов имеютсяkamailio.

клиент A - A.IP и A.NAT_IP
клиент B - B.IP и B.NAT_IP

в В астериске созданы экстеншены на прием голосовой почты и на звонки между абонентами

приступаем к тестированию

  1. Звоним с A и B на voicemail. Результат - слышимость в обе стороны, запись произведена успешно. RTP поток отправялется на PR.IV.AT.IP

  2. Звоним с клиента 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)
  1. Звоним с клиента B на клиента A Результат - RTP пакеты в сторону A отправляются не через RTPPROXY а на A.NAT !!

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+rtpproxy+asterisk

Есть kamailio+rtpproxy на PU.BL.IC.IP, другой стороной в PR.IV.AT.IP есть PR.IV.AT.IP.

Есть asterisk за нат связаны нат. Kamailio и * cвязаны между собой по статье asipto

Два клиента с разных сетей (оба сидят за натом) снаружи цепляются к kamailio.

клиент A - A.IP и A.NAT_IP
клиент B - B.IP и B.NAT_IP

В астериске созданы экстеншены на прием голосовой почты и на звонки между абонентами

приступаем к тестированию

  1. Звоним с A и B на voicemail. Результат - слышимость в обе стороны, запись произведена успешно. RTP поток отправялется на PR.IV.AT.IP

  2. Звоним с клиента 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)
  1. Звоним с клиента B на клиента A Результат - RTP пакеты в сторону A отправляются не через RTPPROXY а на A.NAT !!

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+rtpproxy+asterisk

Есть 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

В астериске созданы экстеншены на прием голосовой почты и на звонки между абонентами

приступаем к тестированию

  1. Звоним с A и B на voicemail. Результат - слышимость в обе стороны, запись произведена успешно. RTP поток отправялется на PR.IV.AT.IP

  2. Звоним с клиента 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)
  1. Звоним с клиента B на клиента A Результат - RTP пакеты в сторону A отправляются не через RTPPROXY а на A.NAT !!

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()');
        } else {
            fix_nated_contact();
            xlog('L_INFO','route[NATDETECT] fix_nated_contact()');
        }
        setflag(FLT_NATS);
    } else {
        xlog('L_INFO','route[NATDETECT] NO NAT nat_uac_test("19") is false');
    }
#!endif
    return;
}

что выяснилось - natuactest("19") не работает так как надо, а именно выдает FALSE для всех абонентов кроме приходящих из сети провайдера (хотя IP глобальный) в ситуации описанной первоначально оба абонента в сети провайдера

kamailio+rtpproxy+asterisk

Есть 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

В астериске созданы экстеншены на прием голосовой почты и на звонки между абонентами

приступаем к тестированию

  1. Звоним с A и B на voicemail. Результат - слышимость в обе стороны, запись произведена успешно. RTP поток отправялется на PR.IV.AT.IP

  2. Звоним с клиента 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)
  1. Звоним с клиента B на клиента A Результат - RTP пакеты в сторону A отправляются не через RTPPROXY а на A.NAT !!

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()');
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()');
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');
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

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.