it-swarm.com.de

nc Befehl: inverse Hostsuche fehlgeschlagen: unbekannter Host

nc funktioniert gut, wenn ich es auf einer VM ausführe.

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

Wenn ich jedoch denselben Befehl in meinem Docker-Container ausführen, wird der UNKNOWN-Fehler/die folgende Ausnahme angezeigt.

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

Unten ist der Befehl nc, den ich verwende:

nc -vz 10.0.0.10 22 -w 4
1
Rohith

"Inverse Host-Suche fehlgeschlagen" bedeutet einfach, dass nc den Host-Namen 10.0.0.10 drucken wollte, der jedoch nicht möglich war.

UNBEKANNT ist einfach das, was dann als Hostname ausgegeben wird.

Dies unterscheidet sich von "Ich habe nachgeschaut, aber es scheint nichts zu entsprechen", was außerhalb des Containers geschieht.

Wenn Sie diesen Fehler wirklich vermeiden möchten, müssen Sie ein funktionierendes DNS im Container einrichten.

3
tripleee

fügen Sie einfach -n auf beide Seiten des Listeners und des Clients ein, um diesen Fehler zu beheben, da er die DNS-Suche durch die Verwendung vernachlässigt.

5
siddharth

Ja, dies wird erwartet, wenn Sie nicht SSH in den Docker-Container eingegeben haben.

Connection to 10.0.0.10 22 port [tcp/ssh] succeeded! wird in VM angezeigt, da Sie SSH in VM als ssh [email protected] eingegeben haben und Port 22 in VM für SSH verwendet wird.

Wenn Sie sich jedoch in einem Docker-Container befinden (mit docker run oder docker exec oder docker attach), wird Port 22 nicht verwendet. Daher wird der folgende Fehler von nc im Docker-Container erwartet:

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

Führen Sie die folgenden Schritte aus, um erfolgreich zu testen, ob Port 80 mit nc in einem nginx-Docker-Container verwendet wird:

$ Sudo docker run --name docker-nginx -d -p 80:80 nginx
$ Sudo docker exec -it docker-nginx /bin/bash
[email protected]:/# apt-get -y update
[email protected]:/# apt-get -y upgrade
[email protected]:/# apt-get install -y net-tools
[email protected]:/# apt-get install -y netcat   

# make sure that port 80 is used
[email protected]:/# 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

[email protected]:/# nc -vz 127.0.0.1 80 -w 4
localhost [127.0.0.1] 80 (?) open

Damit nc -vz a.b.c.d P -w 4 in einem Container arbeiten kann, muss Port P für die IP-Adresse a.b.c.d in diesem Container verwendet werden.

1
Vikram Hosakote