web-dev-qa-db-ja.com

ncコマンド:逆ホスト検索失敗:不明なホスト

ncは、VMで実行すると正常に機能します。

Connection to 10.0.0.10 22 port [tcp/ssh] succeeded!

しかし、Dockerコンテナ内で同じコマンドを実行すると、以下のUNKNOWNエラー/例外が発生します。

10.0.0.10: inverse Host lookup failed: Unknown Host 
(UNKNOWN) [10.0.0.10] 22 (ssh) open

以下は、私が使用しているncコマンドです。

nc -vz 10.0.0.10 22 -w 4
5
Rohith

「Inverse Host lookup failed」は、ncがどのホスト名10.0.0.10に対応するかを表示したかったが、できなかったことを意味します。

UNKNOWNは、ホスト名として出力されるものです。

これは、「調べましたが、何にも対応していないようです」とは異なります。これは、コンテナの外側で発生します。

完全に明示するために、ホストへの接続は成功しましたが、IPアドレスからの名前の検索は失敗しました。これは単なる警告メッセージであり、ハードエラーではありません。とにかく、ルックアップは完全にオプションであり、-nで無効にできます。

本当にこの警告を回避し、-nに切り替えたくない場合は、コンテナ内で動作するDNSを設定する必要があります。

7
tripleee

このエラーを使用してDNSルックアップを無視するため、リスナーとクライアントの両側に-nを追加してこのエラーを削除します。

8
siddharth

はい、notがdockerコンテナにSSHで接続されている場合、これは予期されています。

Connection to 10.0.0.10 22 port [tcp/ssh] succeeded!は、VMで見られます。なぜなら、VMとしてssh [email protected]およびポート22は、SSHのVMで使用されます。

ただし、Dockerコンテナ内にいる場合(docker runまたはdocker execまたはdocker attach)、 港 22notが使用されるため、ncからの次のエラーがdockerコンテナ内で予想されます。

10.0.0.10: inverse Host lookup failed: Unknown Host 
(UNKNOWN) [10.0.0.10] 22 (ssh) open

以下に、ポート80は、nc dockerコンテナー内でnginxを使用して使用されます。

$ Sudo docker run --name docker-nginx -d -p 80:80 nginx
$ Sudo docker exec -it docker-nginx /bin/bash
root@60ec582e90f4:/# apt-get -y update
root@60ec582e90f4:/# apt-get -y upgrade
root@60ec582e90f4:/# apt-get install -y net-tools
root@60ec582e90f4:/# apt-get install -y netcat   

# make sure that port 80 is used
root@60ec582e90f4:/# netstat -pan | grep 80
tcp     0   0 0.0.0.0:80   0.0.0.0:*   LISTEN  1/nginx: master pro 

# nc will work now inside the nginx container as port 80 is used inside the container

root@60ec582e90f4:/# nc -vz 127.0.0.1 80 -w 4
localhost [127.0.0.1] 80 (?) open

したがって、nc -vz a.b.c.d P -w 4コンテナ内で動作するには、ポートPをIPアドレスで使用する必要がありますa.b.c.dそのコンテナ内。

1
Vikram Hosakote