From 00533bc9349789b2f15e754040ee0aaada3ee9ad Mon Sep 17 00:00:00 2001 From: "pico.dev" Date: Sat, 24 Feb 2024 18:56:57 +0100 Subject: [PATCH] =?UTF-8?q?Art=C3=ADculo=20#696:=20Configurar=20GNU/Linux?= =?UTF-8?q?=20para=20usar=20forward=20DNS=20y=20el=20servidor=20DNS=20de?= =?UTF-8?q?=20Consul?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../code/dig.out | 18 ++++ .../code/dig.sh | 1 + .../code/dns.conf | 2 + .../code/nslookup.out | 6 ++ .../code/nslookup.sh | 1 + .../code/resolved.conf | 3 + .../code/systemctl.sh | 2 + .../images/consul.png | Bin 0 -> 59055 bytes .../index.markdown | 87 ++++++++++++++++++ layouts/partials/links-posts.html | 1 + layouts/partials/links.html | 1 + 11 files changed, 122 insertions(+) create mode 100644 content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/code/dig.out create mode 100644 content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/code/dig.sh create mode 100644 content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/code/dns.conf create mode 100644 content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/code/nslookup.out create mode 100644 content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/code/nslookup.sh create mode 100644 content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/code/resolved.conf create mode 100644 content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/code/systemctl.sh create mode 100644 content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/images/consul.png create mode 100644 content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/index.markdown diff --git a/content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/code/dig.out b/content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/code/dig.out new file mode 100644 index 0000000000..cee63ca38b --- /dev/null +++ b/content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/code/dig.out @@ -0,0 +1,18 @@ +; <<>> DiG 9.18.24 <<>> consul.service.consul +;; global options: +cmd +;; Got answer: +;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16847 +;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 + +;; OPT PSEUDOSECTION: +; EDNS: version: 0, flags:; udp: 65494 +;; QUESTION SECTION: +;consul.service.consul. IN A + +;; ANSWER SECTION: +consul.service.consul. 0 IN A 127.0.0.1 + +;; Query time: 0 msec +;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP) +;; WHEN: Sat Feb 24 17:57:02 CET 2024 +;; MSG SIZE rcvd: 66 diff --git a/content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/code/dig.sh b/content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/code/dig.sh new file mode 100644 index 0000000000..3a1142c7f8 --- /dev/null +++ b/content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/code/dig.sh @@ -0,0 +1 @@ +$ dig consul.service.consul diff --git a/content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/code/dns.conf b/content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/code/dns.conf new file mode 100644 index 0000000000..94b2aeef80 --- /dev/null +++ b/content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/code/dns.conf @@ -0,0 +1,2 @@ +[main] +dns=systemd-resolved \ No newline at end of file diff --git a/content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/code/nslookup.out b/content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/code/nslookup.out new file mode 100644 index 0000000000..9c292c8d50 --- /dev/null +++ b/content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/code/nslookup.out @@ -0,0 +1,6 @@ +Server: 127.0.0.53 +Address: 127.0.0.53#53 + +Non-authoritative answer: +Name: consul.service.consul +Address: 127.0.0.1 diff --git a/content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/code/nslookup.sh b/content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/code/nslookup.sh new file mode 100644 index 0000000000..e6cf192e03 --- /dev/null +++ b/content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/code/nslookup.sh @@ -0,0 +1 @@ +$ nslookup consul.service.consul \ No newline at end of file diff --git a/content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/code/resolved.conf b/content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/code/resolved.conf new file mode 100644 index 0000000000..9c7331c707 --- /dev/null +++ b/content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/code/resolved.conf @@ -0,0 +1,3 @@ +[Resolve] +DNS=127.0.0.1:8600 +Domains=consul \ No newline at end of file diff --git a/content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/code/systemctl.sh b/content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/code/systemctl.sh new file mode 100644 index 0000000000..807954fbd4 --- /dev/null +++ b/content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/code/systemctl.sh @@ -0,0 +1,2 @@ +$ sudo systemctl start systemd-resolved.service +$ nmcli general reload \ No newline at end of file diff --git a/content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/images/consul.png b/content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/images/consul.png new file mode 100644 index 0000000000000000000000000000000000000000..268c09ce1b538508f466d3ca6e098995e9c552c3 GIT binary patch literal 59055 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 literal 0 HcmV?d00001 diff --git a/content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/index.markdown b/content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/index.markdown new file mode 100644 index 0000000000..d3352cac9f --- /dev/null +++ b/content/posts/2024/2024-02-24-configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/index.markdown @@ -0,0 +1,87 @@ +--- +pid: 696 +type: "post" +title: "Configurar GNU/Linux para usar forward DNS y el servidor DNS de Consul" +url: "/2024/02/configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/" +date: 2024-02-24T18:00:00+02:00 +language: "es" +index: true +rss: true +sharing: true +comments: true +promoted: false +imagePost: "logotype:hashicorp-consul.svg" +tags: ["planeta-codigo", "gnu-linux"] +series: ["hashicorp"] +summary: "Una de las cuestiones que tenía pendiente de mirar sobre Consul es como hacer que un nodo con GNU/Linux pueda acceder al catálogo de servicios mediante la interfaz DNS que ofrece Consul. Para esto es necesario configurar el forward DNS." +--- + +{{% post %}} + +{{< logotype image1="hashicorp-consul.svg" >}} + +Quizá las aplicaciones no se pueden modificar para integrarse directamente con [Consul][consul] por su antigüedad o no hay tiempo ni personas para hacerle esos grandes cambios, una forma sencilla que no requiere grandes cambios en las aplicaciones y que les da acceso a algunas de las funcionalidades que proporciona Consul es utilizar su servicio DNS. + +Configurar que el nodo donde se ejecuta un servicio pueda acceder al catálogo de servicios de Consul mediante la interfaz DNS requiere configurar el _forward_ DNS en la configuración de red. + +{{< tableofcontents >}} + +## El servidor Consul + +Consul es una herramienta desarrollada por [Hashicorp][hashicorp] centrada en la conectividad entre los servicios. Ofrece varias funcionalidades específicas para las aplicaciones compuestas de múltiples servicios. Consul proporciona una catálogo de servicios actualizado y con información del estado de los servicios, conectividad entre los servicios con el _service mesh_ y almacenamiento clave-valor para la configuración de aplicaciones. + +Algo ya he comentado en varios artículos sobre Consul y otros productos de Hashicorp como [Vault][vault] y [Nomad][nomad]. + +* [Serie de artículos sobre Hashicorp]([blogbitix-serie-hashicorp]) + +Consul además a través de su API el catálogo de los servicios lo ofrece mediante un servidor DNS propio. Los servicios del catálogo se añaden a su servidor DNS con el sufijo _consul_, los servicios registrados en Consul tienen un nombre de dominio con la siguiente estructura. Consul se encarga de que en una consulta solo se devuelvan los servicios que han respondido correctamente al _healthcheck_ y devolver todas las instancias de un mismo servicio si hay varias en varios nodos. + +* _web.service.consul_ para los servicios. +* _web.query.consul_ para las consultas. + +Con las consultas o _queries_ es posible crear filtros específicos por varios criterios y obtener los servicios que coincidan con la consulta, pero las consultas dan para otro artículo. En este artículo con el servidor DNS que ofrece Consul la cuestión es cómo hacer que en GNU/Linux uno de esos dominios sea resuelto para lo que hay que configurar el _forward_ DNS. + +## Configurar en GNU/Linux el _forward_ DNS al servicio DNS de Consul + +El número puerto estándar del servicio DNS es el 53, en GNU/Linux los servicios en el número de puerto menor de 1024 requiere permisos de _root_ que por seguridad es algo que no se desea ejecutar Consul. + +Consul ofrece el servicio de DNS en el puerto 8600 con lo que para ejecutar consul sin permisos de _root_ es necesario redirigir las consultas de DNS al puerto 8600. Esta redirección en GNU/Linux se puede hacer de dos formas con _systemd-resolver_ o con _dnsmasq_. A continuación muestro la configuración para la opción con _systemd-resolver_ y _NetworkManager_. + +## Redirigir peticiones DNS de los dominios a Consul + +En Arch Linux el gestor de red que utilizo es _NetworkManager_, el primer paso para la configuración es hacer que _NetworkManager_ también utilice _systemd-resolved_ para la resolución de las consultas DNS. Hay que crear el siguiente archivo de configuración _/etc/NetworkManager/conf.d/dns.conf_. + +{{< code file="dns.conf" language="plain" options="" >}} + +El segundo paso es configurar _systemd-resolved_ para que redirigir las consultas de DNS de los dominios con el sufijo _consul_ al servidor DNS de Consul, en esta configuración se especifica la dirección IP del servidor de Consul que será la local y el puerto. Hay que editar el archivo _/etc/systemd/resolved.conf_. + +{{< code file="resolved.conf" language="plain" options="" >}} + +Con la configuración realizada hay que iniciar y habilitar el servicio _systemd-resolved_ y recargar la configuración de _NetworkManager_. + +{{< code file="systemctl.sh" language="bash" options="" >}} + +Ahora es posible acceder a la interfaz de la consola web de Consul con el dominio en vez de con la dirección IP. + +{{< image + gallery="true" + image1="image:consul.webp" optionsthumb1="650x450" title1="Consola web de Consul con dominio del servicio" + caption="Consola web de Consul con dominio del servicio" >}} + +También es posible hacer un _ping_ y el dominio se resolverá a la dirección IP. Y obtener información del dominio con los comandos _dig_ y _nslookup_. + +{{< code file="dig.sh" language="bash" options="" >}} +{{< code file="dig.out" language="plain" options="" >}} + +{{< code file="nslookup.sh" language="bash" options="" >}} +{{< code file="nslookup.out" language="plain" options="" >}} + +{{< reference >}} +* [systemd-resolved](https://wiki.archlinux.org/title/Systemd-resolved) +* [NetworkManager#Configuration](https://wiki.archlinux.org/title/NetworkManager#Configuration) +* [dnsmasq](https://wiki.archlinux.org/title/Dnsmasq) +* [resolved.conf.5](https://man.archlinux.org/man/resolved.conf.5) +* [Configure systemd-resolved to use a specific DNS nameserver for a given domain](https://gist.github.com/brasey/fa2277a6d7242cdf4e4b7c720d42b567) +{{< /reference >}} + +{{% /post %}} diff --git a/layouts/partials/links-posts.html b/layouts/partials/links-posts.html index a3560a40c9..425464912d 100644 --- a/layouts/partials/links-posts.html +++ b/layouts/partials/links-posts.html @@ -708,6 +708,7 @@ [blogbitix-693]: https://picodotdev.github.io/blog-bitix/2024/01/analisis-del-juego-continuacion-de-la-historia-the-last-of-us-parte-2/ [blogbitix-694]: https://picodotdev.github.io/blog-bitix/2024/01/compro-un-soporte-de-monitor-para-ganar-espacio-en-la-mesa/ [blogbitix-695]: https://picodotdev.github.io/blog-bitix/2024/02/obsidian-una-herramienta-para-almacenar-conocimiento/ +[blogbitix-696]: https://picodotdev.github.io/blog-bitix/2024/02/configurar-gnu-linux-para-usar-forward-dns-y-el-servidor-dns-de-consul/ [elblogdepicodev-0]: https://elblogdepicodev.blogspot.com.es/2010/02/hola-mundo_06.html [elblogdepicodev-1]: https://elblogdepicodev.blogspot.com.es/2010/02/cambiando-el-fondo-de-pantalla-del.html diff --git a/layouts/partials/links.html b/layouts/partials/links.html index c8b8841a0f..fc87d1d4ae 100644 --- a/layouts/partials/links.html +++ b/layouts/partials/links.html @@ -1175,6 +1175,7 @@ [blogbitix-serie-donacion]: https://picodotdev.github.io/blog-bitix/series/donacion/ [blogbitix-serie-electronica]: https://picodotdev.github.io/blog-bitix/series/electronica/ [blogbitix-serie-graphql]: https://picodotdev.github.io/blog-bitix/series/graphql/ +[blogbitix-serie-hashicorp]: https://picodotdev.github.io/blog-bitix/series/hashicorp/ [blogbitix-serie-java-platform]: https://picodotdev.github.io/blog-bitix/series/java-platform/ [blogbitix-serie-juegos]: https://picodotdev.github.io/blog-bitix/series/juegos/ [blogbitix-serie-hemeroteca]: https://picodotdev.github.io/blog-bitix/series/hemeroteca/