Hello Adrian,
Thanks for your answers. They were very clarifying. I test in my lab
test environment where i do not have any firewalls or other possible
problem initiators.
The ser.cfg example that comes with the source with mediaproxy does not
allow non nated EP's to register. Is it possible for you to update the
example config file so non nated ep's can also register and do not use
mediaproxy when traffic is between non nated ep's.
NATed -- NATed mediaproxy
Public C -- NATed mediaproxy.
Public C -- Public C no mediaproxy.
Please just hint me in the correct direction.
Here is my current ser.cfg It is not working the way i want like
mentioned above. .
#
# $Id: ser.cfg,v 1.21.4.1 2003/11/10 15:35:15 andrei Exp $
#
# simple quick-start config script
#
# ----------- global configuration parameters ------------------------
#debug=3 # debug level (cmd line: -dddddddddd)
#fork=yes
#log_stderror=no # (cmd line: -E)
/* Uncomment these lines to enter debugging mode
debug=7
fork=no
log_stderror=yes
*/
check_via=no # (cmd. line: -v)
dns=no # (cmd. line: -r)
rev_dns=no # (cmd. line: -R)
#port=5060
#children=4
fifo="/tmp/ser_fifo"
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database
loadmodule "/usr/local/lib/ser/modules/mysql.so"
loadmodule "/usr/local/lib/ser/modules/sl.so"
loadmodule "/usr/local/lib/ser/modules/tm.so"
loadmodule "/usr/local/lib/ser/modules/rr.so"
loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
loadmodule "/usr/local/lib/ser/modules/usrloc.so"
loadmodule "/usr/local/lib/ser/modules/registrar.so"
loadmodule "/usr/local/lib/ser/modules/textops.so"
loadmodule "/usr/local/lib/ser/modules/domain.so"
loadmodule "/usr/local/lib/ser/modules/mediaproxy.so"
# Uncomment this if you want digest authentication
# mysql.so must be loaded !
#loadmodule "/usr/local/lib/ser/modules/auth.so"
#loadmodule "/usr/local/lib/ser/modules/auth_db.so"
# ----------------- setting module-specific parameters ---------------
# -- usrloc params --
#modparam("usrloc", "db_mode", 0)
#modparam("domain", "db_url", "sql:ser:heslo@localhost/ser")
//now using
default
# Uncomment this if you want to use SQL database
# for persistent storage and comment the previous line
#modparam("usrloc", "db_mode", 1)
# -- auth params --
# Uncomment if you are using auth module
#
#modparam("auth_db", "calculate_ha1", yes)
#
# If you set "calculate_ha1" parameter to yes (which true in this
config),
# uncomment also the following parameter)
#
#modparam("auth_db", "password_column", "password")
# -- rr params --
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)
# ------------------------- request routing logic -------------------
# main routing logic
modparam("mediaproxy", "natping_interval", 60)
route{
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too many hops");
break;
};
if (msg:len >= max_len) {
sl_send_reply("513", "Message too big");
break;
};
if (client_nat_test("3")) {
if (method == "REGISTER" || ! search("^Record-Route:")) {
fix_contact();
force_rport();
};
if (method=="INVITE") {
use_media_proxy();
t_on_reply("1");
};
};
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication
# if (!www_authorize("200.84.12.12", "subscriber")) {
# www_challenge("200.84.12.12", "0");
# break;
# };
save("location");
break;
};
# native SIP destinations are handled using our USRLOC DB
if (!lookup("location")) {
sl_send_reply("404", "Not Found");
break;
};
if (method == "BYE" || method == "CANCEL") {
end_media_session();
};
if (loose_route()) {
t_relay();
break;
};
if (method == "INVITE") {
record_route();
};
if (!t_relay()) {
sl_reply_error();
};
}
onreply_route[1] {
if (status=~"(183)|2[0-9][0-9]") {
if (client_nat_test("1")) {
fix_contact();
};
use_media_proxy();
};
if (status=~"[3-4]0[0-9]") {
end_media_session();
break;
};
}
On Fri, 2004-06-04 at 00:48, Adrian Georgescu wrote:
Tjapko,
See answers inline.
On Jun 4, 2004, at 12:16 AM, Tjapko ITS Consult@ncy wrote:
Thanks a lot,
Still I am lost. Mediaproxy works fine when Nated Ep's are calling out
to
PSTN or not NAted Ep's but I can't call to any NATed EP with te example
ser.cfg that comes with mediaproxy.
The examples from the documentation are used in production platforms.
They do work.
Mediaproxy is trying hard and doesn't give
any error message but in the
sessions.py and the log I can see that the destination address for the
NAted
IP (EP) is missing.
It could be that your end points are behind a blocked firewall. You may
start calls from inside to a public gateway but nobody from outside
could initiate connections to inside.
I read the readme and tried everything possible
but unfortunately
without
the desired result.
Nathelper seems clear on this using the modparam ("registrar",
"natflag",
6).
The set of such flag is not mandatory.
Like the example in the answer from Klaus,
registration from any nated
ep
will be flagged. Calling to any nated EP will be easy because the
destination address is flagged and saved during registration and the
t_on_reply will check if the flag is set and subsequently force proxy
on the
recorded address. At least this is how I understand it.
Studying the readme for mediaproxy tells that nat_uac_test() has to be
replaced with client_nat_test() but according the readme the only
difference
between the 2 is that the latter function will NOT check if the SDP
body has
private IP's.
How can I use mediaproxy so that when calling to an NATed EP
mediaproxy will
be able to generate the correct destination address. Does anybody has a
snippet from a succesfull ser.cfg for me that I can study. The comment
from
Adrian to replace fixed_nated_contact with fixed_contact I understand
but
not in relation with the setflag mentioned in the same snippet. IMHO
setflag
is a nathelper modparam. There must be something else that I overlook.
Your location table might contain private IP addresses, did you check?
Make sure you save the rewritten contacts during REGISTER:
if (client_nat_test("3")) {
if (method == "REGISTER" || ! search("^Record-Route:")) {
force_rport();
fix_contact();
};
};
Another issue that I like confirmed is that the
readme states that the
Nated
EP should have outbound proxy server configured for a symmetric EP not
an
a-symmetric EP. . Is this true?
To make a long story short...How can call TO a NATed EP with
mediaproxy so
it knows the correct destination address and is it neccesary to
configure
outbound proxy for a symmetric NAted EP's.
Just set the outbound proxy to be the same as the SIP Proxy.
My gateway provider tells me to drop all this and use a STUN server in
stead. :-(
STUN will not cross your NAT for both signaling and media, it will just
give the UA the information of how it looks from the outside world. Try
it anyway as you will gain more experience, chose what's best for your
network setup.
Any comments will be appriciated,
To wrap it up, it could be a problem with the NAT boxes depending their
firewall policies. Try nathelper/rtpproxy combination for a change. If
that works there is a problem with mediaproxy if it doesn't there is a
problem with your config or your network configuration.
Try narrow it to something simple that works and then grow your
configuration at the same pace with the experience you are building
using SER.
Adrian
Tjapko.
-----Original Message-----
From: serusers-bounces(a)iptel.org [mailto:serusers-bounces@lists.iptel.org]On
Behalf Of Klaus Darilion
Sent: Martes, 01 de Junio de 2004 07:10 p.m.
To: Adrian Georgescu
Cc: serusers(a)lists.iptel.org
Subject: Re: [Serusers] SER and NAT
oops, sorry. I'ver never used the mediaproxy module.
klaus
Adrian Georgescu wrote:
Function fix_contact() is available within
mediaproxy.so with same
meaning as its nathelper.so counterpart.
Adrian
You have to rewrite the REGISTER message before saving the
locations!
if (nat_uac_test("2")) {
force_rport();
fix_nated_contact(); # from nathelper module
append_hf("P-Behind-NAT: Yes\r\n");
setflag(5); #natflag
.....
.....
save(location); # user with natflag set will be
# pinged to keep NAT binding alive
regards,
klaus
Tjapko ITS Consult at ncy wrote:
/ Hello List,
/>/
/>/ In my fierce battle to overcome the NAT problem I have now running
SER and
/>/ Mediaproxy without any problem. Whenever any Nated EP like to call
to PSTN
/>/ or a non nated EP the call goes ok. Whenever I try to call from a
non nated
/>/ EP to a NATed EP the call does not go through.
/>/
/>/ It seems like that the destination address is not known by
mediaproxy so it
/>/ can't forward the call to the correct EP.
/>/
/>/ My question is whether this problem might be caused by my ser.cfg
or
that
/>/ this is typical SIP behaviour.
/>/
/>/ In other words is it possible to call to any EP that is behind
Symmetric
/>/ NAT.
/
----------------------------------------------------------------------
--
_______________________________________________
Serusers mailing list
serusers(a)lists.iptel.org
http://lists.iptel.org/mailman/listinfo/serusers
_______________________________________________
Serusers mailing list
serusers(a)lists.iptel.org
http://lists.iptel.org/mailman/listinfo/serusers
---
Incoming mail is certified Virus Free.
Checked by AVG anti-virus system (
http://www.grisoft.com).
Version: 6.0.693 / Virus Database: 454 - Release Date: 31/05/2004
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (
http://www.grisoft.com).
Version: 6.0.698 / Virus Database: 455 - Release Date: 02/06/2004