bacnet_scan.py 运行 在一个虚拟机上未检测到同一 NAT 网络中另一个虚拟机上的设备
bacnet_scan.py running on one VM not detecting device on another in the same NAT Network
我在同一个主机上有两个虚拟机 运行,它们都在同一个 NAT 网络中。我使用实用程序脚本 volttron/scripts/scalability-testing/virtual-drivers/bacnet.py 在一个 VM(比如 VM1)上启动了一个假的 bacnet 设备。
设备启动正常。现在从同一主机和同一 NAT 网络上的另一个虚拟机(比如 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 请求。
我做错了什么?
您需要在虚拟设备命令行中包含子网掩码:
python bacnet.py bacnet_registry.csv 10.0.2.5/24
您还应该检查两个虚拟机上的防火墙设置。例如,CentOS 默认阻止所有传入流量。 (您仍然会在输出 tcpdump 中看到它。)对于 BACnet,您需要为所有流量(广播和直接)打开 udp 端口 47808。
我在同一个主机上有两个虚拟机 运行,它们都在同一个 NAT 网络中。我使用实用程序脚本 volttron/scripts/scalability-testing/virtual-drivers/bacnet.py 在一个 VM(比如 VM1)上启动了一个假的 bacnet 设备。 设备启动正常。现在从同一主机和同一 NAT 网络上的另一个虚拟机(比如 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 请求。 我做错了什么?
您需要在虚拟设备命令行中包含子网掩码:
python bacnet.py bacnet_registry.csv 10.0.2.5/24
您还应该检查两个虚拟机上的防火墙设置。例如,CentOS 默认阻止所有传入流量。 (您仍然会在输出 tcpdump 中看到它。)对于 BACnet,您需要为所有流量(广播和直接)打开 udp 端口 47808。