Hi,
i searched for the position (funktion) in the Register modul sources
where a new user is
added or delete. My intension is that i will increment/decrement an
currentuser
counter at this place to monitor the number of current users.
Thanks in advance
Stefan
Hi
I a using ser with rtpproxy..
i am using stable version from cvs ...
my scenerio is :
public ip(xlite phone)
Client A
|
|
|
SER Server
(public IP)
|
|
|
|
Private IP (xlite phone)
Client B
I am able to call from B to A. But unable to call when try to place call
from public tp private..
The softphone displays error:
"Response 479:We don't forward to private IP addresses"
plz help me in this scenerio.
my config file is:
#
# $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=no
#log_stderror=no # (cmd line: -E)
# Uncomment these lines to enter debugging mode
debug=7
fork=yes
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"
mhomed=yes # manpreet 30/06/04
# ------------------ 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/auth.so"
loadmodule "/usr/local/lib/ser/modules/auth_db.so"
loadmodule "/usr/local/lib/ser/modules/acc.so"
loadmodule "/usr/local/lib/ser/modules/exec.so"
loadmodule "/usr/local/lib/ser/modules/group.so"
loadmodule "/usr/local/lib/ser/modules/textops.so"
loadmodule "/usr/local/lib/ser/modules/nathelper.so"
loadmodule "/usr/local/lib/ser/modules/mangler.so"
# ----------------- setting module-specific parameters ---------------
# -- usrloc params --
modparam("usrloc", "db_url", "mysql://ser:heslo@localhost/ser")
modparam("usrloc", "db_mode", 2)
# -- auth params --
# Uncomment if you are using auth module
#
modparam("auth_db", "db_url", "mysql://ser:heslo@localhost/ser")
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")
# -- tm modules ---
modparam("tm", "fr_inv_timer", 15 )
#-- acc params --
modparam("acc","db_url", "mysql://ser:heslo@localhost/ser")
modparam("acc", "log_missed_flag", 3)
modparam("acc", "log_level", 1)
modparam("acc", "log_flag", 1)
modparam("acc", "db_flag", 1)
modparam("acc", "db_missed_flag", 3)
# -- rr params --
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)
# -- nathelper params --
modparam("registrar", "nat_flag", 6)
modparam("nathelper", "natping_interval", 30) # Ping interval 30 s
modparam("nathelper", "ping_nated_only", 1)
#----- 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;
};
# !! Nathelper
# Special handling for NATed clients; first, NAT test is
# executed: it looks for via!=received and RFC1918 addresses
# in Contact (may fail if line-folding is used); also,
# the received test should, if completed, should check all
# vias for rpesence of received
if (nat_uac_test("3")) {
# Allow RR-ed requests, as these may indicate that
# a NAT-enabled proxy takes care of it; unless it is
# a REGISTER
if (method == "REGISTER" || ! search("^Record-Route:")) {
log("LOG: Someone trying to register from private
IP,rewriting \n");
# This will work only for user agents that support
symmetric
# communication. We tested quite many of them and
majority is
# smart enough to be symmetric. In some phones it takes
a configuration
# option. With Cisco 7960, it is called NAT_Enable=Yes,
with kphone it is
# called "symmetric media" and "symmetric signalling".
fix_nated_contact(); # Rewrite contact with source IP
of signalling
log("LOG: fix_nated_contact\n");
if (method == "INVITE") {
fix_nated_sdp("3"); # Add direction=active to SDP
};
force_rport(); # Add rport parameter to topmost Via
log("LOG: force_rport");
setflag(6); # Mark as NATed
};
};
# 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
if (!method=="REGISTER") record_route();
# subsequent messages withing a dialog should take the
# path determined by record-routing
if (loose_route()) {
# mark routing logic in request
append_hf("P-hint: rr-enforced\r\n");
route(1);
break;
};
if (!uri==myself) {
# mark routing logic in request
append_hf("P-hint: outbound\r\n");
route(1);
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") {
log("LOG: in register main");
# Uncomment this if you want to use digest authentication
if (!www_authorize("61.16.236.180", "subscriber")) {
www_challenge("61.16.236.180", "0");
break;
};
save("location");
break;
};
lookup("aliases");
if (!uri==myself) {
append_hf("P-hint: outbound alias\r\n");
route(1);
break;
};
# native SIP destinations are handled using our USRLOC DB
if (!lookup("location")) {
sl_send_reply("404", "Not Found");
break;
};
};
append_hf("P-hint: usrloc applied\r\n");
route(1);
}
route[1]
{
# !! Nathelper
if (uri=~"[@:](192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.)" &&
!search("^Route:")){
sl_send_reply("479", "We don't forward to private IP
addresses");
break;
};
# if client or server know to be behind a NAT, enable relay
if (isflagset(6)) {
force_rtp_proxy();
};
# NAT processing of replies; apply to all transactions (for
example,
# re-INVITEs from public to private UA are hard to identify as
# NATed at the moment of request processing); look at replies
t_on_reply("1");
setflag(1);
setflag(3);
# send it out now; use stateful forwarding as it works reliably
# even for UDP2TCP
if (!t_relay()) {
sl_reply_error();
};
}
# !! Nathelper
onreply_route[1] {
# NATed transaction ?
if (isflagset(6) && status =~ "(183)|2[0-9][0-9]") {
fix_nated_contact();
force_rtp_proxy();
# otherwise, is it a transaction behind a NAT and we did not
# know at time of request processing ? (RFC1918 contacts)
} else if (nat_uac_test("1")) {
fix_nated_contact();
};
}
_________________________________________________________________
Marriage? http://www.bharatmatrimony.com/cgi-bin/bmclicks1.cgi?74 Join
BharatMatrimony.com for free.
Aloha,
Does anyone have any combinations of Phones/media servers that provide music
on hold?
I think with a call manager a call is redirected to a music on hold server
when it is put on hold.
We are using Cisco 7960 with a 7.1 image.
I heard a rumour that polycom phones somehow support music on hold.
Aloha,
Matt
Hi all!
I'm trying to configure ser to work with all clients behind a nat.
I know fwd use ser + asterisk. I noticed that if I have a client behind a nat
in fwd I have to set an "Outbound Proxy" (in Xlite for example). The FWD
Outbound Proxy is fwdnat.pulver.com:5082. I noticed that there is a "ser" at
fwdnat.pulver.com:5082.
Why fwd use an outbound proxy and another "ser" at port 5082 instead using
default ser at port 5060?
I have to configure 2 distinct ser to solve nat problem or can I use unique ser
at port 5060 with nathelper?
Using another "ser" as outbound proxy at another port is better? How can I
configure ser to be an "outbound proxy"?
Thanks you,
Aldo.
Hi all:
in http://www.voip-info.org/tiki-index.php?page=Portaone%20rtpproxy
is says rtpprxoy will waits for receiving at least one UDP packet from each of two parties participating in the call
Once suc packet is received, the proxy fills one of two ip:port structures associated with each call with source ip:port of that packet
and when both structures are filled in, the proxy starts relaying UDP packets between parties;
is it always do so ?
Cause when I have try rtpproxy with nathelper , but when i trace the etherreal log
rtpproxy's behavior seems not waits for receiving at least one UDP packet from each of two parties
after when receive only one part of the UA , rtpproxy directly transfering the rtp packet to another UA
Can any tell me will rtpproxy wait for when both UA's first packet has received then start relay it ?
Or it's behavior is really the same as the page said ? (http://www.voip-info.org/tiki-index.php?page=Portaone%20rtpproxy)
Thanks
Jimmy
All,
Just a quick note of thanks to all who maintain this list, and answer
questions promptly and authoritatively.
WE are using SER in a lab environment and have found a couple of bugs in
our UA. REsponses from the list members have helped us get SER working
quickly, and helped diagnose our UA problems.
thanks again to all.
bert
--
Bert Berlin
Director, System Test
Quintum Technologies, Inc.
71 James Way
Eatontown,NJ 07724
ph 732-460-9000 ext 247
jimmy huang wrote:
> but when run rtpproxy in bridge mode
> why it doesn't update the packet to proper NAT hole?
Due to the very nature of the bringing mode - it's assumed that UAs on
each side of bridge can talk to the bridge directly, so that no NAT
traversal is necessary. You can disable this by comenting out the
following two lines in main.c and recompiling rtpproxy:
[...]
if (bmode != 0)
asymmetric = 1;
[...]
-Maxim
> Can it be solve by any method ?
>
> Thanks
> Jimmy
>
>
> ----- Original Message -----
> From: "Maxim Sobolev" <sobomax(a)portaone.com>
> To: "Klaus Darilion" <klaus.mailinglists(a)pernau.at>
> Cc: "jimmy huang" <jimmy_huang(a)uni.com.tw>; <serusers(a)lists.iptel.org>
> Sent: Monday, June 28, 2004 11:00 PM
> Subject: Re: [Serusers] [ rtpproxy ] will waits for receiving at least one
> UDP packet ??
>
>
>
>>Klaus Darilion wrote:
>>
>>
>>>The old rtpproxy (1.1.1.1) has to wait for at least one packet from each
>>>client. For the new version of rtpproxy it depends on the configuration,
>>>i.e. if the rtpproxy is symmetric on both ends or only on one end.
>>
>>The default behaviour is to start relaying immediately to the port
>>specified in the SDP, but once the firt packet from UA has been received
>>check that actual source port match and update internal session data if
>>it does not so that all subsequent packets will be relayed to the proper
>>"NAT hole".
>>
>>-Maxim
>>
>>
>>>klaus
>>>
>>>jimmy huang wrote:
>>>
>>>
>>>
>>>>Hi all:
>>>> in http://www.voip-info.org/tiki-index.php?page=Portaone%20rtpproxy
>>>>is says rtpprxoy will waits for receiving at least one UDP packet from
>>>>each of two parties participating in the call
>>>>Once suc packet is received, the proxy fills one of two ip:port
>>>>structures associated with each call with source ip:port of that packet
>>>>and when both structures are filled in, the proxy starts relaying UDP
>>>>packets between parties;
>>>> is it always do so ?
>>>>Cause when I have try rtpproxy with nathelper , but when i trace the
>>>>etherreal log
>>>>rtpproxy's behavior seems not waits for receiving at least one UDP
>>>>packet from each of two parties
>>>>after when receive only one part of the UA , rtpproxy directly
>>>>transfering the rtp packet to another UA
>>>>
>>>>Can any tell me will rtpproxy wait for when both UA's first packet has
>>>>received then start relay it ?
>>>>
>>>>Or it's behavior is really the same as the page said ?
>>>>(http://www.voip-info.org/tiki-index.php?page=Portaone%20rtpproxy)
>>>>
>>>>Thanks
>>>>Jimmy
>>>>
>>>>
>>>>------------------------------------------------------------------------
>>>>
>>>>_______________________________________________
>>>>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
>>>
>>>
>>>
>>
>>
>
>
>
Hi,
i searched for the position (funktion) in the Register modul sources
where a new user is
added or delete. My intension is that i will increment/decrement an
currentuser
counter at this place to monitor the number of current users.
Thanks in advance
Stefan
You will need the CVS version. Or you can use the Media Proxy - which has something similar and works with 0.8.12.
Dhiraj
-----Original Message-----
From: serusers-bounces(a)iptel.org [mailto:serusers-bounces@lists.iptel.org]On
Behalf Of VCI Help Desk
Sent: 29 June 2004 14:01
To: serusers(a)lists.iptel.org
Subject: Re: [Serusers] nat_uac_test
I didn't mention it but I have version 0.8.12 from source (not RPM).
I've tried searching all the modules source code and I can't find any
references to nat_uac_test. Is this function in the nathelper module or in
something else?
Bill Dunn
----- Original Message -----
From: Klaus Darilion
To: Bill
Cc: serusers(a)lists.iptel.org
Sent: Tuesday, June 29, 2004 2:46 AM
Subject: Re: [Serusers] nat_uac_test
probably you use an old ser version (rpm?). Get the latest stable from
cvs and build ser yourself. Then you have the nathelper module with all
features which were introduced after the first 0.8.12 release.
klaus
Bill wrote:
> Shown below is my ser.cfg file. For some reason the nat_uac_test
> routine doesn't work. The debugging says it doesn't know the command and
> believes I left out a module. I can't find much documentation on this
> command. Did I leave out a module or something required to use this?
>
> Bill
>
>
>
> #
> # $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"
> fifo_mode=0666
>
> # ------------------ module loading ----------------------------------
>
> # Uncomment this if you want to use SQL database
> loadmodule "/lib/ser/modules/mysql.so"
>
> loadmodule "/lib/ser/modules/sl.so"
> loadmodule "/lib/ser/modules/tm.so"
> loadmodule "/lib/ser/modules/maxfwd.so"
> loadmodule "/lib/ser/modules/registrar.so"
> loadmodule "/lib/ser/modules/auth.so"
> # loadmodule "/lib/ser/modules/textops.so"
> # loadmodule "/lib/ser/modules/enum.so"
> loadmodule "/lib/ser/modules/group.so"
>
> loadmodule "/lib/ser/modules/nathelper.so"
> modparam("nathelper", "natping_interval", 10)
>
> # loadmodule "/lib/ser/modules/vm.so"
> # modparam("vm", "db_url", "sql://root:@127.0.0.1/ser")
> # modparam("vm", "email_column", "sip(a)xxx.xxx.net
<mailto:sip@xxx.xxx.net>")
> # modparam("vm", "domain_column", "ser.vci.net")
>
> loadmodule "/lib/ser/modules/acc.so"
> modparam("acc", "db_url", "sql://root:@127.0.0.1/ser")
> modparam("acc", "log_missed_flag", 2)
> modparam("acc", "log_level", 1)
> modparam("acc", "log_flag", 1)
> modparam("acc", "db_flag", 2)
> modparam("acc", "db_missed_flag", 2)
>
> loadmodule "/lib/ser/modules/usrloc.so"
> modparam("usrloc", "db_mode", 0)
> modparam("usrloc", "db_mode", 2)
>
> loadmodule "/lib/ser/modules/auth_db.so"
> modparam("auth_db", "calculate_ha1", yes)
> modparam("auth_db", "password_column", "password")
>
> loadmodule "/lib/ser/modules/rr.so"
> modparam("rr", "enable_full_lr", 1)
>
> # ------------------------- 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;
> };
>
> if (nat_uac_test("3")) {
> log("1,Connection from someone behind a NAT");
> };
>
> if (uri =~ "^sip:admin" ) {
> log(1, "Connection from admin(a)xxx.xxx.net
> <mailto:admin@xxx.xxx.net>");
> };
>
> if (method=="CANCEL") {
> log(1,"Sent CANCEL request");
> }
>
> if (method=="INVITE") {
> log(1,"Sent INVITE request");
> }
>
> # 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;
> };
>
> setflag(2);
>
> # 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) {
> log(1,"processing request for ser.vci.net domain");
>
> if (method=="REGISTER") {
> log(1,"register request for xxx.xxx.net domain");
> if (!www_authorize("xxx.xxx.net", "subscriber")) {
> www_challenge("ser.vci.net", "0");
> break;
> };
>
> save("location");
> break;
> };
>
> # native SIP destinations are handled using our USRLOC DB
> if (!lookup("location")) {
> log(1,"404 - Not Found");
> acc_db_request("404 Not Found", "acc");
> sl_send_reply("404", "Not Found");
> break;
> };
> };
> # forward to current uri now; use stateful forwarding; that
> # works reliably even if we forward from TCP to UDP
> if (!t_relay()) {
> log(1,"not sure what this does");
> sl_reply_error();
> };
>
> }
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> 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
Shown below is my ser.cfg file. For some reason the nat_uac_test routine doesn't work. The debugging says it doesn't know the command and believes I left out a module. I can't find much documentation on this command. Did I leave out a module or something required to use this?
Bill
#
# $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"
fifo_mode=0666
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database
loadmodule "/lib/ser/modules/mysql.so"
loadmodule "/lib/ser/modules/sl.so"
loadmodule "/lib/ser/modules/tm.so"
loadmodule "/lib/ser/modules/maxfwd.so"
loadmodule "/lib/ser/modules/registrar.so"
loadmodule "/lib/ser/modules/auth.so"
# loadmodule "/lib/ser/modules/textops.so"
# loadmodule "/lib/ser/modules/enum.so"
loadmodule "/lib/ser/modules/group.so"
loadmodule "/lib/ser/modules/nathelper.so"
modparam("nathelper", "natping_interval", 10)
# loadmodule "/lib/ser/modules/vm.so"
# modparam("vm", "db_url", "sql://root:@127.0.0.1/ser")
# modparam("vm", "email_column", "sip(a)xxx.xxx.net")
# modparam("vm", "domain_column", "ser.vci.net")
loadmodule "/lib/ser/modules/acc.so"
modparam("acc", "db_url", "sql://root:@127.0.0.1/ser")
modparam("acc", "log_missed_flag", 2)
modparam("acc", "log_level", 1)
modparam("acc", "log_flag", 1)
modparam("acc", "db_flag", 2)
modparam("acc", "db_missed_flag", 2)
loadmodule "/lib/ser/modules/usrloc.so"
modparam("usrloc", "db_mode", 0)
modparam("usrloc", "db_mode", 2)
loadmodule "/lib/ser/modules/auth_db.so"
modparam("auth_db", "calculate_ha1", yes)
modparam("auth_db", "password_column", "password")
loadmodule "/lib/ser/modules/rr.so"
modparam("rr", "enable_full_lr", 1)
# ------------------------- 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;
};
if (nat_uac_test("3")) {
log("1,Connection from someone behind a NAT");
};
if (uri =~ "^sip:admin" ) {
log(1, "Connection from admin(a)xxx.xxx.net");
};
if (method=="CANCEL") {
log(1,"Sent CANCEL request");
}
if (method=="INVITE") {
log(1,"Sent INVITE request");
}
# 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;
};
setflag(2);
# 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) {
log(1,"processing request for ser.vci.net domain");
if (method=="REGISTER") {
log(1,"register request for xxx.xxx.net domain");
if (!www_authorize("xxx.xxx.net", "subscriber")) {
www_challenge("ser.vci.net", "0");
break;
};
save("location");
break;
};
# native SIP destinations are handled using our USRLOC DB
if (!lookup("location")) {
log(1,"404 - Not Found");
acc_db_request("404 Not Found", "acc");
sl_send_reply("404", "Not Found");
break;
};
};
# forward to current uri now; use stateful forwarding; that
# works reliably even if we forward from TCP to UDP
if (!t_relay()) {
log(1,"not sure what this does");
sl_reply_error();
};
}