Hello all,
I've come across this today when trying to setup DMQ replication:
root@sbcpub0-stage-lhe0-cn1:/root# systemctl restart kamailio root@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@sbcpub0-stage-lhe0-cn1:/root# getent hosts dmq-ng.services.domain.com 172.30.154.189 dmq-ng.services.domain.com 172.17.130.13 dmq-ng.services.domain.com
root@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")
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
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@sbcpub0-stage-lhe0-cn1:/root# systemctl restart kamailio root@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@sbcpub0-stage-lhe0-cn1:/root# getent hosts 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 172.17.130.13 dmq-ng.services.domain.com http://dmq-ng.services.domain.com
root@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")
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@lists.kamailio.org https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
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@sbcpub0-stage-lhe0-cn1:/root# systemctl restart kamailio root@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@sbcpub0-stage-lhe0-cn1:/root# getent hosts 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 172.17.130.13 dmq-ng.services.domain.com http://dmq-ng.services.domain.com
root@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")
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@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@lists.kamailio.org https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
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@sbcpub0-stage-lhe0-cn1:/root# systemctl restart kamailio root@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@sbcpub0-stage-lhe0-cn1:/root# getent hosts 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 172.17.130.13 dmq-ng.services.domain.com http://dmq-ng.services.domain.com
root@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")
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@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@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
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@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:
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:
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@sbcpub0-stage-lhe0-cn1:/root# systemctl restart kamailio root@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@sbcpub0-stage-lhe0-cn1:/root# getent hosts 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 172.17.130.13 dmq-ng.services.domain.com http://dmq-ng.services.domain.com
root@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")
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@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@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@lists.kamailio.org https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
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@gmail.com mailto:miconda@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@sbcpub0-stage-lhe0-cn1:/root# systemctl restart kamailio >>> root@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@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@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@lists.kamailio.org <mailto:sr-users@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@lists.kamailio.org <mailto:sr-users@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@lists.kamailio.org <mailto:sr-users@lists.kamailio.org> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
Kamailio (SER) - Users Mailing List sr-users@lists.kamailio.org https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
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_c...
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@gmail.com mailto:miconda@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@sbcpub0-stage-lhe0-cn1:/root# systemctl restart kamailio >>> root@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@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@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@lists.kamailio.org <mailto:sr-users@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@lists.kamailio.org <mailto:sr-users@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@lists.kamailio.org <mailto:sr-users@lists.kamailio.org> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
Kamailio (SER) - Users Mailing List sr-users@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
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_c...
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@gmail.com mailto:miconda@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@sbcpub0-stage-lhe0-cn1:/root# systemctl restart kamailio >>> root@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@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@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@lists.kamailio.org <mailto:sr-users@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@lists.kamailio.org <mailto:sr-users@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@lists.kamailio.org <mailto:sr-users@lists.kamailio.org> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
Kamailio (SER) - Users Mailing List sr-users@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@lists.kamailio.org https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
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_c...
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@gmail.com mailto:miconda@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@sbcpub0-stage-lhe0-cn1:/root# systemctl restart kamailio >>> root@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@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@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@lists.kamailio.org mailto:sr-users@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@lists.kamailio.org mailto:sr-users@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@lists.kamailio.org mailto:sr-users@lists.kamailio.org https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
Kamailio (SER) - Users Mailing List sr-users@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@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@lists.kamailio.org https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
Hi George, if you are wondering how to switch it to system resolver, set global options use_dns_cache=no, but per my understanding this may have performance impact.
On 19.05.2020, at 16:42, George Diamantopoulos georgediam@gmail.com wrote:
Doesn't kamailio use nss for hostname resolution? Am I missing something else? Thanks!
BR, Andrew
Hi George,
you could set the used dns server in Kamailio to only one and setup an dnsmasq for example that is number one in /etc/resolve.conf.
dnsmasq can handle /etc/hosts as source or you combine your dns domain with upstream dnserver (so dnsmasq ask for domain foo your server baa).
If you turn on dns request logging in dnsmasq you see what your server is doing / asking for.
Just as an tricky hack. I needed that for one carrier that used split brain dns in public.
Cheers Karsten
George Diamantopoulos georgediam@gmail.com schrieb am Di., 19. Mai 2020, 16:43:
Hello all,
I've come across this today when trying to setup DMQ replication:
root@sbcpub0-stage-lhe0-cn1:/root# systemctl restart kamailio root@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@sbcpub0-stage-lhe0-cn1:/root# getent hosts dmq-ng.services.domain.com 172.30.154.189 dmq-ng.services.domain.com 172.17.130.13 dmq-ng.services.domain.com
root@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")
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@lists.kamailio.org https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users