最小限の例
マシン A と B。B はドメイン名で mDNS を使用しb.local
、ポート 2222 で ssh サービスを設定します。A と B はファイアウォールをオンにしません。
マシンAの場合nginx.conf
:
stream {
upstream b-ssh {
server b.local:2222;
}
server {
listen 2222;
listen [::]:2222;
proxy_pass b-ssh;
}
}
nginx -t
マシン A でこの構成をテストしようとしたときに、エラーが発生しました:
[emerg] host not found in upstream "b.local:2222"
ただし、マシンAでは、使用はssh -p 2222 b.local
正常に動作します(-4
または-6
テストも行われています)
役に立つかもしれない情報
実際の例では、マシン A はすべてのファイアウォールを無効にした Windows 11 です。マシン B は、avahi-daemon mDNS サービスを使用するマシン A 内の WSL2 ubuntu 21.10 です。
マシン A 側ではnginx.conf
、HTTP プロキシ パスも設定しました。
http {
server {
listen 8929;
listen [::]:8929;
location / {
proxy_pass http://b.local:8929;
}
}
}
これはmDNSドメイン名を使用していてもうまく機能します。
mDNS ドメイン名をアップストリーム サーバーの実際の IP に置き換えると、SSH プロキシが機能します。
答え1
インストールしてlibnss-mdns
、次の場所に mdns のエントリがあることを確認します/etc/nsswitch.conf
:
hosts: files mdns [NOTFOUND=return] dns
mdns 解決をテストするには、次の操作を実行しますgetent
。
getent hosts b