我有两台虚拟机在同一主机上运行,它们都在同一个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请求。 我做错了什么?
答案 0 :(得分:0)
您需要在虚拟设备命令行中包含子网掩码:
python bacnet.py bacnet_registry.csv 10.0.2.5/24
此外,您应该检查两个VM上的防火墙设置。例如,CentOS默认阻止所有传入流量。 (您仍将在输出tcpdump中看到它。)对于BACnet,您需要为所有流量打开udp端口47808(广播和直接)。