知识库

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

如果需要验证,尤其是在集群环境中,无论是因果集群还是高可用性,一个实例是否可以在给定端口与另一个实例通信,从而证明防火墙或 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,在按下回车/输入键后,您应该在第一个终端窗口中看到该文本。如果您在第一个终端窗口中看到该文本,则已成功证明/建立连接。

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

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 启动时会处于这种状态。