知识库

一种验证网络端口连通性的轻量级方法

如果需要验证,尤其在集群环境(无论是 因果集群 还是 高可用)中,某个实例是否能够在指定端口上与另一实例通信,从而判断防火墙或 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 启动后会满足此条件。

© . This site is unofficial and not affiliated with Neo4j, Inc.