2016-07-26 26 views
0

我有兩個虛擬機在同一主機上運行,​​它們都在同一個NAT網絡中。我使用實用程序腳本volttron/scripts/scalability-testing/virtual-drivers/bacnet.py在一個虛擬機(稱爲VM1)上啓動了假bacnet設備。 設備啓動正常。現在來自同一主機和同一個NAT網絡上的另一臺VM(比如VM2)運行了scan_bacnet.py,但是我的虛擬設備在VM1上沒有列出。bacnet_scan.py在同一個NAT網絡中的另一個虛擬機上運行,​​沒有檢測到設備

我驗證了BACpypes.ini文件上的IP地址具有運行scan_bacnet.py腳本的主機的正確地址。我還更改了BACpypes.ini中的地址以包含子網掩碼(10.0.2.15/24),但仍然沒有運氣。

下面是我BACpypes.ini對文件上VM2

[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 

我能ping從一臺虛擬機遷移到另一臺虛擬機,並在源虛擬機上運行tcpdump,表明scan_bacnet.py正在向其他虛擬機發送whois請求。在目標VM上運行tcpdump會顯示機器正在接收whois請求,但假的bacnet設備未接收到whois請求。 我在做什麼錯?

回答

0

您需要在虛擬設備的命令行子網掩碼:

python bacnet.py bacnet_registry.csv 10.0.2.5/24 

你也應該檢查兩個VM防火牆設置。例如,CentOS默認阻止所有傳入流量。 (您仍然可以在輸出tcpdump中看到它。)對於BACnet,您需要爲所有流量(廣播和直接)打開udp端口47808。

+0

我正在運行centos虛擬機。我應該打開什麼港口? – chandrika

+0

好點。添加到我的答案。 –

+0

工作。將子網掩碼添加到bacnet.py和更新的IP表的命令行參數以允許47808上的UDP通信,現在我的設備在掃描中顯示 – chandrika

相關問題