[Serusers] corrupted address in sip message

thibault jouannic thibaultjouannic at wanadoo.fr
Tue Mar 1 14:59:05 CET 2005


hello ser users;

first, please don't pay attention to my english, because i'm french :-)...


I'm using the pbx asterisk and ser as a sip proxy, to pass over nat 
problems. Here's my configuration :

ipphone (192.168.0.108) --->
asterisk 	(192.168.0.4:5061)
SER 		(192.168.0.4:5060) --->
nat router...

During the call, a sip message comes from asterisk to SER, but when it 
arrives at the router, it seems to be corrupted.

Here's the sip/sdp message before SER :

Session Initiation Protocol
     Request line: INVITE sip:0467751647 at 212.94.190.153;user=phone SIP/2.0
     Message Header
         Via: SIP/2.0/UDP 192.168.0.4:5061;branch=z9hG4bK653c2038
         Route: <sip:22222 at 212.94.190.153;user=phone>
         From: "11111" <sip:11111 at 192.168.0.4:5061>;tag=as5ea95a2d
         To: <sip:22222 at 192.168.0.4>;tag=1c11534
         Contact: <sip:11111 at 192.168.0.4:5061>
         Call-ID: 5de9a6a3391006b40343cfc8370a4aa0 at 192.168.0.4
         CSeq: 103 INVITE
         User-Agent: Asterisk PBX
         Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER
         Content-Type: application/sdp
         Content-Length: 264
Session Description Protocol
     Session Description Protocol Version (v): 0
     Owner/Creator, Session Id (o): root 23042 23043 IN IP4 192.168.0.108
         Owner Username: root
         Session ID: 23042
         Session Version: 23043
         Owner Network Type: IN
         Owner Address Type: IP4
         Owner Address: 192.168.0.108
     Session Name (s): session
     Connection Information (c): IN IP4 192.168.0.108 ...

the same after being routed by SER :

Session Initiation Protocol
     Request line: INVITE sip:22222 at 212.94.190.153;user=phone SIP/2.0
     Message Header
         Max-Forwards: 10
         Via: SIP/2.0/UDP 192.168.0.4;branch=z9hG4bK5fe.bf341295.0
         Via: SIP/2.0/UDP 192.168.0.4:5061;rport=5061;branch=z9hG4bK653c2038
         From: "11111" <sip:11111 at 192.168.0.4:5061>;tag=as5ea95a2d
         To: <sip:22222 at 192.168.0.4>;tag=1c11534
         Contact: <sip:11111 at 192.168.0.4:5061>
         Call-ID: 5de9a6a3391006b40343cfc8370a4aa0 at 192.168.0.4
         CSeq: 103 INVITE
         User-Agent: Asterisk PBX
         Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER
         Content-Type: application/sdp
         Content-Length: 353
         Route: <sip:22222 at 212.94.190.153;user=phone>
Session Description Protocol
     Session Description Protocol Version (v): 0
     Owner/Creator, Session Id (o): root 23042 23043 IN IP4 192.168.0.108
         Owner Username: root
         Session ID: 23042
         Session Version: 23043
         Owner Network Type: IN
         Owner Address Type: IP4
         Owner Address: 192.168.0.108
     Session Name (s): session
     Connection Information (c): IN IP4 
192.168.0.482.231.33.XXX192.168.0.4 ...

...as tou can see, the connection information in the sdp message is a 
bit strange...

My ser.cfg :

-------------------------
check_via=yes	# (cmd. line: -v)
dns=no           # (cmd. line: -r)
rev_dns=no      # (cmd. line: -R)

port=5060
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/mangler.so"
loadmodule "/usr/local/lib/ser/modules/nathelper.so"
loadmodule "/usr/local/lib/ser/modules/textops.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"

# ----------------- 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)

modparam("nathelper", "rtpproxy_sock", "/var/run/rtpproxy.sock")
# -------------------------  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;
	};
	
	log(1, "nouvelle trame reçue\n");	
	
	if(method=="INVITE"){
		log(1, "invite route\n");
		add_rport();
		fix_nated_sdp("3");
		fix_nated_contact();			
		sdp_mangle_ip("192.0.0.0/255.0.0.0", "82.231.33.XXX");
		force_rtp_proxy();
		t_on_reply("1");
	}
		
	if (loose_route()) {
		log(1, "loose_route\n");
		t_relay();
		break;
	}
	
	if(method=="INVITE"){
		#log(1, "trame INVITE\n");
		record_route();	
		rewritehostport("212.94.190.153:5060");
	}	
	
	log(1, "relai de la trame\n\n");
	if (!t_relay()) {
		log(1, "erreur de relai\n\n");
		sl_reply_error();
	}
}

onreply_route[1]{
	log(1, "on reply\n");
	if(status=~"[12][0-9][0-9]")
		force_rtp_proxy();
}


----------------------------
I have the same problem with ser 0.8.14 and 0.9.0. So my question is : 
is this a bug in ser, or something strange in my ser.cfg ?
Did anybody ever see something like this ???


thanks.
thibault.




More information about the sr-users mailing list