<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body class='hmmessage'>
<style>.hmmessage P{margin:0px;padding:0px}body.hmmessage{FONT-SIZE: 10pt;FONT-FAMILY:Tahoma}</style>hello<br><br>I am trying to use rtpproxy and kamailio. Below please find my kamailio.cfg file.<br>But this is what is happening:<br>1- ext 101[IP 76.109.183.2] is able to send audio to kamailio's IP [65.111.185.187]but it does not reach ext 100 IP [76.109.15.75].<br>2- ext 100 does not send RTP at all.<br>3- I still see the private IPs in the SDPs of both exts.<br><br>I am aattaching a wireshark capture<br>Thank you in advance<br><br>Fabian<br><br><br># $Id: kamailio.cfg 4576 2008-08-05 16:22:38Z klaus_darilion $<br>#<br># Kamailion basic configuration script<br>#&nbsp;&nbsp;&nbsp;&nbsp; by Anca Vamanu &lt;anca@voice-system.ro&gt;<br>#<br># Please refer to the Core CookBook at http://www.kamailio.org/dokuwiki/doku.php<br># for a explanation of possible statements, functions and parameters.<br>#<br><br><br>####### Global Parameters #########<br><br>debug=3<br>log_stderror=no<br>log_facility=LOG_LOCAL0<br><br>fork=yes<br>children=4<br><br>/* uncomment the following lines to enable debugging */<br>#debug=6<br>#fork=no<br>#log_stderror=yes<br><br>/* uncomment the next line to disable TCP (default on) */<br>disable_tcp=yes<br><br>/* uncomment the next line to enable the auto temporary blacklisting of <br>&nbsp;&nbsp; not available destinations (default disabled) */<br>#disable_dns_blacklist=no<br><br>/* uncomment the next line to enable IPv6 lookup after IPv4 dns <br>&nbsp;&nbsp; lookup failures (default disabled) */<br>#dns_try_ipv6=yes<br><br>/* uncomment the next line to disable the auto discovery of local aliases<br>&nbsp;&nbsp; based on revers DNS on IPs (default on) */<br>#auto_aliases=no<br><br>/* uncomment the following lines to enable TLS support&nbsp; (default off) */<br>#disable_tls = no<br>#listen = tls:your_IP:5061<br>#tls_verify_server = 1<br>#tls_verify_client = 1<br>#tls_require_client_certificate = 0<br>#tls_method = TLSv1<br>#tls_certificate = '/usr/local/etc/kamailio/tls/user/user-cert.pem'<br>#tls_private_key = '/usr/local/etc/kamailio/tls/user/user-privkey.pem'<br>#tls_ca_list&nbsp;&nbsp;&nbsp;&nbsp; = '/usr/local/etc/kamailio/tls/user/user-calist.pem'<br><br><br>port=5060<br><br>/* uncomment and configure the following line if you want Kamailio to <br>&nbsp;&nbsp; bind on a specific interface/port/proto (default bind on all available) */<br>listen=udp:65.111.185.187:5060<br><br><br>####### Modules Section ########<br><br>#set module path<br>mpath='/usr/local/lib/kamailio/modules/'<br><br>/* uncomment next line for MySQL DB support */<br>loadmodule 'db_mysql.so'<br>loadmodule 'sl.so'<br>loadmodule 'tm.so'<br>loadmodule 'rr.so'<br>loadmodule 'maxfwd.so'<br>loadmodule 'usrloc.so'<br>loadmodule 'registrar.so'<br>loadmodule 'textops.so'<br>loadmodule 'mi_fifo.so'<br>loadmodule 'uri_db.so'<br>loadmodule 'uri.so'<br>loadmodule 'xlog.so'<br>loadmodule 'acc.so'<br>/* uncomment next lines for MySQL based authentication support <br>&nbsp;&nbsp; NOTE: a DB (like db_mysql) module must be also loaded */<br>loadmodule 'auth.so'<br>loadmodule 'auth_db.so'<br>/* uncomment next line for aliases support<br>&nbsp;&nbsp; NOTE: a DB (like db_mysql) module must be also loaded */<br>#loadmodule 'alias_db.so'<br>/* uncomment next line for multi-domain support<br>&nbsp;&nbsp; NOTE: a DB (like db_mysql) module must be also loaded<br>&nbsp;&nbsp; NOTE: be sure and enable multi-domain support in all used modules<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (see 'multi-module params' section ) */<br>#loadmodule 'domain.so'<br>/* uncomment the next two lines for presence server support<br>&nbsp;&nbsp; NOTE: a DB (like db_mysql) module must be also loaded */<br>#loadmodule 'presence.so'<br>#loadmodule 'presence_xml.so'<br>loadmodule 'nathelper.so'<br><br># ----------------- setting module-specific parameters ---------------<br><br><br># ----- mi_fifo params -----<br>modparam('mi_fifo', 'fifo_name', '/tmp/kamailio_fifo')<br><br><br># ----- rr params -----<br># add value to ;lr param to cope with most of the UAs<br>modparam('rr', 'enable_full_lr', 1)<br># do not append from tag to the RR (no need for this script)<br>modparam('rr', 'append_fromtag', 0)<br><br><br># ----- rr params -----<br>modparam('registrar', 'method_filtering', 1)<br>/* uncomment the next line to disable parallel forking via location */<br># modparam('registrar', 'append_branches', 0)<br>/* uncomment the next line not to allow more than 10 contacts per AOR */<br>#modparam('registrar', 'max_contacts', 10)<br><br><br># ----- uri_db params -----<br>/* by default we disable the DB support in the module as we do not need it<br>&nbsp;&nbsp; in this configuration */<br>modparam('uri_db', 'use_uri_table', 0)<br>modparam('uri_db', 'db_url', '')<br><br><br># ----- acc params -----<br>/* what sepcial events should be accounted ? */<br>modparam('acc', 'early_media', 1)<br>modparam('acc', 'report_ack', 1)<br>modparam('acc', 'report_cancels', 1)<br>/* by default ww do not adjust the direct of the sequential requests.<br>&nbsp;&nbsp; if you enable this parameter, be sure the enable 'append_fromtag'<br>&nbsp;&nbsp; in 'rr' module */<br>modparam('acc', 'detect_direction', 0)<br>/* account triggers (flags) */<br>modparam('acc', 'failed_transaction_flag', 3)<br>modparam('acc', 'log_flag', 1)<br>modparam('acc', 'log_missed_flag', 2)<br>/* uncomment the following lines to enable DB accounting also */<br>modparam('acc', 'db_flag', 1)<br>modparam('acc', 'db_missed_flag', 2)<br><br><br># ----- usrloc params -----<br>modparam('usrloc', 'db_mode',&nbsp;&nbsp; 0)<br>/* uncomment the following lines if you want to enable DB persistency<br>&nbsp;&nbsp; for location entries */<br>modparam('usrloc', 'db_mode',&nbsp;&nbsp; 2)<br>#modparam('usrloc', 'db_url',<br>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'mysql://openser:openserrw@localhost/openser')<br>modparam('usrloc', 'nat_bflag', 3)<br><br># ----- auth_db params -----<br>/* uncomment the following lines if you want to enable the DB based<br>&nbsp;&nbsp; authentication */<br>modparam('auth_db', 'calculate_ha1', yes)<br>modparam('auth_db', 'password_column', 'password')<br>modparam('auth_db', 'db_url',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'mysql://openser:openserrw@localhost/openser')<br>modparam('auth_db', 'load_credentials', '')<br><br><br># ----- alias_db params -----<br>/* uncomment the following lines if you want to enable the DB based<br>&nbsp;&nbsp; aliases */<br>#modparam('alias_db', 'db_url',<br>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'mysql://openser:openserrw@localhost/openser')<br><br><br># ----- domain params -----<br>/* uncomment the following lines to enable multi-domain detection<br>&nbsp;&nbsp; support */<br>#modparam('domain', 'db_url',<br>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'mysql://openser:openserrw@localhost/openser')<br>#modparam('domain', 'db_mode', 1)&nbsp;&nbsp; # Use caching<br><br><br># ----- multi-module params -----<br>/* uncomment the following line if you want to enable multi-domain support<br>&nbsp;&nbsp; in the modules (dafault off) */<br>#modparam('alias_db|auth_db|usrloc|uri_db', 'use_domain', 1)<br><br><br># ----- presence params -----<br>/* uncomment the following lines if you want to enable presence */<br>#modparam('presence|presence_xml', 'db_url',<br>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'mysql://openser:openserrw@localhost/openser')<br>#modparam('presence_xml', 'force_active', 1)<br>#modparam('presence', 'server_address', 'sip:192.168.1.2:5060')<br><br># ----- nathelper params -----<br>modparam('nathelper', 'natping_interval', 10)<br>modparam('nathelper', 'ping_nated_only', 1)<br>modparam('nathelper', 'rtpproxy_sock', 'udp:localhost:8899')<br>modparam('nathelper', 'rtpproxy_disable_tout', 20)<br>modparam('nathelper', 'rtpproxy_tout', 2)<br>modparam('nathelper', 'rtpproxy_retr', 2)<br>modparam('nathelper', 'sipping_from', 'sip:pinger@mykamailio.com')<br>modparam('nathelper', 'sipping_bflag', 7)<br><br><br>####### Routing Logic ########<br><br><br># main request routing logic<br><br>route{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!mf_process_maxfwd_header('10')) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sl_send_reply('483','Too Many Hops');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (is_method('REGISTER'))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # authenticate the REGISTER requests (uncomment to enable auth)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!www_authorize('', 'subscriber'))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; www_challenge('', '0');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!save('location'))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sl_reply_error();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!lookup('location')) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; switch ($retcode) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case -1:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case -3:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t_newtran();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t_reply('404', 'Not Found');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case -2:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sl_send_reply('405', 'Method Not Allowed');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # when routing via usrloc, log the missed calls also<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setflag(2);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # record routing<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!is_method('REGISTER|MESSAGE')) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; record_route();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # account only INVITEs<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (is_method('INVITE')) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setflag(1); # do accounting<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # for INVITEs enable some additional helper routes<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (is_method('INVITE')) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; force_rtp_proxy();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!t_relay()) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sl_reply_error();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # CANCEL processing<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (is_method('CANCEL|BYE'))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unforce_rtp_proxy(); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (t_check_trans())<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t_relay();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br><br><br>}<br><br><br><br><br><br /><hr />Stay organized with simple drag and drop from Windows Live Hotmail. <a href='http://windowslive.com/Explore/hotmail?ocid=TXT_TAGLM_WL_hotmail_102008' target='_new'>Try it</a></body>
</html>