[SR-Users] Kamailio not using system resolver for hostname resolution (DMQ)?

Daniel-Constantin Mierla miconda at gmail.com
Thu May 28 09:51:27 CEST 2020


For the records, I added a modparam to corex module which allows adding
A/AAAA records in the internal dns cache at startup. It could be useful
in this case as alternative for /etc/hostname entries, but also at least
for some testing scenarios to avoid updating records on dns server,
which may take time to propagate.

  *
https://www.kamailio.org/docs/modules/devel/modules/corex.html#corex.p.dns_cache

During runtime, there are rpc commands to add/remove records in the dns
cache.

Cheers,
Daniel

On 20.05.20 20:56, Daniel-Constantin Mierla wrote:
>
> Hello,
>
> having use_dns_cache=no is not that bad if you have a local dns cache
> application pointed by /etc/resolv.conf, provided that you do not need
> srv based load balancing.
>
> Not being the developer of dns resolving part in kamailio and the dns
> cache, I investigated a bit and practically the /etc/hosts is the
> pre-dns way of associating domains to ip addresses, without ttl and
> other attributes specific to dns records. That seems the reason the
> libc dns related functions do not use it implicitly, thus also not
> reflected inside kamailio dns caching.
>
> Now, you can add records to kamailio dns cache via rpc commands, which
> can be done also from config using jsonrpc_exec() from jsonrpcs module
> (e.g., using event_route[htable:mod-init] before sip traffic is
> handled). The command should be liked:
>
> kamctl rpc dns.add_a domain ttl ipaddr flags
>
> The flags can be 1 to add it as a bad record (blacklisted domain) or 2
> to add it as permanent record (do not expire). You can use
> dns.add_aaaa for ipv6.
>
> Actually I am now thinking to add the possibility to add to dns cache
> via modparam of ipops module, to make it easier overall.
>
> Cheers,
> Daniel
>
> On 20.05.20 19:35, George Diamantopoulos wrote:
>> Hello all,
>>
>> Thank you for your enlightening answers. I ended up creating DNS
>> entries anyway, so it's all good now. use_dns_cache=no sounded a
>> little scary :-).
>>
>> BR.
>> George
>>
>> On Tue, 19 May 2020 at 19:44, Daniel-Constantin Mierla
>> <miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>>
>>     A quick follow up as I found quite interesting that nowadays
>>     *BSDs allow
>>     specifying order of lookup in resolv.conf to include the hosts
>>     file, but
>>     that doesn't seem to be in Linux:
>>
>>       * https://man.openbsd.org/resolv.conf.5#lookup
>>
>>     Cheers,
>>     Daniel
>>
>>
>>     On 19.05.20 17:48, Daniel-Constantin Mierla wrote:
>>     > Hello,
>>     >
>>     > worth to clarify that Kamailio doesn't implement a dns resolver
>>     from
>>     > scratch, it still uses the functions from libc. It only does
>>     caching and
>>     > try to use cashing records first.
>>     >
>>     > By default, the following dns functions are used internally
>>     when the
>>     > cache doesn't have the record already -- they are set in the
>>     dns_func
>>     > structure:
>>     >
>>     > struct dns_func_t dns_func = {
>>     >     res_init,
>>     >     res_search,
>>     >     gethostbyname,
>>     > #ifdef HAVE_GETHOSTBYNAME2
>>     >     gethostbyname2
>>     > #else
>>     >     NULL
>>     > #endif
>>     > };
>>     >
>>     > So practically by leveraging res_init()/res_search() is relying on
>>     > /etc/resolv.conf to do DNS queries, which is not using the
>>     /etc/hosts
>>     > (iirc). For more see:
>>     >
>>     >   * https://linux.die.net/man/3/res_search
>>     >
>>     > Cheers,
>>     > Daniel
>>     >
>>     > On 19.05.20 17:23, Alex Balashov wrote:
>>     >> You are correct that Kamailio does not use the libc resolver /
>>     >> libresolv, but rather its own resolver, which ignores /etc/hosts.
>>     >>
>>     >> -- Alex
>>     >>
>>     >> On 5/19/20 10:42 AM, George Diamantopoulos wrote:
>>     >>> Hello all,
>>     >>>
>>     >>> I've come across this today when trying to setup DMQ replication:
>>     >>>
>>     >>> root at sbcpub0-stage-lhe0-cn1:/root# systemctl restart kamailio
>>     >>> root at sbcpub0-stage-lhe0-cn1:/root# kamcmd dmq.list_nodes
>>     >>> {
>>     >>>          host: 172.30.154.189
>>     >>>          port: 5090
>>     >>>          resolved_ip: 172.30.154.189
>>     >>>          status: active
>>     >>>          last_notification: 0
>>     >>>          local: 1
>>     >>> }
>>     >>> root at sbcpub0-stage-lhe0-cn1:/root# getent hosts
>>     >>> dmq-ng.services.domain.com
>>     <http://dmq-ng.services.domain.com>
>>     <http://dmq-ng.services.domain.com>
>>     >>> 172.30.154.189 dmq-ng.services.domain.com
>>     <http://dmq-ng.services.domain.com>
>>     >>> <http://dmq-ng.services.domain.com>
>>     >>> 172.17.130.13 dmq-ng.services.domain.com
>>     <http://dmq-ng.services.domain.com>
>>     >>> <http://dmq-ng.services.domain.com>
>>     >>>
>>     >>> root at sbcpub0-stage-lhe0-cn1:/root# grep dmq-ng /etc/kamailio/*
>>     >>> /etc/kamailio/kamailio-module-params.cfg:modparam("dmq",
>>     >>> "notification_address", "sip:dmq-ng.services.domain.com:5090
>>     <http://dmq-ng.services.domain.com:5090>
>>     >>> <http://dmq-ng.services.domain.com:5090>")
>>     >>>
>>     >>> In another case, where the resolving IPs for the DMQ service
>>     hostname
>>     >>> were listed as A records in DNS, this worked as expected.
>>     >>> In this case, the second host of the DMQ group is not listed in
>>     >>> dmq.list_nodes, despite its being set in /etc/hosts, as shown
>>     by the
>>     >>> getent command.
>>     >>>
>>     >>> Doesn't kamailio use nss for hostname resolution? Am I missing
>>     >>> something else? Thanks!
>>     >>>
>>     >>> BR,
>>     >>> George
>>     >>>
>>     >>>
>>     >>> _______________________________________________
>>     >>> Kamailio (SER) - Users Mailing List
>>     >>> sr-users at lists.kamailio.org <mailto:sr-users at lists.kamailio.org>
>>     >>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>>     >>>
>>     >> -- 
>>     >> Alex Balashov | Principal | Evariste Systems LLC
>>     >>
>>     >> Tel: +1-706-510-6800 / +1-800-250-5920 (toll-free)
>>     >> Web: http://www.evaristesys.com/, http://www.csrpswitch.com/
>>     >>
>>     >> _______________________________________________
>>     >> Kamailio (SER) - Users Mailing List
>>     >> sr-users at lists.kamailio.org <mailto:sr-users at lists.kamailio.org>
>>     >> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>>     > --
>>     > Daniel-Constantin Mierla -- www.asipto.com <http://www.asipto.com>
>>     > www.twitter.com/miconda <http://www.twitter.com/miconda> --
>>     www.linkedin.com/in/miconda <http://www.linkedin.com/in/miconda>
>>     > Funding: https://www.paypal.me/dcmierla
>>     >
>>     -- 
>>     Daniel-Constantin Mierla -- www.asipto.com <http://www.asipto.com>
>>     www.twitter.com/miconda <http://www.twitter.com/miconda> --
>>     www.linkedin.com/in/miconda <http://www.linkedin.com/in/miconda>
>>     Funding: https://www.paypal.me/dcmierla
>>
>>
>>     _______________________________________________
>>     Kamailio (SER) - Users Mailing List
>>     sr-users at lists.kamailio.org <mailto:sr-users at lists.kamailio.org>
>>     https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>>
>>
>> _______________________________________________
>> Kamailio (SER) - Users Mailing List
>> sr-users at lists.kamailio.org
>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
> -- 
> Daniel-Constantin Mierla -- www.asipto.com
> www.twitter.com/miconda -- www.linkedin.com/in/miconda
> Funding: https://www.paypal.me/dcmierla

-- 
Daniel-Constantin Mierla -- www.asipto.com
www.twitter.com/miconda -- www.linkedin.com/in/miconda
Funding: https://www.paypal.me/dcmierla

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20200528/4e1e6bb8/attachment.html>


More information about the sr-users mailing list