未安装或启用防火墙:是什么阻止了特定端口?

未安装或启用防火墙:是什么阻止了特定端口?

我编写了一个小型 C 程序,该程序基于 libmodbus 库实现了 Modbus 主站和从站。该程序安装在 Ubuntu 16.04.6 LTS 系统 (A) 上,运行良好。

如果我启动程序的一个实例作为 Modbus 从站,我可以从另一个作为主站运行的实例(目标 = localhost:502)本地轮询它。但是,如果我尝试从同一网络上的另一个设备 (B) 轮询从站,我会收到“无法连接到 TCP 端口。端口已关闭。”

  • 我很确定端口没有关闭而是被阻止了,因为如果它被关闭了,我也不应该能够将它与本地主机一起使用,对吗?
  • 因此,问题是:是什么阻止了 Ubuntu 系统上的端口 502? ufw 甚至没有安装。安装它并允许连接到 tcp/502 并不能解决问题。
  • 网络路由器也不应该是问题的根源,因为可以从网络内部和外部在端口 502 上轮询另一个 Modbus 从站设备 (C)。

[编辑]

在此处输入图片描述

答案1

对于 OP 的情况,使用 进行调试netcat表明问题不在于网络,也不在于运行监听进程的 Ubuntu 系统。具体来说,可以从localhost同一网络中的另一台主机访问 Slave 进程,但无法从该主机访问。

因此,问题肯定出在编码上。事实证明,套接字绑定到了本地主机地址 (127.0.0.1),而不是 IP 地址。从该接口上的网络到达的数据包永远不会到达侦听进程。

相关内容