Ejemplo mínimo
Máquinas A y B, donde B usa mDNS con nombre de dominio b.local
y 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 -t
para 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.local
funciona normalmente ( -4
o -6
tambié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-mdns
y 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