Thanks Jan, I Have probed the
record_route_preset("200.24.99.131")
The server answers with a 200(OK) to the INVITE
Method,
but it doesn't to the BYE method, it responds a
408(Request Timeout).
Let me ilustrate this with a couple of messages sent
by the Sip Server
and Received by the UA:
ACK Method:*****************************
SEND TIME: 1323437
SEND >> 200.24.99.131:5060
ACK sip:3306478@200.21.183.8:5064 SIP/2.0
Via: SIP/2.0/UDP
200.71.97.238:5060;rport;branch=z9hG4bK4CF97589DE6D419A8256E490D84C5B82
From: Andres Parra
<sip:3304076@ipsofactum.com>;tag=2282884754
To: <sip:3306478@ipsofactum.com>;tag=1746857641
Contact: <sip:3304076@200.71.97.238:5060>
Route:
<sip:3306478@200.24.99.131:5060;ftag=2282884754;lr=on>
*is this wright!!
Call-ID:
F6FF9150-1BC0-43B1-A864-F4071E00F9F7(a)200.71.97.238
CSeq: 19778 ACK
Max-Forwards: 70
Content-Length: 0
INVITE Method:*****************************
SEND TIME: 1313281
SEND >> 200.24.99.131:5060
INVITE sip:3306478@ipsofactum.com SIP/2.0
Via: SIP/2.0/UDP
200.71.97.238:5060;rport;branch=z9hG4bK0EF6D4BBBB9746898A187FDDD5153F3D
From: Andres Parra
<sip:3304076@ipsofactum.com>;tag=2282884754
To: <sip:3306478@ipsofactum.com>
Contact: <sip:3304076@200.71.97.238:5060>
Call-ID:
F6FF9150-1BC0-43B1-A864-F4071E00F9F7(a)200.71.97.238
CSeq: 19778 INVITE
Max-Forwards: 70
Content-Type: application/sdp
User-Agent: X-Lite release 1103a
Content-Length: 221
(SDP not Shown)
RECEIVE TIME: 1314343
RECEIVE << 200.24.99.131:5060
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP
200.71.97.238:5060;rport=5060;branch=z9hG4bK0EF6D4BBBB9746898A187FDDD5153F3D
From: Andres Parra
<sip:3304076@ipsofactum.com>;tag=2282884754
To: <sip:3306478@ipsofactum.com>;tag=1746857641
Contact: <sip:3306478@200.21.183.8:5064>
Record-Route:
<sip:3306478@200.24.99.131:5060;ftag=2282884754;lr=on>
Call-ID:
F6FF9150-1BC0-43B1-A864-F4071E00F9F7(a)200.71.97.238
CSeq: 19778 INVITE
Server: X-Lite release 1103m
Content-Length: 0
RECEIVE TIME: 1318750
RECEIVE << 200.24.99.131:5060
SIP/2.0 200 Ok
Via: SIP/2.0/UDP
200.71.97.238:5060;rport=5060;branch=z9hG4bK0EF6D4BBBB9746898A187FDDD5153F3D
From: Andres Parra
<sip:3304076@ipsofactum.com>;tag=2282884754
To: <sip:3306478@ipsofactum.com>;tag=1746857641
Contact: <sip:3306478@200.21.183.8:5064>
Record-Route:
<sip:3306478@200.24.99.131:5060;ftag=2282884754;lr=on>
Call-ID:
F6FF9150-1BC0-43B1-A864-F4071E00F9F7(a)200.71.97.238
CSeq: 19778 INVITE
Content-Type: application/sdp
Server: X-Lite release 1103m
Content-Length: 244
(SDP not Shown)
BYE Method:*****************************
SEND TIME: 1445500
SEND >> 200.24.99.131:5060
BYE sip:3306478@200.21.183.8:5064 SIP/2.0
Via: SIP/2.0/UDP
200.71.97.238:5060;rport;branch=z9hG4bKE6009A2AA4484F558657D94C3E7C7CF7
From: Andres Parra
<sip:3304076@ipsofactum.com>;tag=2282884754
To: <sip:3306478@ipsofactum.com>;tag=1746857641
Contact: <sip:3304076@200.71.97.238:5060>
Route:
<sip:3306478@200.24.99.131:5060;ftag=2282884754;lr=on>
Call-ID:
F6FF9150-1BC0-43B1-A864-F4071E00F9F7(a)200.71.97.238
CSeq: 19779 BYE
Max-Forwards: 70
User-Agent: X-Lite release 1103a
Content-Length: 0
RECEIVE TIME: 1471343
RECEIVE << 200.24.99.131:5060
SIP/2.0 408 Request Timeout
Via: SIP/2.0/UDP
200.71.97.238:5060;rport=5060;branch=z9hG4bKE6009A2AA4484F558657D94C3E7C7CF7
From: Andres Parra
<sip:3304076@ipsofactum.com>;tag=2282884754
To: <sip:3306478@ipsofactum.com>;tag=1746857641
Call-ID:
F6FF9150-1BC0-43B1-A864-F4071E00F9F7(a)200.71.97.238
CSeq: 19779 BYE
Server: Servidor SIP IPSOFACTUM ( Version 0.1
(i386/linux))
Content-Length: 0
Warning: 392 192.168.0.2:5060 "Noisy feedback tells:
pid=12978 req_src_ip=200.71.97.238 req_src_port=5060
in_uri=sip:3306478@200.21.183.8:5064
out_uri=sip:3306478@200.21.183.8:5064 via_cnt==0" *
What is this? i have always wondered
*********************
Ok, sorry about all those messages but i'm about to
finish my query:
The thing is, all the above shows me that the SIP
Proxy is
recieving the BYE but it doesn't process it because a
200(OK)
isn't replayed, why is that?
I thinking that i'd maybe make the server to listen to
the public_IP_Add
with "listen=200.24.99.131", (this could work???), or
adding
"advertised_address = 200.24.99.131" to the ser.cfg.
Maybe you could help me to decide, I'm realy confused.
Thanx
Andres Parra
--- Jan Janak <jan(a)iptel.org> wrote:
Date: Sun, 12 Sep 2004 20:59:00 +0200
From: Jan Janak <jan(a)iptel.org>
To: Andr�s_Parra_L. <apl_1980b(a)yahoo.com>
CC: serusers(a)lists.iptel.org
Subject: Re: [Serusers] Record-Route behind NAT
If the SIP server listens on the private IP address
only then you have
to force it to use the public IP explicitely because
it does not know
it.
You can use record_route_preset("200.24.99.131;lr");
Jan.
On 11-09 11:29, Andr�s Parra L. wrote:
I have a little problem, i need to force the UA
(outside NAT with public IP address) to send the
BYE
messages
to my Sip Server so I can account them in the acc
table.
I use record_route() to acomplish that but the
thing
is the
Record-Route field in the message that an UA
recieve,
the IP address is
the SIP SERVER LOCAL IP ADDRESS BEHIND NAT
(Record-Route:
<sip:5000022@192.168.0.2;ftag=192550680;lr=on>)
which means, of course, that the message will not
pass
trough the SIP Server.
How Could i force the server to write in the
Record-Route field the valid
IP address of my Sip Server (200.24.99.131)????
Example message sent by the Sip Proxy:
RECEIVE TIME: 1420109
RECEIVE << 200.24.99.131:5060
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP
From: Andres
Parra
<sip:3304076@ipsofactum.com>;tag=192550680
To: <sip:5000022@ipsofactum.com>;tag=2391513217
Contact: <sip:5000022@68.38.237.35:32805>
Record-Route:
<sip:5000022@192.168.0.2;ftag=192550680;lr=on>
Call-ID:
31517648-DF5F-4A12-BE74-5B1026B4C39D(a)200.71.103.253
CSeq: 29855 INVITE
Server: X-Lite release 1103m
Content-Length: 0
Ser.cfg:
#
# $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"
# 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/acc.so"
loadmodule "/usr/local/lib/ser/modules/textops.so"
# Uncomment this if you want to use SQL database
# ----------------- 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",
2)
# -- 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)
# -- acc params -
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)
# ------------------------- 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", "Mensaje demasiado
grande");
break;
};
# prevents private ip space from being used
if (search("^(Contact|m):
.*(a)(192\.168\.|10\.|172\.16)")) {
if (method=="REGISTER") {
log(1, "LOG: Someone trying to register
from
private IP\n");
sl_send_reply("479", "Por favor no utilice
direcciones IP privadas" );
break;
};
};
# loose-route processing
if (loose_route()) {
t_relay();
break;
};
# labeled all transaction for accounting
setflag(1);
# 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 INVITES to make sure BYEs will
visit
our server too
if (method=="INVITE") record_route();
# 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=~"ipsofactum.com" ){#||
!(uri=~"^sip:(192\.168\.|10\.|172\.16)")) {
if (method=="REGISTER") {
# Uncomment this if you want to use digest
authentication
if (!www_authorize("ipsofactum.com",
"subscriber"))
{
www_challenge("ipsofactum.com", "0");
break;
};
setflag(3);
save("location");
break;
};
# native SIP destinations are handled using our
USRLOC DB
if (!lookup("location")){ #&&
!lookup("subscribers")) {
# call invitations to off-line users are
reported
using the
# acc_request action; to avoid duplicate
reports on request
# retransmissions, request is processed
statefuly (t_newtran,
# t_reply)
if ((method=="INVITE" || method=="ACK") &&
t_newtran() ) {
t_reply("404", "Usuario no
registrado!,
contacte el directorio de usuarios
registrados");
acc_db_request("404 Not
Found","missed_calls");
break;
};
# all other requests to off-line users are
simply replied
# statelesslyeth0 and no reports are
issued
#sl_send_reply("404",
"Usuario no
existente!,
contacte el directorio de usuarios
suscritos");
#break;
} else {
# user on-line; report on failed
transactions;
mark the
# transaction for reporting using the same
number as
# configured above; if the call is really
missed, a report
# will be issued
setflag(3);
# forward to user's current destination
t_relay();
break;
};
};
# 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();
};
}
_______________________________
Do you Yahoo!?
Shop for Back-to-School deals on Yahoo! Shopping.
http://shopping.yahoo.com/backtoschool
_______________________________________________
Serusers mailing list
serusers(a)lists.iptel.org
http://lists.iptel.org/mailman/listinfo/serusers
__________________________________
Do you Yahoo!?
Yahoo! Mail - 50x more storage than other providers!