[OpenSIPS-Users] DNS lookup question - Domain URI appended by local domain attempts on SRV lookup

Jock McKechnie jock.mckechnie at gmail.com
Thu Dec 6 17:14:38 EST 2018


Good afternoon;

We have a few customers that we send calls to their network by domain
name - for example, sip:alice at server01.customer123.com.

OpenSIPS' default behaviour is to initially look for an SRV record and
then if it cannot locate one, to search for an A record. This is the
correct behaviour, of course.

In our example, let us assume the Fully Qualified Domain Name of the
OpenSIPS server is: handoff.rackA.datacentreB.provider.com
And, further, that this customer does not have an SRV record and only
an A record.

What I have discovered is that OpenSIPS follows a DNS lookup pattern like this:
Query ServerA: SRV? _sip._udp.server01.customer123.com. (NXDOMAIN)
Query ServerB: SRV? _sip._udp.server01.customer123.com. (NXDOMAIN)
(up to dns_retr_no times)
Query ServerA: SRV?
_sip._udp.server01.customer123.com.rackA.datacentreB.provider.com.
(SERVFAIL)
Query ServerB: SRV?
_sip._udp.server01.customer123.com.rackA.datacentreB.provider.com.
(SERVFAIL)
(up to dns_retr_no times)
Query ServerA: A? server01.customer123.com (A: 10.10.10.123)

At which point, at least in my example, we now get a valid A record back.

Unfortunately there's a twist here - while searching for the SRV of
the customer domain gets an NXDOMAIN, which is cached appropriately by
the resolvers, the combined "destination+local" address
(_sip._udp.server01.customer123.com.rackA.datacentreB.provider.com)
does not for reasons I am unsure of, and instead gets a SERVFAIL. This
is *not* cached and subsequently for every single lookup we're getting
some not insignificant delays - worse yet, we've just added a whole
bunch of nameservers which have made it bad enough we've noticed it.
We could reduce the number of nameservers we query (Thank you,
dns_servers_no) but we want to give best chance that we can do a
successful DNS lookup (and faulty resolvers have recently bitten us).

I need DNS look up, and I need SRV look up to happen. But there will
*never* be a case where we will pass a call to a local destination
that needs the local domain name to be tacked onto it. Is there any
way to not do this? To search for
"_sip._udp.server01.customer123.com." and then skip right to the A
record?

It's entirely possible this is done somewhere inside libresolv and
it's completely outside of OpenSIPS' control, but I wanted to ask in
case I'm just completely missing it in the 'core parameters'
documentation.

As always, my thanks for your time;

 - Jock



More information about the Users mailing list