Good morning Vinay.
I had this experience 1 year ago, so maybe Microsoft has improved something or our client
has discovered new functionality.
Calling from Lync Server to Outside.
1.- You need to modparam("rr", "enable_full_lr", 0) just to avoid
Loose Router parameter in this way "lr=on" and having like this "lr"
(RFC3261 compliant). Microsoft denies traffic with "lr=on".
2.- At the time of my trials, our client or Microsoft was not able to authenticate, so we
had to validate Lync through "trusted" table (IP auth).
3.- As always avoid ALG support on Lync Server side's Router/FW. You don't have to
deal with UDP NAT timeouts as Lync only worked over TCP (you will also have to enable TCP
support on Kamailio side).
4.- When detecting NAT on Kamailio side through nathelper module you will find a new issue
with regard to nat_uac_test() which doesn't (as it's obvious) recognize
"yourmicrosoftdomain.local". You have to deal to recompile nathelper.c
introducing this exception or play with "contact header var" to correctly detect
NAT.
Calling from the Outside to Lync Server:
1.- As there was no REGISTER from Lync Server you have to map your public IP address on
you Router/FW to your Lync Server.
2.- You should send from Kamailio a RURI with DDI and filter this one to proper extension
on your Lync Server side.
3.- As Microsoft was not able to REGISTER you also have to create a location entry on
Kamailio database like: kamctl ul add <DDI>
“sip:<DDI>@<yourLyncpublicIP>:5060;transport=tcp”
Hope this helps you.
--
Eduardo Lejarreta.