ubuntu vm devuelve la ip interna a la imagen de la ventana acoplable

ubuntu vm devuelve la ip interna a la imagen de la ventana acoplable

Tengo una imagen de Docker ejecutándose en múltiples pasadas en un host físico. El contenedor acoplable está intentando conectarse a un servicio que se ejecuta en el host físico. Sin embargo, la resolución DNS le dice a Docker que la dirección IP es 127.0.1.1. Creo que la búsqueda de DNS en la máquina virtual devuelve una dirección IP local, cuando se requiere una dirección pública:

physical host: culsu (ubuntu 18.04)
    multipass host: promlife (ip: 10.13.31.13) (ubuntu 22.04)
        docker container: prometheus (ip: 172.18.0.9)
            dns lookup of promlife: 127.0.1.1

Creo que el problema se puede resolver si el servidor DNS promlifevuelve a funcionar.10.13.31.13

Desde la máquina física:

$ ping promlife
PING promLife (10.13.31.13) 56(84) bytes of data.

Desde la máquina virtual de prolife:

$ ping promlife
PING promlife (127.0.1.1) 56(85) bytes of data.

Desde el contenedor acoplable:

$ ping promlife
PING promlife (127.0.1.1) 56(85) bytes of data.

¿Alguien tiene alguna idea sobre lo que necesito cambiar para que Prometheus resuelva el host virtual?

¿El problema está potencialmente relacionado con systemd-resolved?

¡Gracias por tu ayuda!

Respuesta1

La dirección 127.0.1.1 es la dirección que los hosts Linux configuran como la dirección para "sí mismo por nombre" en /etc/hosts. Cuando ejecuta ping(o cualquier otra cosa que use resolución de nombres POSIX), usará la nsswitchbiblioteca para mirar el /etc/hostsarchivo y encontrar el significado del nombre no completamente calificado.

No estoy seguro de por qué desde el interior del contenedor hace eso: de alguna manera se descarga a la nsswitchbiblioteca del host, tal vez sea algo de Docker.

De todos modos, si desea acceder al host de Docker desde un contenedor de Docker, la forma correcta es utilizar un nombre de host especial que Docker resuelva automáticamente en la dirección IP del host de Docker en la red local del contenedor, que se llama host.docker.internal.

Pruebe: ping host.docker.internaldesde dentro de su contenedor.

Respuesta2

Tienes que actualizar la configuración DNS envida de fiesta, puede editar el archivo /etc/netplan/netcfg.yaml. Modificar elservidores de nombrespara apuntar a su servidor DNS preferido.

network:
  version: 2
  ethernets:
    ens: 
      addresses: [10.13.31.13/24] # Your IP configuration
      gateway4: 10.13.31.1 # Your gateway
      nameservers:
        addresses: [8.8.8.8]  

Después de actualizar la configuración, aplíquela.
sudo netplan apply
Reinicie elsystemd-resueltoservicio para asegurarse de que recoge los cambios.
sudo systemctl restart systemd-resolved

información relacionada