Hi!
I'm connecting to a Cisco PSTN Gateway for international calls. I'm using a
Port Restricted Cone NAT.
I can make calls and make a hangup with MY phone, but if the callee at the
other side of the gateway hangs up, I do not get the BYE-Message.
That could be the problem of the Restricted Cone NAT... or someone has
another idea?
Thanks!
Sebastian
Hi,
Have anyone seen this kind of error message before :
ERROR: exec_msg: cmd echo $SIP_HF_CSEQ : $SIP_HF_FROM to $SIP_HF_TO >>
/var/log/syslog failed. exit_status=-1, errno=32: Broken pipe
This command is actually in my ser.cfg where i capture this few
environmental variables and push them into my /var/log/syslog. It
effectively went in, but i still see this error message.
Here is the original code in ser.cfg :
exec_msg("echo $SIP_HF_CSEQ : $SIP_HF_FROM to $SIP_HF_TO >>
/var/log/syslog");
Please help!
Regards,
Sam
Thanks again Alberto.
Are you using the ser.cfg from onsip.org? I'm using it, and i can't
make it work with reinvite to a nat'd endpoints. Can you give me some hints
here?.
For example what version of mediaproxy are you using?. If you're using
the onsip.org configuration, Did you modified this configuration to make it
work for reINVITE's?
Hope you can help me,
Thanks again
Regards,
Ricardo Martinez.-
-----Mensaje original-----
De: Alberto Cruz [mailto:acruz@tekbrain.com]
Enviado el: Miércoles, 27 de Julio de 2005 16:50
Para: Ricardo Martinez
CC: 'serusers(a)lists.iptel.org'
Asunto: Re: [Serusers] Problem : Can SER process the reINVITE messages pr
operly?
Importancia: Alta
Yes it is working fine.
Regards
Ricardo Martinez wrote:
Alberto.
Thanks for your answer. You mean that your platform works well with the
reINVITE's to a NAT'd endpoint?.
Regards,
Ricardo.-
-----Mensaje original-----
De: Alberto Cruz [ mailto:acruz@tekbrain.com <mailto:acruz@tekbrain.com> ]
Enviado el: Miércoles, 27 de Julio de 2005 16:12
Para: Ricardo Martinez
CC: 'Greger V. Teigre'; ' serusers(a)lists.iptel.org <mailto:serusers@lists.iptel.org> '
Asunto: Re: [Serusers] Problem : Can SER process the reINVITE messages pr
operly?
Importancia: Alta
Ricardo this block is working fine to me:
#-------------------------------------------------
# subsequent messages withing a dialog should take the
# path determined by record-routing
#-------------------------------------------------
if (loose_route()) {
append_hf("P-hint: rr-enforced\r\n");
# The following lines are added due media proxy
if (has_totag()&&(method=="INVITE" || method=="ACK")) {
if (client_nat_test("3") ||
search("^Route:.*;nat=yes")) {
# Mark as NAT'ed
setflag(6);
use_media_proxy();
};
};
if ((method=="BYE") && ((client_nat_test("3") ||
search("^Route:.*;nat=yes")))) {
fix_nated_contact();
force_rport();
};
# end media session for BYE and CANCEL is done above
# before entering the loose route. no need to call it here
route(1);
break;
};
Maybe you have something wrong at your mediaproxy.ini file.
Regards
Alberto Cruz
Hi all,
My name is chithanh. I'm working at Vietnam. Now I'm using with SER.
I have a case with SER.
| ser database |
|
|
============================
|| ||
| SER (5060) | | SERNAT + nathelper + rtpproxy (5082) |
|| ||
| user1 | | user2 |
Explain :
user1 registered SER ===> SER save("location") for user1 into table "location" of "ser" database.
user2 registered SERNAT ===> SER save("location") for user2 into table "location" of "ser" database.
My purpose :
user1 can call for user2.
user can call for user1.
Real when I run with this case. User1 can't call for User2. (although i had setted db_mode=1 for both) because :
+ User1 INVITE User2 ==> SER lookup("location") into SER's memory. Not lookup in ser database.
+ Use2 INVITE User1 ==> SERNAT lookup("location") into SERNAT's memory. Not lookup in ser database.
I want SER and SENAT when lookup("location"), they must lookup in table "location" of ser database.
How do u to solve for this problem ? Please help me.
===================================
My config of SERNAT :
#
# $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=yes # (cmd. line: -r)
rev_dns=no # (cmd. line: -R)
port=5082
listen=abc.comalias=abc.com
children=4
fifo="/tmp/ser_fifo"
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database
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/mysql.so"
loadmodule "/usr/local//lib/ser/modules/nathelper.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"
#loadmodule "/usr/local//lib/ser/modules/auth_radius.so"
loadmodule "/usr/local//lib/ser/modules/acc.so"
# ----------------- setting module-specific parameters ---------------
# -- usrloc params --
#modparam("usrloc", "db_mode", 0)
# Uncomment this if you want to use SQL database
# for persistent storage and comment the previous line
modparam("usrloc", "db_mode", 1)
modparam("usrloc", "db_url", "sql://ser:heslo@localhost/ser")
# -- 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)
# Accounting
modparam("acc", "log_level", 2)
#modparam("acc", "log_flag", 3)
#modparam("acc", "log_missed_flag", 3)
modparam("acc", "db_flag", 3)
modparam("acc", "db_missed_flag", 3)
# ------------------------- request routing logic -------------------
# main routing logic
route{
# initial sanity checks -- messages with
# max_forwards==0, or excessively long requests
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;
};
# we record-route all messages -- to make sure that
# subsequent messages will go through our proxy; that's
# particularly good if upstream and downstream entities
# use different transport protocol
record_route();
# loose-route processing
if (loose_route()) {
t_relay();
break;
};
# if the request is for other domain use UsrLoc
# (in case, it does not work, use the following command
# with proper names and addresses in it)
if (uri==myself) {
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication
if (!www_authorize("chinhnam.com","subscriber")) {
www_challenge("chinhnam.com", "0");
break;
};
fix_nated_contact();
save("location");
break;
}; #End if(method=="REGISTER")
if (method=="INVITE") {
if (proxy_authorize("chinhnam.com","subscriber")) {
if (!lookup("location")) {
sl_send_reply("404", "Not Found");
break;
};
}else {
proxy_challenge("chinhnam.com", "0");
break;
}; #End if (proxy_authorize("chinhnam.com", "subcriber"))
}; #End if(method=="INVITE")
fix_nated_contact();
force_rtp_proxy();
t_on_reply("1");
#setflag(3);
}; #End if(uri=="myself")
# forward to current uri now; use stateful forwarding; that
# works reliably even if we forward from TCP to UDP
if (!t_relay()) {
sl_reply_error();
};
} #End main routing logic
onreply_route[1] {
fix_nated_contact();
if (status=~"[12][0-9][0-9]") {
force_rtp_proxy();
}
}
============================================================================
My config of SER :
#
# $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=yes # (cmd. line: -r)
rev_dns=no # (cmd. line: -R)
port=5060
listen=chinhnam.comalias=chinhnam.com
children=4
fifo="/tmp/ser_fifo"
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database
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/mysql.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"
#loadmodule "/usr/local//lib/ser/modules/auth_radius.so"
loadmodule "/usr/local//lib/ser/modules/acc.so"
# ----------------- setting module-specific parameters ---------------
# -- usrloc params --
#modparam("usrloc", "db_mode", 0)
# Uncomment this if you want to use SQL database
# for persistent storage and comment the previous line
modparam("usrloc", "db_mode", 1)
modparam("usrloc", "db_url", "sql://ser:heslo@localhost/ser")
# -- 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)
# Accounting
modparam("acc", "log_level", 2)
#modparam("acc", "log_flag", 3)
#modparam("acc", "log_missed_flag", 3)
modparam("acc", "db_flag", 3)
modparam("acc", "db_missed_flag", 3)
# ------------------------- request routing logic -------------------
# main routing logic
route{
# initial sanity checks -- messages with
# max_forwards==0, or excessively long requests
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;
};
# we record-route all messages -- to make sure that
# subsequent messages will go through our proxy; that's
# particularly good if upstream and downstream entities
# use different transport protocol
record_route();
# loose-route processing
if (loose_route()) {
t_relay();
break;
};
# if the request is for other domain use UsrLoc
# (in case, it does not work, use the following command
# with proper names and addresses in it)
if (uri==myself) {
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication
if (!www_authorize("chinhnam.com","subscriber")) {
www_challenge("chinhnam.com", "0");
break;
};
save("location");
break;
}; #End if(method=="REGISTER")
if (method=="INVITE") {
if (proxy_authorize("chinhnam.com","subscriber")) {
if(uri=~"sip:63[0-9]*@") {
rewritehostport("192.168.200.248:5060");
}else if (!lookup("location")) {
sl_send_reply("404", "Not Found");
break;
};
}else {
proxy_challenge("chinhnam.com", "0");
break;
}; #End if (proxy_authorize("chinhnam.com", "subcriber"))
}; #End if(method=="INVITE")
#setflag(3);
}; #End if(uri=="myself")
# forward to current uri now; use stateful forwarding; that
# works reliably even if we forward from TCP to UDP
if (!t_relay()) {
sl_reply_error();
};
} #End main routing logic
=============================================================================
Note:
SER (5060) only signaling SIP for my user. Not use media proxy.
SER (5082) : signaling SIP + RTP path for my user. Use nathelper + rtpproxy
Thanks very much everything you had done for me.
Truong Chi Thanh
---------------------------------
Start your day with Yahoo! - make it your home page
Hi,
Reading the SERusers digest for a few months
has allowed me to read about a lot of very complex
and specialized problems. It's a bit intimidating.
Although I might some day want to learn to administer
a Linux system and run my own SER server, at this
point I would rather just become a paying customer on
someone else's SER server.
Many of the list participants
are clearly professionals operating
large SIP service providers. But none of these
professionals have identified their organizations
clearly enough to let me become their customer.
Perhaps because the traditions of the list prohibit
users from advertising their commercial services.
Can someone please give me a recommendation of a
SIP service provider which has good service and
reasonable pricing. I need a service which will
allow me to call between two computers,
each running Windows Messenger 4.6/4.7 .
I am aware that the latest version,
Windows Messenger 5.1 does not allow connecting
to third party service providers, and that is the
reason that I am using the older versions.
The Microsoft site does not tell me how to configure
version 5.1 for STUN or for symmetric NAT.
Every link that I have found for downloading version 4.6
points me back to the download page at microsoft.com,
and microsoft has actually removed the file so all
I get from them is a polite apology. Fair enough.
So here is an interesting legal question that I suspect
a lot of you SER wizards will know the answer to:
Is it illegal for third parties sites to publicly offer
the download of version 4.6 after microsoft has
chosen to stop offering it? It was after all being
given away free by Microsoft a short time ago.
I am aware that freeworlddialup.com (FWD)
is a good no-cost SIP service provider.
Does FWD use SER as their server software?
The latest version of FWD offers several options for
User Agent software, but none of these UAs include
a whiteboard feature, which I need for my tutoring
service.
Therefore, I need a SIP Service Provider
which supports Windows Messenger 4.6/4.7
and has some configuration instructions
for this particular UA.
Hopefully the config instructions will tell me how
to set Messenger up for STUN when I have a standard NAT,
and for mediaproxy when I encounter a symmetric NAT.
Googling for "SIP Service Provider" and "Windows Messenger 4.6"
has led me to a lot of dead ends and out-of-date pages,
such as the "old FWD site" at pulver.com which has detailed
instructions for configuring Messenger 4.6, but the
instructions no longer work.
"Service provider temporarily unavailable". (permanently)
Can anybody offer a Service Provider recommendation
or volunteer to take me on as a customer?
thanks
Michael Kendall
Hello,
I need the destination IP of the user of the first INVITE message (user ->
ser)... but dst_ip == xxx.xxx.xxx.xxx gives me the IP of ser.
The problem is that I only want to force the rtp_proxy if the users are
behind a Port restricted cone NAT (the scr-ips of them are known)
Here is my code:
# Force rtpproxy for users that are behind a Port Restricted Cone NAT
if ((src_ip == xxx.xxx.xxx.xxx | dst_ip == xxx.xxx.xxx.xxx) &&
!(uri=~"sip:[0-9]{9,30}@.*")) {
fix_nated_contact(); # Rewrite contact with source IP of signalling
force_rport(); # Add rport parameter to topmost Via
setflag(6);
}
Has anyone an idea how I can get the IP of the user? For example in the
location database?
Thanks!
Sebastian
Hello,
the new features of OpenSER development version are detailed a bit in:
http://openser.org/features-0.10.x.php
If you find something missing or you want to add more text, please send
a mail. Hope it will convince some new users to start testing it.
Daniel
Hi!
In the uri_db documentation (all parameters):
modparam("db_url", "....
^^^^^^
shouldn't this be uri_db?
In the group_radius documentation:
modparam("group", ...
^^^^^^
shouldn't this be group_radius?
I also wonder about the use_domain paramter in the radius modules.
group_radius has this parameter, whereas all other radius modules
(uri_radius, avp_radius, auth_radius) do not have this parameter? Is
there a reason for this?
regards,
klaus