nc命令:反向主机查找失败:未知主机

时间:2018-02-14 04:16:39

标签: unix netcat

当我在VM上执行它时,

nc工作正常。

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

3 个答案:

答案 0 :(得分:5)

只需在侦听器和客户端的两侧放置-n即可删除此错误,因为它会忽略使用它的DNS查找。

答案 1 :(得分:4)

"反向主机查找失败"只是意味着nc想要打印哪个主机名10.0.0.10对应,但不能。

UNKNOWN就是它作为主机名打印的内容。

这与#34不同;我查了一下,但它似乎与任何东西都没有对应"这就是容器外发生的事情。

如果您确实想避免此错误,则需要在容器内设置工作DNS。

答案 2 :(得分:1)

是的,如果你有 SSH进入docker容器,这是预期的。

在VM中可以看到

Connection to 10.0.0.10 22 port [tcp/ssh] succeeded!,因为您已将SSH作为ssh username@10.0.0.10进入VM,并且在VM中使用端口22进行SSH。

但是,当您在Docker容器内时(使用docker rundocker execdocker attach),端口22 ,因此预期来自nc的以下错误在docker容器中:

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

以下是在80泊坞窗容器内使用nc成功测试端口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在容器内工作,必须在该容器内的IP地址P上使用端口a.b.c.d