Exemplo mínimo
Máquina A e B, onde B usa mDNS com nome de domínio b.local
e 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 -t
para 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.local
funciona normalmente ( -4
ou -6
també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-mdns
e 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