[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