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

Record-Route и Contact содержат внутренний IP вместо внешнего

0

Здравствуйте, коллеги!

Прошу помощи с настройкой kamailio

Kamailio выступает в роли прокси для sip клиентов

Inet -> (X.X.X.X) Kamailio (192.168.30.250) -> Asterisk (192.168.30.2)

SIP клиенты регистрируются на kamailio (X.X.X.X) дальше на астериск

При звонке с SIP клиента возникает INVITE/SDP идущий с asterisk через kamailio

SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.1.52:27080;received=10.10.101.50;branch=z9hG4bK-d8754z-027c786dac17bf68-1---d8754z-;rport=27080
Record-Route: <sip:192.168.30.2;line=sr-mYtaP6eErk-dx6VfrLzfr6BaPGj0OHFfPYd0OHFfPYIQpHmFr9mQPKDEx9VlvZ8QO4ttma**>
Record-Route: <sip:X.X.X.X;r2=on;lr=on;ftag=0748d948;nat=yes>
From: <sip:user4@X.X.X.X>;tag=0748d948
To: <sip:9002@X.X.X.X>;tag=as3914e1d1
Call-ID: ZWU5YmFiNTNhNmNmYWQzYzhkZWUzZDNjOTU3MDFiNGU.
CSeq: 2 INVITE
Server: Virtel.net Node2
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE
Supported: replaces, timer
Contact: <sip:192.168.30.2;line=sr-mYtaP62ar9nzrg20y6eYPA-LrA-0P6Bax6z*>
Content-Type: application/sdp
Content-Length: 278

v=0
o=root 732368067 732368067 IN IP4 X.X.X.X
s=Asterisk PBX 11.17.1
c=IN IP4 X.X.X.X
t=0 0
m=audio 15768 RTP/AVP 0 8 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=sendrecv
a=nortpproxy:yes

Каким образом избавиться от "засвета" внутреннего IP asterisk ? Думаю, что по этой-же причине не всегда корректно ходит rtp

Пробовал делать вот так

onreply_route[MANAGE_REPLY] {
    xdbg("incoming reply\n");
    if(status=~"[12][0-9][0-9]") {
        xlog('L_INFO','Call to route[NATMANAGE] from MANAGE_REPLY ');
        route(NATMANAGE);
        if ( ds_is_from_list() && is_method("INVITE") ) {
          if(has_body("application/sdp")) {
            xlog("L_ERR", "onreply_route[MANAGE_REPLY] try to add contact to $var(src_ip):$Rp ct=$ct\n");

            $avp(contact)="sip:X.X.X.X:5060";
            xlog("L_ERR", "onreply_route[MANAGE_REPLY] M=$rm try to change CONTACT FIELD to $avp(contact)\n");
           if (remove_hf("Contact")) {
               insert_hf("Contact: <$avp(contact)>\r\n","Call-ID");
               insert_hf("X-REM: <$avp(contact)>\r\n","Call-ID");
           }
         }
        }
    }
}

Но Contact не меняется, хотя X-REM Добавляется

удалить закрыть спам изменить тег редактировать

спросил 2015-06-05 05:19:27 +0400

AlexPTZ Gravatar AlexPTZ
11 5 5
http://www.virtel.net/

обновил 2015-06-06 01:59:18 +0400

2 Ответа

1
ссылка удалить спам редактировать

ответил 2015-06-05 09:20:52 +0400

komrad123 Gravatar komrad123
3810 5 3 44
0

внутри основного покета - topoh

contact адреса - uac

rtp адреса - nathelper/rtpproxy.

одним какимто не обойдетесь.

вообще если такой вопрос возникает лучше нанять когото понимающего sip/kamailio.

и/или протестировать вашу текущую конфигурацию на уязвимости(вы же не хотите потерять 100500 денег, правда?)

ссылка удалить спам редактировать

ответил 2015-06-05 16:07:49 +0400

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

Comments

я вас и нанимал :)

AlexPTZ ( 2015-06-06 00:37:24 +0400 )редактировать

мда? и просили скрыть топологию?

meral ( 2015-06-06 01:14:27 +0400 )редактировать

вы меня нанимали конкретные изменения в конфиг делать. ну у вас достаточно сложный случай. topoh может и не сработать. попробуйте. rtpproxy у вас стоит. только обновитесь сначала.

meral ( 2015-06-06 01:22:01 +0400 )редактировать

topoh включен, но не срабатывает

loadmodule "topoh.so" modparam("topoh", "maskkey", "m@sk") modparam("topoh", "maskip", "192.168.30.2") #!endif

rtpproxy-2.0.0, kamailio 4.0.6

AlexPTZ ( 2015-06-06 01:35:42 +0400 )редактировать

поставил mhomed=0 - пропало поле Record-Route: 192.168.30.2. Осталось "дожать" Contact

AlexPTZ ( 2015-06-06 02:25:50 +0400 )редактировать

ем. без mhomed у вас должны вылезать глюки с bye. контакт только ручками. ну или астериск пропатчить.

meral ( 2015-06-06 03:15:28 +0400 )редактировать

topoh у вас вероятно не работал в связи с неверным пониманием параметра maskip

meral ( 2015-06-06 03:17:27 +0400 )редактировать

bye вроде корректно ходит. Ручками уже по всякому разному пробовал - не выходит :(

AlexPTZ ( 2015-06-06 14:52:19 +0400 )редактировать

mask_ip не должен совпадать с адресом ни одного из ваших серверов. ручками делается через textops модуль.

meral ( 2015-06-06 15:47:25 +0400 )редактировать

Чрез textops и делаю. Правильно, что в секции onreplyroute[MANAGEREPLY] ? Попробовал replace('192.168.30.2', 'X.X.X.X') - не помогает

AlexPTZ ( 2015-06-06 17:04:15 +0400 )редактировать

а replace('Asterisk','XXX') - работает и меняет s=Asterisk PBX 11.17.1 на s=XXX PBX 11.17.1

AlexPTZ ( 2015-06-06 17:08:00 +0400 )редактировать

ну не работает так не работает. взаимодействие модулей учитываете?

meral ( 2015-06-06 17:32:00 +0400 )редактировать

настолько глубоко не разбираюсь :(

AlexPTZ ( 2015-06-06 17:34:33 +0400 )редактировать

вышел из положения таким образом: прописал в днс CNAME для своего сервера и внес это имя в modparam("topoh", "mask_ip", "sip-a.mydomain.net"); и вернул mhomed=1

AlexPTZ ( 2015-06-09 02:35:31 +0400 )редактировать

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2015-06-05 05:19:27 +0400

Просмотрен: 1,466 раз

Обновлен: Jun 06 '15

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