我们安装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权限。
这样,您就可以验证该进程是否正在侦听您期望的端口。