这个 netcat 输出是什么意思?

Rau*_*l77 13 networking

当我发出 nc -v 命令时,我想 telnet 到我本地运行的 VM 中,该 VM 有一个在端口 2628 上运行的 dictd 服务,尽管我得到以下信息:

$ nc -v localhost 2628
nc: connectx to localhost port 2628 (tcp) failed: Connection refused
found 0 associations
found 1 connections:
     1: flags=82<CONNECTED,PREFERRED>
    outif lo0
    src 127.0.0.1 port 63929
    dst 127.0.0.1 port 2628
    rank info not available
    TCP aux info available

Connection to localhost port 2628 [tcp/dict] succeeded!
Run Code Online (Sandbox Code Playgroud)

为什么连接被拒绝,然后连接成功?这是什么意思,为什么当我这样做时它不接受我的连接:telnet localhost 2628

phe*_*mer 13

有几十个版本的 netcat 可用,但这可能是因为:

  1. 您有 2 个条目localhostin /etc/hosts。一个用于 IPv4,另一个用于 IPv6。
  2. 守护进程只监听一种协议(可能是 IPv4)。
  3. 客户端首先通过守护程序未侦听的协议进行连接,然后尝试使用该协议。

例如:

$ grep localhost /etc/hosts
127.0.0.1 localhost
::1 localhost

$ nc -4 -l -p 9000 -s 127.0.0.1     
nc: listening on 127.0.0.1 9000 ...


$ nc localhost 9000
nc: cannot connect to localhost (::1) 9000 [9000]: Connection refused
nc: localhost (127.0.0.1) 9000 [9000] open
nc: using stream socket
Run Code Online (Sandbox Code Playgroud)

  • 修复 3 个编号项目中的任何一个。1) 从 `/etc/hosts` 中删除条目之一。2) 让守护进程监听这两个协议。3) 强制客户端使用其他协议进行连接。 (2认同)