[SR-Users] Kamailio not using system resolver for hostname resolution (DMQ)?
Alex Balashov
abalashov at evaristesys.com
Thu May 28 17:01:43 CEST 2020
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/
More information about the sr-users
mailing list