Mosquitto es un servidor intermediario de mensajes MQTT de código abierto. MQTT es un protocolo de mensajería ligero basado en publicación/suscripción. La instalación y uso de mosquitto es relativamente sencilla, y conviene realizar algunas pruebas.
introducción a los mosquitos
Características de Mosquito:
1. Ligero: Mosquitto es un servidor proxy MQTT liviano, su objetivo de diseño es proporcionar una entrega de mensajes eficiente, rápida y confiable, adecuada para aplicaciones de todos los tamaños.
2. Fácil de implementar: Mosquitto es muy fácil de instalar e implementar, y puede ejecutarse en múltiples plataformas, incluidas Linux, Windows, macOS, etc.
3. Seguridad: Mosquitto admite comunicación cifrada basada en TLS/SSL, que puede proteger la seguridad y confidencialidad de los mensajes. Al mismo tiempo, también admite autenticación basada en nombre de usuario y contraseña, y lista de control de acceso (ACL) para restringir el acceso.
4. Escalabilidad: Mosquitto admite múltiples conexiones de clientes y suscripciones de múltiples temas, lo que puede satisfacer las necesidades de las aplicaciones a gran escala.
Instalación bajo Ubuntu
Método 1: instalación del código fuente
descargar mosquito
Sitio web oficial: https://mosquitto.org/
Dirección de origen: https://mosquitto.org/files/source/mosquitto-2.0.9.tar.gz
La ventaja es que puede especificar la versión requerida arbitrariamente. Pero es un poco problemático, necesita compilarlo y usarlo usted mismo. Si necesita agregar un servicio, también debe configurarlo usted mismo.
cd /home/test
wget --no-check-certificate https://mosquitto.org/files/source/https://mosquitto.org/files/source/mosquitto-2.0.9.tar.gz
// 编译、安装
cd mosquitto-2.0.9
make
sudo make install
Método 2: Instalar directamente
La ventaja es que es simple y conveniente, pero usted no puede seleccionar libremente la versión, pero la versión no debe ser demasiado antigua. La versión predeterminada en Ubuntu 18 debe ser la versión 2.0 o superior.
sudo apt-get install mosquitto
Por defecto, arriba solo se instala el servicio mosquitto, sin las herramientas de cliente de prueba mosquitto_sub y mosquitto_pub. Si es necesario, puede instalar:
sudo apt-get install mosquitto-clients
Gestión De Servicios
service --status-all
Mostrará la lista completa de servicios en Ubuntu. Si el sistema es Ubuntu 18.04, Ubuntu 20.04 y Ubuntu 22.04 o superior, se recomienda utilizar la utilidad Systemd systemctl para iniciar, detener o reiniciar los servicios. Las versiones anteriores pueden usar el comando de servicio para iniciar/detener/reiniciar el servicio.
service
es un comando de administración de servicios más antiguo que se usa en las distribuciones de Linux compatibles con el sistema System V init. Puede iniciar, detener, reiniciar o consultar el estado de los servicios del sistema. Al usar sudo service
el comando, debe especificar el nombre del servicio, por ejemplo, sudo service apache2 stop
detendrá el servidor Apache. sudo systemctl
es un comando de administración de servicios más nuevo para distribuciones de Linux compatible con el sistema Systemd, como versiones recientes de Ubuntu, Fedora y CentOS. Proporciona más funcionalidad y flexibilidad.
De forma alternativa, los servicios se pueden iniciar, detener o reiniciar utilizando secuencias de comandos de inicio en el directorio /etc/init.d. Este directorio en realidad contiene varios scripts para diferentes servicios. Si usa:
/etc/init.d/mosquitto start
Desde que Ubuntu cambió a Systemd, los scripts de inicio están en desuso.
systemctl
Inicie el servicio de mosquitos:
sudo systemctl stop mosquitto
Detener el servicio de mosquitos:
sudo systemctl start mosquitto
Para reiniciar el servicio de mosquitos:
sudo systemctl restart mosquitto
Consulta el estado del servicio de mosquitos:
sudo systemctl status mosquitto
Guía para evitar pits
Después de una instalación y un inicio exitosos, descubrí que no se puede acceder con éxito a la red externa y que el firewall también ha liberado el puerto 1883, pero aún no puedo acceder al puerto 1883. ¿Por qué no puedo conectarme al servidor mosquitto en Linux?
La razón es que el servicio mosquitto en Ubuntu está en modo solo local de forma predeterminada.Cuando usa sudo service mosquitto start y luego sudo service mosquitto status, no puede ver en qué modo se está ejecutando el servidor actual. usas el comando mosquitto -v El siguiente fenómeno:
Hay una forma más fácil de solucionar estos problemas. Es para verificar qué puertos están abiertos en el sistema Linux y el uso de los puertos.
Use el comando netstat, como:
netstat -ntpl
127.0.0.1
Es una dirección de bucle invertido IPv4, también conocida como dirección de bucle invertido local. Apunta a la interfaz de red del host local, que se utiliza para acceder a sus propios servicios y aplicaciones en el host local. Solo se puede acceder localmente a los servicios que comienzan con dichas direcciones. 0.0.0.0
es una dirección comodín, que representa cualquier host. Cuando un servicio está vinculado a 0.0.0.0
, escuchará las conexiones entrantes en todas las interfaces de red disponibles, lo que significa que se puede acceder al servicio desde cualquier dirección. En Linux, :::
y ::1
son dos representaciones de la dirección de bucle invertido IPv6, que se utilizan para representar el host local.
Solución
Directamente modifica los archivos /etc/mosquitto
del directorio mosquitto.conf
, abre el puerto y la dirección que permite el acceso.
# 设置允许匿名连接,如果禁止匿名连接,则需要配置账号、密码连接
allow_anonymous true
# mqtt 协议配置,分为ipv4和ipv6两种,当前可以只配置启用一种
listener 1883 0.0.0.0
socket_domain ipv4
protocol mqtt
uso de prueba
suscríbete a las noticias
# 无密码
mosquitto_sub -t test1
# 有密码
mosquitto_sub -u yang -P abc123 -t test1
Hacer un anuncio
# 无密码
mosquitto_pub -t test1 -m "发布的内容"
# 有密码
mosquitto_pub -u yang -P abc123 -t test1 -m "发布的内容"
descarga del cliente mqtt
En Windows, la herramienta de cliente mqtt más utilizada es MQTTX.
Dirección de descarga de la herramienta:
https://github.com/emqx/MQTTX/releases/latest
configuración de contraseña
La instalación predeterminada de mosquitto no habilita contraseñas, es mejor habilitar la autenticación de contraseña para uso formal.
Configurar la contraseña de la cuenta de mosquitto:
# 使用-c 参数会导致清空密码文件,重新插入用户
mosquitto_passwd -c pwfile.example 用户名
# 不使用-c 表示追加用户,不影响旧用户
mosquitto_passwd pwfile.example 用户名
Después de la configuración anterior, el archivo de configuración de contraseña pwfile.example se generará en el directorio /etc/mosquitto/ de forma predeterminada en Linux. También puede especificar la ruta del archivo pw que se generará, utilizando el siguiente formulario:
mosquitto_passwd /etc/mosquitto/pwfile.example 用户名
修改/etc/mosquitto
Archivos en el directorio mosquitto.conf
con contraseña habilitada.
# 设置是否允许匿名连接,如果禁止匿名连接,则需要配置账号、密码连接
allow_anonymous true
# 密码文件路径,禁止匿名连接配置,允许匿名则不用配置
password_file /etc/mosquitto/pwfile.example
# mqtt 协议配置,分为ipv4和ipv6两种,当前可以只配置启用一种
listener 1883 0.0.0.0
socket_domain ipv4
protocol mqtt
# ipv6
listener 1883 ::
socket_domain ipv6
protocol mqtt
# webscoket 协议配置,如果有的话需要配置,分为ipv4和ipv6两种,当前可以只配置启用一种
listener 1884 0.0.0.0
protocol websockets
socket_domain ipv4
listener 1884 ::
protocol websockets
socket_domain ipv4
# 允许的最大连接数,-1表示没有限制
max_connections -1
Finalmente, reinicie el servicio de mosquitto para que la modificación del archivo de configuración tenga efecto.
sudo systemctl restart mosquitto
Otros corredores MQTT
Además de Mosquitto, hay otros servidores proxy MQTT gratuitos y de código abierto para elegir.
Incluyendo pero no limitado a lo siguiente:
1. Eclipse Mosquitto: Eclipse Mosquitto es una rama de Mosquitto, que proporciona más funciones y mejoras, como un mejor rendimiento, opciones de configuración más ricas, etc.
2. EMQX: EMQ X es un servidor proxy MQTT y MQTT-SN escalable y de alto rendimiento, que admite múltiples protocolos y funciones, como MQTT, MQTT-SN, CoAP, LwM2M, etc.
3. HiveMQ: HiveMQ es un servidor proxy MQTT enfocado en la confiabilidad y escalabilidad, que proporciona funciones como alta disponibilidad y equilibrio de carga.
4. RabbitMQ: RabbitMQ es un servidor intermediario de mensajes de propósito general que admite múltiples protocolos y modos de mensajería, incluidos AMQP, MQTT, etc.
5. Aedes: Aedes es un servidor intermediario de mensajes MQTT basado en JavaScript ligero.
Más introducción: https://www.cnblogs.com/zhaojinhui/p/16790989.html
Estos servidores proxy MQTT tienen sus propias características y escenarios aplicables, y puede elegir el adecuado según sus necesidades.
otros recursos
Linux construye un servidor MQTT (mosquitto) y lo usa
Linux construye un servidor MQTT (mosquitto) y lo usa
Verificación de seguridad de Baidu
https://wenku.csdn.net/answer/138aada39619ea890fc382855cc37e54
Construcción y configuración del servidor Mosquitto_Configuración Mosquitto_Fat Tao's Blog-CSDN Blog
Mosquitto Construcción y Configuración_mosquitto.conf_Quantum Physics Blog-CSDN Blog
Instale Mosquitto y abra Websockets en Linux
RabbitMQ: transmisión y mensajería flexibles y fáciles de usar — RabbitMQ
Cómo descargar e instalar RabbitMQ
Instalación e implementación de RabbitMQ: súper detallado ~
Instalación e implementación de RabbitMQ: súper detallado ~
Práctica de programación de guiones Bash Shell - UinIO.com Blog de tecnología electrónica
Inicio rápido de GNU Make a CMake - Blog de tecnología electrónica de UinIO.com
Nodejs crea rápidamente un servidor MQTT_aedes mqtt_qczxl520's Blog
EMQX Enterprise Edition: plataforma de acceso MQTT IoT de nivel empresarial