我正在开发自己的IoT技术,并使用C/C++的ESP8266。我已经建立了一个程序,允许我切换一个继电器使用谷歌助理通过gbridge.io。我已经订阅它,使用MQTT到gbridge,它告诉它什么时候切换开关。不幸的是,我对处理与网络有关的事情非常陌生,所以我这可能是用词不对。它听1883年港口(我认为是正确的词)。我使用这种方法,因为我不想打开一个端口在我的家庭路由器。通过监听端口1883,我的路由器是否暴露或网络易受攻击?这段代码来自Adafruit MQTT库示例。
#include <ESP8266WiFi.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
/************************* WiFi Access Point *********************************/
const char* WLAN_SSID = "SSID";
const char* WLAN_PASS = "password";
/************************* Adafruit.io Setup *********************************/
#define AIO_SERVER "mqtt.gbridge.io"
#define AIO_SERVERPORT 1883 // use 8883 for SSL
#define AIO_USERNAME "gbridge-username"
#define AIO_KEY "mqqt password"
/************ Global State (you don't need to change this!) ******************/
// Create an ESP8266 WiFiClient class to connect to the MQTT server.
WiFiClient client;
// or... use WiFiFlientSecure for SSL
//WiFiClientSecure client;
// Setup the MQTT client class by passing in the WiFi client and MQTT server and login details.
Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
/****************************** Feeds ***************************************/
// Setup a feed called 'photocell' for publishing.
// Notice MQTT paths for AIO follow the form: <username>/feeds/<feedname>
Adafruit_MQTT_Publish onoffset = Adafruit_MQTT_Publish(&mqtt,"on off set link");
// Setup a feed called 'onoff' for subscribing to changes.
Adafruit_MQTT_Subscribe onoffbutton = Adafruit_MQTT_Subscribe(&mqtt,"on off link");
更新2020年8月: gbridge关闭了他们的服务器
发布于 2019-12-31 01:05:04
端口1883通常用于无安全的MQTT。这与您的路由器或网络易受攻击无关。它的意思是:
当您在SSL上运行MQTT时,SSL将验证该连接是使用属于您试图连接的域名的证书加密的。这两个端还将加密所有通信量,以便观察方无法窃听。
通常在端口8883上运行基于SSL的MQTT。
所有这些都不会损害您的网络或危及您的路由器。它只影响MQTT客户端和代理之间的通信。
您的MQTT客户端没有监听端口1883 --它正在连接到代理上的端口1883。代理是监听端口1883的人--这就是为什么您不必在路由器上打开端口的原因。
在上面引用的代码中,您需要使用WiFIClientSecure
而不是WiFiClient
。您还需要为所连接的服务器提供证书或指纹。但这与你问的问题不同;如果你需要帮助,那就属于另一篇文章。
https://stackoverflow.com/questions/59538144
复制相似问题