【问题标题】:How to connect to mosquitto broker installed on virtual machine hosted on azure?如何连接到安装在 azure 上托管的虚拟机上的 mosquitto 代理?
【发布时间】:2019-03-26 06:41:35
【问题描述】:

我已经在端口 1883 的虚拟机上安装了 mosquitto 代理。这个虚拟机托管在 azure 云上。为了访问这个代理,我通过添加入站规则打开了端口。我仍然无法发布到这个 mosquitto来自外部网络的代理。

我已添加入站规则,允许端口 1883 允许来自外部网络的访问

string ClientId = new Guid().ToString();
client = new MqttClient("104.211.219.200", 1883, false, null);
client.Connect(ClientId);
client.Publish("local", Encoding.UTF8.GetBytes("Message from local PC"), MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE, false);

【问题讨论】:

  • 你创建虚拟机的操作系统类型是什么?并且你在VM NSG和里面的VM防火墙中打开了端口吗?
  • 我的虚拟机在 windows 服务器中。通过打开端口,我的意思是我已经在 vm 中创建了端口 1883 的入站角色
  • 你在windows防火墙中也打开了端口吗?
  • 是的,我也在防火墙中打开了端口
  • 您确定与您的子网关联的 NSG 和 VM 的 NIC 是同一个并允许端口吗?

标签: azure-virtual-machine mosquitto


【解决方案1】:

根据您的描述,根据我的经验,我认为您的 mosquitto 现在不起作用是由于未为您的 VM 网络接口添加 NSG 规则以允许来自端口 1883 的入站请求。

这是我在 Azure Windows VM 上安装 mosquitto 服务器的步骤。希望对您有所帮助。

  1. 在 Azure 门户上,使用 Windows 2012 R2 Datacenter 创建 Windows VM。
  2. 在标签Configuration 中启用Just-in-time access 功能,然后下载RDP 文件以访问此VM。

  3. 我将 mosquitto 服务器安装文件(x64 发行版,来自https://mosquitto.org/download/)上传到 Windows VM,并尝试安装。

  4. 我遇到了一个关于缺少 VCRUNTIME140.dll 的问题,然后安装 VC++ 2015 发行版安装(它来自 https://www.microsoft.com/en-us/download/details.aspx?id=48145)来修复它。

  5. 然后,我在 mosquitto 路径上打开一个命令窗口并运行它。

  6. 将入站规则添加到Windows Firewall with Advanced Security。它允许来自 Windows 上端口 1883 的请求。

  7. 在 NSG 网络接口中添加入站规则,以允许来自 Azure VNET 上端口 1883 的请求。

  8. 我正在使用 MQTT 桌面客户端 MQTT.fx(它来自 https://www.hivemq.com/blog/seven-best-mqtt-client-tools/)来测试连接、发布和订阅测试消息。

【讨论】:

    猜你喜欢
    • 2016-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 2019-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多