Ejemplo mínimo

Ejemplo mínimo

Ejemplo mínimo

Máquinas A y B, donde B usa mDNS con nombre de dominio b.localy configura el servicio ssh en el puerto 2222. A y B no activan el firewall.

En la máquina A nginx.conf:

stream {
    upstream b-ssh {
        server  b.local:2222;
    }
    server {
        listen      2222;
        listen      [::]:2222;
        proxy_pass  b-ssh;
    }
}

Al utilizar nginx -tpara probar esta configuración en la máquina A, se produjo un error:

[emerg] host not found in upstream "b.local:2222"

Sin embargo, en la máquina A, el uso ssh -p 2222 b.localfunciona normalmente ( -4o -6también se prueba)

Información posiblemente útil

En mi ejemplo del mundo real, la máquina A es Windows 11 que desactiva todos los firewalls; La máquina B es WSL2 ubuntu 21.10 dentro de la máquina A que utiliza el servicio mDNS avahi-daemon.

En la máquina lateral A nginx.conf, también configuro un pase de proxy HTTP:

http {
    server {
        listen  8929;
        listen  [::]:8929;
        location / {
            proxy_pass  http://b.local:8929;
        }
    }
}

y esto funciona bien a pesar de que utiliza el nombre de dominio mDNS.

Si reemplazo el nombre de dominio mDNS con su IP real en el servidor ascendente, el proxy SSH funciona.

Respuesta1

Instale libnss-mdnsy asegúrese de que haya una entrada para mdns en /etc/nsswitch.conf:

hosts:          files mdns [NOTFOUND=return] dns

Puedes probar la resolución de mdns con getent:

getent hosts b

información relacionada