1

我有两个虚拟机在同一主机上运行,​​它们都在同一个 NAT 网络中。我使用实用脚本 volttron/scripts/scalability-testing/virtual-drivers/bacnet.py 在一个虚拟机(比如 VM1)上启动了一个假的 bacnet 设备。设备启动良好。现在,我从同一主机和同一 NAT 网络上的另一个 VM(例如 VM2)运行了 scan_bacnet.py,但我在 VM1 上的假设备未列出。

我验证了 BACpypes.ini 文件上的 ip 地址具有运行 scan_bacnet.py 脚本的主机的正确地址。我还更改了 BACpypes.ini 中的地址以包含子网掩码 (10.0.2.15/24) 仍然没有运气。

以下是我在 VM2 上的 BACpypes.ini 文件的内容

[BACpypes]
objectName: Betelgeuse
address: 10.0.2.15/24
objectIdentifier: 599
maxApduLengthAccepted: 1024
segmentationSupported: segmentedBoth
vendorIdentifier: 15

这是我在 VM1 中运行的用于启动假 bacnet 设备的命令

python bacnet.py bacnet_registry.csv 10.0.2.5

我能够从一个 VM ping 到另一个 VM 并在源 VM 上运行 tcpdump 表明 scan_bacnet.py 正在将 whois 请求发送到另一个 VM。在目标 VM 上运行 tcpdump 表明机器正在接收 whois 请求,但假 bacnet 设备没有接收到 whois 请求。我究竟做错了什么?

4

1 回答 1

0

您需要在虚拟设备命令行中包含子网掩码:

python bacnet.py bacnet_registry.csv 10.0.2.5/24

您还应该检查两个虚拟机上的防火墙设置。例如,CentOS 默认阻止所有传入流量。(您仍然会在输出 tcpdump 中看到它。)对于 BACnet,您需要为所有流量(广播和直接)打开 udp 端口​​ 47808。

于 2016-07-26T19:51:12.670 回答