我将一个azure IoT Edge设备设置为vmware上的ubuntu linux虚拟机。它已连接到我的IoT集线器,没有任何问题。我正在尝试注册一个叶设备(raspberry pi -我已经成功地将它直接连接到IoT集线器-我已经从集线器中删除了该设备)。边缘设备设置为透明网关。当我尝试通过Edge注册设备时,连接被拒绝。边缘设备上的iptables被设置为将MQTT转发到位于azure-iot-edge docker网络上的edgeHub容器。这包含在python sdk的设备注册示例中。我得到的确切错误是
MQTTTransportStage: _on_mqtt_connection_failure called: Connection Refused: not authorised.
MQTTTransportStage(ConnectOperation): completing with error Connection Refused: not authorised.
SerializeConnectOpsStage(ConnectOperation): op failed. Unblocking queue with error: Connection Refused: not authorised.
EnsureConnectionStage(MQTTSubscribeOperation): Connection failed. Completing with failure because of connection failure: Connection Refused: not authorised.
EnsureConnectionStage(MQTTSubscribeOperation): completing with error Connection Refused: not authorised.
ProvisioningMQTTConverterStage(EnableFeatureOperation): completing with error Connection Refused: not authorised.
MQTTTransportStage: _on_mqtt_disconnect called: The connection was refused.
Unhandled exception in background thread
MQTTTransportStage: disconnection was unexpected
This may cause the background thread to abort and may result in system instability.
Exception caught in background thread. Unable to handle.
azure.iot.device.common.transport_exceptions.ConnectionFailedError: The connection was refused.看起来转发没有发生。这是我的iptables
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy DROP)
target prot opt source destination
DOCKER-USER all -- anywhere anywhere
DOCKER-ISOLATION-STAGE-1 all -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
DOCKER all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
DOCKER all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain DOCKER (2 references)
target prot opt source destination
ACCEPT tcp -- anywhere 172.18.0.2 tcp dpt:8883
ACCEPT tcp -- anywhere 172.18.0.2 tcp dpt:amqps
ACCEPT tcp -- anywhere 172.18.0.2 tcp dpt:https
Chain DOCKER-ISOLATION-STAGE-1 (1 references)
target prot opt source destination
DOCKER-ISOLATION-STAGE-2 all -- anywhere anywhere
DOCKER-ISOLATION-STAGE-2 all -- anywhere anywhere
RETURN all -- anywhere anywhere
Chain DOCKER-ISOLATION-STAGE-2 (2 references)
target prot opt source destination
DROP all -- anywhere anywhere
DROP all -- anywhere anywhere
RETURN all -- anywhere anywhere
Chain DOCKER-USER (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere发布于 2019-10-29 00:35:07
我的建议是,在IoT集线器的设备设置中,确保您的IoTEdge设备和叶设备之间存在关系。必须将IoT边缘设备设置为叶设备的父设备:

使用DeviceClient时,您的叶设备必须指定GatewayHostName,并且必须是您的边缘设备,即在IoT集线器中设置为父设备。如果没有这一点,你将得到连接被拒绝的错误。
https://stackoverflow.com/questions/58593772
复制相似问题