[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