Minimalbeispiel

Minimalbeispiel

Minimalbeispiel

Maschine A und B, wobei B mDNS mit Domänennamen verwendet b.localund den SSH-Dienst auf Port 2222 einrichtet. A und B schalten die Firewall nicht ein.

In Maschine A nginx.conf:

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

Beim nginx -tTesten dieser Konfiguration auf Maschine A ist der folgende Fehler aufgetreten:

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

Auf Maschine A funktioniert die Verwendung jedoch ssh -p 2222 b.localnormal ( -4oder -6wird auch getestet).

Möglicherweise nützliche Informationen

In meinem realen Beispiel ist Maschine A ein Windows 11, das alle Firewalls deaktiviert; Maschine B ist WSL2 Ubuntu 21.10 innerhalb von Maschine A, das den mDNS-Dienst Avahi-Daemon verwendet.

Auf der Seite von Maschine A nginx.confhabe ich außerdem einen HTTP-Proxy-Pass festgelegt:

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

und das funktioniert gut, obwohl hier der mDNS-Domänenname verwendet wird.

Wenn ich den mDNS-Domänennamen im Upstream-Server durch seine echte IP ersetze, funktioniert der SSH-Proxy.

Antwort1

Installieren Sie es libnss-mdnsund stellen Sie sicher, dass ein Eintrag für MDNS vorhanden ist in /etc/nsswitch.conf:

hosts:          files mdns [NOTFOUND=return] dns

Sie können die MDNS-Auflösung wie folgt testen getent:

getent hosts b

verwandte Informationen