Jump to content
Калькуляторы

Kamailio - не подменяет SDP при реинвайтах

Колупаюсь с дефолтным конфигом Kamailio. Всё заявленное работает, но столкнулся с противной проблемой.

 

A -> (NAT) -> Kamailio -> B

 

А звонит B. Всё работает, звук есть, nat traversal и rtp-proxy отрабатывают корректно. При звонке в обратную сторону тоже всё ОК, но не суть.

 

Далее, A в той же сессии кидает реинвайт, на T.38 допустим. Реинвайт уходит к B как надо, а вот когда B отвечает 200 OK с SDP, Kamailio отдаёт A в SDP айпишник железки B, а не подменяет его на собственный IP, как по идее должен делать. A и B друг друга впрямую не видят разумеется, да и хочется чтобы трафик всегда шёл через Kamailio. Где копать? Plz хоть в роут конкретный ткните или в функцию какую. Особо буду благодарен если кто на это напарывался и поборол.

 

Конфиг дефолтный:

 

# Caller NAT detection
route[NATDETECT] {
#!ifdef WITH_NAT
       force_rport();
       if (nat_uac_test("51")) {
               if (is_method("REGISTER")) {
                       fix_nated_register();
               } else {
                       if(is_first_hop())
                               set_contact_alias();
               }

               setflag(FLT_NATS);
       }
#!endif
       return;
}

# RTPProxy control and singaling updates for NAT traversal
route[NATMANAGE] {
#!ifdef WITH_NAT
       if (is_request()) {
               if(has_totag()) {
                       if(check_route_param("nat=yes")) {
                               setbflag(FLB_NATB);
                       }
               }
       }
       if (!(isflagset(FLT_NATS) || isbflagset(FLB_NATB)))
               return;

       rtpproxy_manage("co");

       if (is_request()) {
               if (!has_totag()) {
                       if(t_is_branch_route()) {
                               add_rr_param(";nat=yes");
                       }
               }
       }
       if (is_reply()) {
               if(isbflagset(FLB_NATB)) {
                       if(is_first_hop())

                               set_contact_alias();
               }
       }
#!endif

       return;
}

Edited by bilbo

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this