[Asterisk-Users] Strange SIP behavior w/NAT Keepalive

Steven Kokinos steve at kokinos.com
Sat Apr 10 20:19:58 MST 2004


Hello- 
  
I have several Sipura SPA-2000's at different locations (all behind Linksys WRT54G boxes). When setting: 
  
nat=yes 
qualify=yes 
  
Things work properly about 90% of the time, however, if a remote end loses the connection briefly, then asterisk can't see the adapter until the next registration attempt. Outbound calls will still function, but inbound obviously won't since asterisk can't see the remote client anymore. 
  
The better way (in my book anyway) is to enable keepalive on the remote end, so that it can keep the hole open in the NAT. However, if I enable this with the Sipura using the NOTIFY method, I get the following error: 
  
Apr 10 23:24:25 NOTICE[1116941120]: chan_sip.c:5648 handle_request: Unknown SIP command 'NOTIFY' from 'xx.xxx.xx.143' 
  
And if I do the same with the "REGISTER" method, I get a different issue: 
  
Apr 10 23:25:12 NOTICE[1116941120]: chan_sip.c:3461 parse_contact: '' is not a valid SIP contact (missing sip:) trying to use anyway 
    -- Got SIP response 404 "Not Found" back from xx.xxx.xx.143 
  
However, strangely, if I deviate from either of these two and put in $OPTION in the Sipura (which is something it doesn't recognize as a keepalive variable - it just blankly passes it along) Asterisk does in fact keep the port open, ad doesn't throw off a notice. 
  
Upon setting sip debug, I get the following: 
  
Sip read: 
$OPTIONS 
1 headers, 0 lines 

But only in debug mode. This does in fact keep the connection open, but seems like a pretty ugly hack to me. Does anyone have any suggestions here, it would seem that Asterisk should recognize an inbound NOTIFY request (it sends them out itself)? 
  
Thanks, 
  
-Steve 



More information about the asterisk-users mailing list