Брандмауэр не установлен или не включен: что блокирует определенный порт?

Я написал небольшую программу на C, которая реализует Modbus Master и Slave на основе библиотеки libmodbus. Эта программа установлена ​​в системе Ubuntu 16.04.6 LTS (A) и работает отлично.

Если я запускаю один экземпляр моей программы как Modbus Slave, я могу опрашивать его локально с другого экземпляра, работающего как Master (target = localhost: 502). Однако, если я попытаюсь опросить ведомое устройство с другого устройства (B) в той же сети, я получу сообщение «Не удалось подключиться к порту TCP. Порт закрыт».

  • Я уверен, что порт не закрыт, но заблокирован, потому что если он будет закрыт, я не смогу использовать его и с localhost, верно?
  • Поэтому возникает вопрос: что блокирует порт 502 в системе Ubuntu? UFW даже не установлен. Установка и разрешение подключения к tcp / 502 не решает проблему.
  • Маршрутизатор сети также не должен быть источником проблемы, так как другое ведомое устройство Modbus (C) может опрашиваться на порте 502 изнутри и снаружи сети.

[РЕДАКТИРОВАТЬ]

enter image description here

0
задан 30 April 2019 в 14:40

1 ответ

В случае OP отладка с помощью netcat показала, что проблема не в сети или в системе Ubuntu, где выполнялся процесс прослушивания. В частности, ведомый процесс может быть получен из localhost, но не от другого хоста в той же сети.

Проблема, следовательно, должна была заключаться в кодировании. Оказалось, что сокет был привязан к локальному адресу (127.0.0.1) вместо IP-адреса. Пакеты, поступающие из сети через этот интерфейс, никогда не попадут в процесс прослушивания.

0
ответ дан 30 April 2019 в 14:40

Другие вопросы по тегам:

Похожие вопросы: