知识库

验证网络端口连接性的轻量级方法

如果有必要验证,特别是在集群环境(无论是因果集群还是高可用性)中一个实例是否能与另一个实例在特定端口上通信,并以此证明防火墙或 iptables 是否阻止了流量,您可以使用以下两种方法之一:

如果您安装了 Linux 命令 netcat

建立两个终端会话。

  • 在第一个终端会话中,从 Linux 命令行/提示符运行:

$ nc -l -p 5000

这将在主机上启动一个进程,监听端口 5000 上的流量。如果连接成功,您的终端窗口将前进到下一行,并简单地等待来自另一个 nc 命令的消息。

如果端口号已被另一个 Linux 进程占用,您将遇到以下错误消息:

nc: Address already in use
  • 在第二个终端会话中,从 Linux 命令行/提示符运行:

$ nc -v <hostname> 5000

将 <hostname> 替换为第一个终端会话的内部 IP 地址/主机名。此命令将尝试连接到 <hostname> 的端口 5000。如果连接成功,您的终端窗口将报告以下信息,并将焦点移至下一行:

Connection to <hostname> 5000 port [tcp/*] succeeded!

在此之后,如果您输入文本,例如 Hello,并在按下回车/Enter 后,您应该在第一个终端窗口中看到该文本。如果能在第一个终端窗口中看到该文本,则表示连接已成功建立/验证。

如果连接不成功,您可能会收到类似于以下的错误消息:

nc: getaddrinfo: Temporary failure in name resolution
nc: connection refused

如果未安装 netcat,您可以运行:

` echo > "/dev/tcp/<hostname/<port>") >/dev/null 2>&1 && echo "CAN CONNECT" || echo "CANNOT CONNECT"`

将 <hostname> 替换为机器的主机名,将 <port> 替换为您尝试连接的端口。例如:

` echo > "/dev/tcp/production.neo4j.com/5001") >/dev/null 2>&1 && echo "CAN CONNECT" || echo "CANNOT CONNECT"`

如果连接成功,您应该会看到 CAN CONNECT;如果连接不成功,您会看到 CANNOT CONNECT

上述方法需要 <hostname> 和 <port> 是开放的并处于 LISTEN(监听)状态。在 Neo4j 启动后,这通常是正常的。

© . All rights reserved.