[Freeswitch-users] How to get the network address of registered Endpoint (NAT Problem)

Mitja unau0 at gmx.de
Tue Jan 7 11:38:33 MSK 2014


Hello there,

Im trying to solve NAT related Problem which is caused by missbehaving
SIP phone.
Up Front: I searched the wiki and the web for all the NAT related
sites/mailling list. I think its a error of the invoxia IPhone docking
station (the missbehaving SIP phone), thus I did not open a jira for it.

We have a freeswitch server with internet accessibility and a Phone
behind a natting router (Fritz!Box).
FreeSWITCH (1.2.3.4) <-> (10.11.12.13) NAT (192.168.0.1) <->
(192.168.0.2) SIP Phone

The Phone is able to register and initiate calls. But when someone else
to call that endpoint, its unreachable.

I did some research and the problem seems to be that the phone registers
with a Contact containing the private IP Adress (192.168.0.2).

freeswitch at 1.2.3.4@internal> sofia status profile internal reg

Registrations:
=================================================================================================

Call-ID:        aeac7f28-a6a0-4ba1-9d7c-30934924726d
User:           270 at 1.2.3.4
Contact:        "user" <sip:270 at 192.168.0.2:52767;ob>
Agent:          invoxia-lemonvoice-v6.17.4
Status:         Registered(UDP)(unknown) EXP(2014-01-06 13:06:35)
EXPSECS(134)
Host:           ippbx-border
IP:             10.11.12.13
Port:           52767
Auth-User:      270
Auth-Realm:     1.2.3.4
MWI-Account:    270 at 1.2.3.4

Other devices in the same Setup have their NAT IP [+Port]
(10.11.12.13:52767) in their Contact Header which then works fine. In
this setup however the FreeSWITCH tries to send the INVITE Message to
192.168.0.2 and even when a NAT Table on the firewall manages to map it
to 10.11.12.13:52767 the answer from 10.11.12.13 is discarded.

Normally I use bridge with user/270 at 1.2.3.4 with the dialstring
"{presence_id=${dialed_user}@${dialed_domain}}${sofia_contact(internal/${dialed_user}@${dialed_domain})}".
I tried to force freeswitch to use the NAT IP address by calling bridge
with "sofia/internal/sip:270 at 10.11.12.13:52767;ob" which worked fine.
The IP address is of course not static but if I would be able to extract
the IP information which is stored in sofia registry (see above) I could
arrange my dialplan in a way that would fix that phones missbehaviour.

So after all that describing text (sorry for that), heres my question:
Is there a way (an API or Dialplan command) to get the IP Information
which is stored the sofia registry.

Thanks in advance

Regards,
Mitja






Join us at ClueCon 2013 Aug 6-8, 2013
More information about the FreeSWITCH-users mailing list