为什么某些端口的访问不稳定

为什么某些端口的访问不稳定

我们安装netdata工具(它的操作系统性能工具)

我们注意到 netdata 安装失败

curl -sSL --connect-timeout 10 --retry 3 http://localhost:19999/netdata.conf

和:

我们注意到有时端口 19999 被阻止,有时我们可以访问

example when we have access

 telnet localhost 19999
Trying ::1...
Connected to localhost.
Escape character is '^]'.
CConnection closed by foreign host.

有时端口被阻塞

Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused

这种非常奇怪的行为可能是什么原因

注意 - 防火墙被禁用并停止,iptables 也是如此

答案1

在第一种情况下

$ telnet localhost 19999
Trying ::1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.

有一个进程在监听给定的端口;您连接到它,最终远程端终止连接。

在第二种情况下(在这里,我假设您指定了相同的端口,因为您没有明确说明):

$ telnet localhost 19999
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused

这里,Connection refused表示没有进程在监听指定的主机/端口。由于您使用了主机名 ,localhost并且该主机名同时映射到 IPv4 和 IPv6 地址,因此telnet尝试连接到这两个地址。最后,没有进程在给定端口上侦听主机(通过 IPv4 或 IPv6)。

您可以使用以下ss命令列出哪些进程正在侦听哪个端口:

# ss -nlpt
State    Recv-Q    Send-Q    Local Address:Port         Peer Address:Port
LISTEN   0         0           <address>:<port>                 0.0.0.0:*    users:(("<process-name>",pid=<process-id>,fd=<file-descriptor>))

选项:

  • -n不将地址转换为主机名
  • -l仅列出监听套接字。
  • -t仅列出 TCP 套接字
  • -p列出关联的进程信息。为此你需要root权限。

这样,您就可以验证该进程是否正在侦听您期望的端口。

相关内容