Exemplo mínimo

Exemplo mínimo

Exemplo mínimo

Máquina A e B, onde B usa mDNS com nome de domínio b.locale configura o serviço ssh na porta 2222. A e B não ativam o firewall.

Na máquina A nginx.conf:

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

Ao usar nginx -tpara testar esta configuração na máquina A, ocorreu um erro:

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

Porém, na máquina A, o uso ssh -p 2222 b.localfunciona normalmente ( -4ou -6também é testado)

Informações possivelmente úteis

No meu exemplo do mundo real, a máquina A é um Windows 11 que desativa todos os firewalls; a máquina B é WSL2 ubuntu 21.10 dentro da máquina A que usa o serviço mDNS avahi-daemon.

Na máquina lateral A nginx.conf, também defini uma passagem de proxy HTTP:

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

e isso funciona bem, embora use o nome de domínio mDNS.

Se eu substituir o nome de domínio mDNS pelo seu IP real no servidor upstream, o proxy SSH funcionará.

Responder1

Instale libnss-mdnse verifique se há uma entrada para mdns em /etc/nsswitch.conf:

hosts:          files mdns [NOTFOUND=return] dns

Você pode testar a resolução mdns com getent:

getent hosts b

informação relacionada