如何测试两台 Linux 主机之间特定 UDP 端口的网络连接

如何测试两台 Linux 主机之间特定 UDP 端口的网络连接

我正在寻找一种方法来测试两个 Linux 主机之间特定端口的网络连接。

举个例子:我正在通过端口 514 将系统日志事件从服务器 A 发送到服务器 B。但是,服务器 B 从未收到来自服务器 A 的事件。我可以确认服务器 A 正在发送它,并且服务器 B 上的端口 514 已打开。目前,我怀疑这些服务器之间的防火墙阻止了 514 连接。

在这种情况下,有没有什么工具或方法可以帮助验证防火墙是否打开了端口 514?

答案1

您可以做几件事。

首先,检查您认为正在运行并监听某些端口的服务是否确实在监听,为此,请使用 netstat:

netstat -plunt

除此之外,您还可以使用像 Wireshark 这样的数据包分析器或名为 tcpdump 的 Linux 内置工具。

要分析名为 eth0 的网络接口卡上的所有流量,请运行:

tcpdump -i eth0 

分析网卡 eth0、协议 udp 和端口 514 上的所有流量:

tcpdump -i eth0 -n udp 'port 514'

如果您怀疑其中一台机器上的防火墙存在问题,那么您可以通过发出以下命令列出该机器上的所有活动规则:

sudo iptables -S

您可以找到有关可以运行以帮助您解决问题的 iptables 命令的更多信息这里

我要采取的另一个故障排除步骤是从 syslog 发送方机器通过 telnet 连接到端口 514 上的 syslog 接收方机器:

telnet hostB:514

如果您的会话已打开,则意味着 hostA 可以通过给定端口访问 hostB。

答案2

您可以使用它traceroute来了解特定协议的数据包传输距离。以下是该命令的示例:

traceroute -n -T -p 514 2001:db8::1

参数含义如下:

  • -n禁用反向 DNS,这通常会使命令运行得更快。
  • -T使用 TCP SYN 数据包执行跟踪。
  • -p 514将数据包发送到端口 514
  • 2001:db8::1目标的 IP 地址。也可以使用主机名。

比较几个不同端口号的输出,找出一个端口号是否始终与其他端口号区别对待。

请注意,存在不同的版本traceroute。以上内容是使用 Ubuntu 16.04 上的软件包中的版本进行测试的traceroute。该版本也称为traceroute.db

相关内容