Cómo definir DNS en contenedores Docker: Guía paso a paso

Cuando implementas un contenedor en tu red, si no puede encontrar un servidor DNS definido en /etc/resolv.conf, por defecto tomará el DNS configurado para la máquina anfitrión. Eso puede estar bien para ciertas situaciones. Pero ¿qué pasa si (quizás por razones de seguridad) no quieres que tus contenedores utilicen el mismo DNS que tus hosts? Digamos, por ejemplo, que tus servidores host utilizan un servidor DNS específico para evitar que los usuarios visiten sitios particulares. O tal vez tienes configuraciones DNS diferentes para VPN.

Cómo definir DNS en contenedores Docker: Guía paso a paso - Seguridad | Imagen 1 Newsmatic

Puede haber varias razones por las que no deseas que tus contenedores utilicen el mismo DNS que sus hosts. Entonces, ¿qué haces? ¿Cómo defines el DNS para los contenedores de Docker de manera que no capturen el DNS de la máquina de alojamiento?

En realidad, es bastante simple. Déjame mostrarte cómo.

Índice de Contenido
  1. Lo que necesitarás
  2. Cómo implementar un contenedor con DNS preconfigurado

Lo que necesitarás

Para que esto funcione, necesitarás una máquina con el motor de Docker instalado. Estaré demostrando en Ubuntu Server 20.04, pero la plataforma de alojamiento no importa, siempre y cuando tengas Docker en ejecución y puedas implementar contenedores. También querrás tener un usuario que sea miembro del grupo docker (para que no estés implementando como usuario root o con sudo, ambos son un problema de seguridad). Con esas cosas listas, vamos a implementar.

Cómo implementar un contenedor con DNS preconfigurado

Te mostraré cómo implementar contenedores de Docker con DNS preconfigurado. El primer método utilizará el comando docker y el segundo será a través de Docker Compose.

Protección antivirus en línea: McAfee Clinic lleva la seguridad de tu PC al siguiente nivel

Por ejemplo, supongamos que deseas implementar un contenedor Ubuntu, llamado ubuntuDNS, con el servidor DNS primario Cloudflare de 1.0.0.1. El comando sería:

docker run -d -t --name ubuntuDNS --dns="1.0.0.1" ubuntu

También podrías implementar ese contenedor con un DNS primario y secundario de la siguiente manera:

docker run -d -t --name ubuntuDNS --dns="1.0.0.1" --dns="1.1.1.1" ubuntu

Asegurémonos de que el contenedor respete nuestra configuración DNS. Para eso, accede a la shell del contenedor con el siguiente comando:

docker exec -it ubuntuDNS bash

Cómo proteger tu computadora de los virus: métodos y consejos

Desde la shell, ejecuta el siguiente comando:

cat /etc/resolv.conf

Deberías ver el(s) servidor(es) DNS que configuraste desde la línea de comandos (Figura A).

Figura A

Sal de la shell con el comando exit.

Ahora haremos lo mismo utilizando Docker Compose. Por supuesto, debes tener este comando instalado, lo cual se puede hacer con lo siguiente:

¡Defiéndete! Protege tu seguridad en línea contra amenazas críticas

wget https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-x86_64
chmod u+x docker-compose-Linux-x86_64
sudo mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose

Con Docker Compose instalado, ahora puedes crear el archivo necesario con el comando:

nano docker-compose.yaml

En ese archivo, vamos a implementar un contenedor de rabbitmq (un agente de mensajes de código abierto) que utilizará una entrada DNS de CloudFlare, que se verá así:

version: '3'
services:
service:
dns:
- "1.0.0.1"
- "1.1.1.1"
network_mode: "bridge"
image: rabbitmq:3-management
container_name: rabbitmq
hostname: rabbitmq
ports:
- "15672:15672"

Nota: Sin la opción network_mode configurada como "bridge", la entrada DNS no funcionará.

Protege tus contraseñas con PAM: Tu aliado para la seguridad

Guarda y cierra el archivo. Implementa el contenedor con el comando:

docker-compose up

El contenedor se implementará. Abre una nueva conexión SSH al servidor de alojamiento (ya que la implementación no devolverá tu indicador de comando) y luego accede a la shell del contenedor de rabbitmq con el comando:

docker exec -it rabbitmq bash

Una vez dentro del contenedor, visualiza las entradas DNS con el comando:

cat /etc/resolv.conf

Cómo configurar un servidor VPN para hacer conexiones a través de firewalls

Deberías ver que se listan 1.0.0.1 y 1.1.1.1 (Figura B).

Figura B

Y eso es todo lo necesario para definir DNS en tus contenedores de Docker. El motivo por el que usarías esto dependerá de tus necesidades, pero tener esta función disponible puede ser muy útil.

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Seguridad, allí encontraras muchos artículos similares a Cómo definir DNS en contenedores Docker: Guía paso a paso , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.