在一台虚拟机上运行的bacnet_scan.py没有检测到同一NAT网络中另一台虚拟机上的设备

时间:2016-07-26 18:56:53

标签: volttron

我有两台虚拟机在同一主机上运行,​​它们都在同一个NAT网络中。我使用实用程序脚本volttron / scripts / scalability-testing / virtual-drivers / bacnet.py在一个VM(比如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正在向另一个VM发送whois请求。在目标VM上运行tcpdump表明计算机正在接收whois请求,但假冒的bacnet设备未收到whois请求。 我做错了什么?

1 个答案:

答案 0 :(得分:0)

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

python bacnet.py bacnet_registry.csv 10.0.2.5/24

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