hi all, This is my first message, even I have been reading and learning from this great list for a while.
I used the stable branch of SER for 6 months without problems, now I'm playing with the NAT an rtp proxy stuff so I upgraded to the cvs branch.
I downloaded, compiled and installed cvs (2004-04-27) with mysql support. After solving some compile problems (fixed in a patch by janakj in the cvs two hours after my first checkout :( I got it running but there is a problem I don't know how to solve.
I'm trying to register and call a SIP phone from behind NAT. I get it to register correctly (with the Contact field fixed) but when I try to call it, the lookup("location") fails and I get a "480 Temporarily Unavailable" from ser.
The network schema I'm using is (for testing):
192.168.10.* 200.59.203.* [Phone Gstream] .188 ------------>.1 [NAT].75 ----------------- | | .76 .77 [SER] [SIP UA (Asterisk)]
I added a gstream1 user to SER and the register block in ser.cfg is:
...... # -- nathelper -- if (nat_uac_test("1")) { if (method == "REGISTER" || !search("^Record-Route:")) { log(2,"LOG: Registro desde una IP privada, re-escribiendo contacto...\n"); # Rewrite contact with source IP of signalling fix_nated_contact(); if (method == "INVITE") { ............. }; force_rport(); # Add rport parameter to topmost Via setflag(6); # Mark as NATed }; };
.............
if (uri==myself) { if (method=="REGISTER") { # No auth by now log(2,"Saving url location\n"); save("location"); break; }; .....
The ngrep SIP log for the register sequence is: U 200.59.203.75:61503 -> 200.59.203.76:5060 REGISTER sip:200.59.203.76 SIP/2.0..Via: SIP/2.0/UDP 192.168.10.188:5062;branch=z9hG4bK975f3a4817e63645 ..From: "Grandstream 1" sip:gstream1@200.59.203.76;tag=f001e96a008a26a5..To: <sip:gstream1@200.59.203 .76>..Contact: sip:gstream1@192.168.10.188:5062..Call-ID: 0776eb9b4143e102@192.168.10.188..CSeq: 102 REGISTER..Expires: 3600..User-Agent: Grandstream BT100 1.0.4.55..Max-Forwards: 70..Allow: INVITE,ACK,CA NCEL,BYE,NOTIFY,REFER,OPTIONS,INFO,SUBSCRIBE..Content-Length: 0.... # U 200.59.203.76:5060 -> 200.59.203.75:61503 SIP/2.0 200 OK..Via: SIP/2.0/UDP 192.168.10.188:5062;branch=z9hG4bK975f3a4817e63645;rport=61503;receive d=200.59.203.75..From: "Grandstream 1" sip:gstream1@200.59.203.76;tag=f001e96a008a26a5..To: <sip:gstr eam1@200.59.203.76>;tag=b27e1a1d33761e85846fc98f5f3a7e58.ce3d..Call-ID: 0776eb9b4143e102@192.168.10.188 ..CSeq: 102 REGISTER..Contact: <sip:gstream1@200.59.203.75:61503<>;q=0;expires=3600..Server: Sip EXpres s router (0.8.13-dev-28 (i386/linux))..Content-Length: 0....
Everything seems Ok, but here begins the problems.
If I go to the command line and type: # serctl ul show gstream1 I get: 404 Username gstream1@ipcontact.com.uy in table location not found
But if I type: # serctl ul show Among many other lines I get: ..... ...Record(0x402f46e0)... domain: 'location' aor : 'gstream1@200.59.203.76' ~~~Contact(0x402f47c0)~~~ domain : 'location' aor : 'gstream1@200.59.203.76' Contact: 'sip:gstream1@200.59.203.75:61503' Expires: 3083 q : 0 Call-ID: '0776eb9b4143e102@192.168.10.188' CSeq : 102 replic : 0 State : CS_SYNC Flags : 1 next : (nil) prev : (nil) ~~~/Contact~~~~ .../Record... .............
It seems to my like ser is not matching the domain part properly. On the other side, the record in the mysql location table is:
username | domain | contact | expires | q | .... gstream1@200.59.203.76 | | sip:gstream1@200.59.203.75:61503 | 2004-05-04 17:20:32 | -1082130.38|...
As you see 'domain' field is empty. Could be this the problem?
Anyway If I register from Kphone (user luis) running in the same machine as SER, 'domain' is empty again luis@ipcontact.com.uy | |sip:luis@200.59.203.76:5062;transport=udp|2004-05-04 16:57:46|1148846.12|... and # serctl url show luis fails too, however I'am able to call this user "luis@ipcontact.com.uy" but not "gstream1@ipcontact.com.uy". The problem here seems to be gstream1 is registered using the ser server's IP number and not the domain "ipcontact.com.uy", but shouldn't be this handled automagicaly by SER. I don't have any hint to the serctl ul "misterio" (if fails even if I pass the domain or the ip after the user name?)
One diference I see with the 0.8.12 stable version I'm using in "production" is after a REGISTER only the username part of the uri is recorded in the 'username' field of table location!! Column 'domain' is empty int this case too, but serctl works. May be this is some king of buggy 'feature' in the cvs? Any hint?
Oh, just in case, this is the failed INVITE sequence:
U 200.59.203.77:5060 -> 200.59.203.76:5060 INVITE sip:gstream1@ipcontact.com.uy SIP/2.0..Via: SIP/2.0/UDP 200.59.203.77:5060;branch=z9hG4bK186cfac a..From: "SIP Planet(1083694723.15)" sip:192@ipcontact.com.uy;tag=as16156ce5..To: <sip:gstream1@ipcon tact.com.uy>..Contact: sip:192@200.59.203.77..Call-ID: 653214bf775a279776bc5c2360100a13@200.59.203.77 ..CSeq: 102 INVITE..User-Agent: Asterisk PBX..Date: Tue, 04 May 2004 18:18:45 GMT..Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER..UniqueID: 1083694725.16..Content-Type: application/sdp..Content-Length: 21 1....v=0..o=root 16321 16321 IN IP4 200.59.203.77..s=session..c=IN IP4 200.59.203.77..t=0 0..m=audio 12 692 RTP/AVP 0 3 97..a=rtpmap:0 PCMU/8000..a=rtpmap:3 GSM/8000..a=rtpmap:97 iLBC/8000..a=silenceSupp:off
U 200.59.203.76:5060 -> 200.59.203.77:5060 SIP/2.0 480 Temporarily Unavailable..Via: SIP/2.0/UDP 200.59.203.77:5060;branch=z9hG4bK186cfaca..From: "SIP Planet(1083694723.15)" sip:192@ipcontact.com.uy;tag=as16156ce5..To: <sip:gstream1@ipcontact.com. uy>;tag=b27e1a1d33761e85846fc98f5f3a7e58.251a..Call-ID: 653214bf775a279776bc5c2360100a13@200.59.203.77. .CSeq: 102 INVITE..Server: Sip EXpress router (0.8.13-dev-28 (i386/linux))..Content-Length: 0
U 200.59.203.77:5060 -> 200.59.203.76:5060 ACK sip:gstream1@ipcontact.com.uy SIP/2.0..Via: SIP/2.0/UDP 200.59.203.77:5060;branch=z9hG4bK186cfaca.. From: "SIP Planet(1083694723.15)" sip:192@ipcontact.com.uy;tag=as16156ce5..To: <sip:gstream1@ipcontac t.com.uy>;tag=b27e1a1d33761e85846fc98f5f3a7e58.251a..Contact: sip:192@200.59.203.77..Call-ID: 653214b f775a279776bc5c2360100a13@200.59.203.77..CSeq: 102 ACK..User-Agent: Asterisk PBX..Content-Length: 0....
Thank you very much in advance.
Best regards Luis