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

Daniel-Constantin Mierla miconda at gmail.com
Thu May 28 17:58:52 CEST 2020


Welcome!

Btw, would anyone find it useful to be able to add also SRV records in
the cache via modparam? I did it for A/AAAA records, but should be easy
to extend for SRV...

Cheers,
Daniel

On 28.05.20 17:01, Alex Balashov wrote:
> Thank you for this, Daniel!
>
> On 5/28/20 3:51 AM, Daniel-Constantin Mierla wrote:
>> 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
>>
>>
>> _______________________________________________
>> Kamailio (SER) - Users Mailing List
>> 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
> 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




More information about the sr-users mailing list