Hello!
I'm trying to make my 1st SIP-based system working. I use SER-0.8.14
on Linux Sarge. I have usually UAs behind NAT firewalls.
I found a case, when UAs are working very oddly, I can't call from one
of them, after sime time I can't reach one of them from outside, after
some time when I call one UA, the 2nd is answering (and the same time
when I call 2nd UA, the 2nd is answering).
I have 2 UAs [Grandstream BT100 & X-Lite v2.0] behind a linux NAT
firewall. Both UAs use the same STUN and SER server.
I did some tcpdumps and I found an interesting thing:
Internet Protocol, Src Addr: <FWPUBLICIP> (<FWPUBLICIP>), Dst Addr:
<SERIP> (<SERIP>)
User Datagram Protocol, Src Port: 1024 (1024), Dst Port: 5060 (5060)
Session Initiation Protocol
Request-Line: REGISTER sip:<MYDOMAIN> SIP/2.0
Method: REGISTER
Resent Packet: True
Suspected resend of frame: 31
Message Header
Via: SIP/2.0/UDP <FWPUBLICIP>;branch=z9hG4bK0dbeeb499dbd416e
From: "M70"
<sip:70@<MYDOMAIN>;user=phone>;tag=d4de3110a63ddb36
SIP Display info: "M70"
SIP from address: sip:70@<MYDOMAIN>
SIP tag: d4de3110a63ddb36
To: <sip:70@<MYDOMAIN>;user=phone>
SIP to address: sip:70@<MYDOMAIN>
Contact: *
Call-ID: 6ead5eb5744d407d@<IP PHONE LAN IP>
CSeq: 100 REGISTER
Expires: 0
User-Agent: Grandstream BT100 1.0.5.16
Max-Forwards: 70
Allow: INVITE,ACK,CANCEL,BYE,NOTIFY,REFER,OPTIONS,INFO,SUBSCRIBE
Content-Length: 0
Internet Protocol, Src Addr: <SERIP> (<SERIP>), Dst Addr:
<FWPUBLICIP>77.150.18 (<FWPUBLICIP>)
User Datagram Protocol, Src Port: 5060 (5060), Dst Port: 5060 (5060)
Session Initiation Protocol
Status-Line: SIP/2.0 200 OK
Status-Code: 200
Resent Packet: False
Message Header
Via: SIP/2.0/UDP <FWPUBLICIP>;branch=z9hG4bK0dbeeb499dbd416e
From: "M70"
<sip:70@<MYDOMAIN>;user=phone>;tag=d4de3110a63ddb36
SIP Display info: "M70"
SIP from address: sip:70@<MYDOMAIN>
SIP tag: d4de3110a63ddb36
To:
<sip:70@<MYDOMAIN>;user=phone>;tag=9ed85684aa54afbffef0a2d40b9935f4.71f6
SIP to address: sip:70@<MYDOMAIN>
SIP tag: 9ed85684aa54afbffef0a2d40b9935f4.71f6
Call-ID: 6ead5eb5744d407d@<IP PHONE IP>
CSeq: 100 REGISTER
Server: Sip EXpress router (0.8.14 (i386/linux))
Content-Length: 0
Warning: 392 <SERIP>:5060 "Noisy feedback tells: pid=25451
req_src_ip=<FWPUBLICIP> req_src_port=1024 in_uri=sip:<MYDOMAIN>
out_uri=sip:<MYDOMAIN> via_cnt==1"
What is interesting is that REGISTER message went out from port 1024
but 200 OK came to port 5060. Is this OK? I think here is some problem
and this can make the phones working oddly.
SER is configured with nathelper+rtpproxy.
...
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
if (method == "INVITE") {
fix_nated_sdp("1"); # Add direction=active to SDP
};
force_rport(); # Add rport parameter to topmost Via
setflag(6); # Mark as NATed
};
};
...
It is basically the sample nathelper configuration.
Could anybody give me a hint? If it is a well-known situation, please
point me to some other resources, I'm really a new-comer in SIP/SER.
Thank you in advance!
Kind regard,
Tamas J.