mosquitto基本配置

mosquitto是一款开源的MQTT消息代理(服务器)软件,利用mosquitto,我们能很方便的搭建MQTT的Broker,用于各种物联网设备的通信。这里我记录一下我在使用mosquitto过程中的一些基本配置。

安装及基本配置

我使用的是Debian及Ubuntu系统,这两个系统默认源里面都提供mosquitto,安装的话很方便,一行命令就行:

apt install mosquitto

安装完之后,mosquitto的默认配置目录在/etc/mosquitto/,默认配置文件是/etc/mosquitto/mosquitto.conf

mosquitto默认运行在1883端口,如果有防火墙或者安全组的话,记得放行1883端口,不然客户端可能无法连接到上述安装的mosquitto提供的broker。

mosquitto基本认证及ALC配置

mosquitto提供基本的认证及ALC,如果不是有大量动态接入的设备,其实mosquitto默认提供的认证及权限控制功能就能满足基本的需求。

基本认证配置

mosquitto安装完之后,默认提供了一个命令用于创建认证文件,假如说认证文件名称设置为auth,相关命令如下。

创建认证文件及添加首个用户:

mosquitto_passwd -c auth admin

admin为首次需要添加的用户名,回车之后会要求输入密码。

再次添加用户:

mosquitto_passwd -b auth user password

user及password为实际需要添加的用户名及密码,添加完之后,auth文件会多出一行已用户名为开头的记录。

当然,如果是需要一个用户对应一个认证文件,每次使用-c参数生成新的认证文件也可以。

基本ALC配置

创建好了认证之后,我们可能还需要对每个账户的权限进行控制,毕竟有的时候为了数据安全,不能允许所有的设备能完全订阅整个broker上的所有topic。

创建一个新的文件,比如起名叫alc,上述两个账户的权限举例如下:

user admin
topic readwrite #

user user
topic /iot/user/+

这样就给admin赋予了所有topic的订阅及发布权限,而user只能在/iot/user/+这个通配符权限下面进行订阅及发布。

mosquitto配置文件修改

设置完成之后,修改mosquitto的配置文件,将上述创建好的认证及ALC功能写入配置文件,相关配置如下:

vim /etc/mosquitto/mosquitto.conf

#mosquitto.conf配置
allow_anonymous false #禁止匿名用户
password_file /etc/mosquitto/auth
acl_file /etc/mosquitto/alc.alc

命令行使用MQTT

如果需要在命令行使用MQTT的发布以及订阅功能,可以安装mosquitto-clients包,相关命令如下:

apt install mosquitto-clients

安装完成之后可以使用mosquitto_sub进行订阅,以及使用mosquitto_pub进行发布,相关命令举例如下:

//订阅
mosquitto_sub -h 127.0.0.1 -p 1883 -u admin -P 123 -t "#"

//发布
mosquitto_pub -h 127.0.0.1 -p 1883 -u admin -P 123 -t "/iot/user/pub/" -m "message_to_publish"

其中-h为broker的IP或者域名,-p为指定broker的端口,-u为用户名,-P为密码,-t为指定topic,-m是需要发布的消息。

更多配置

下面是一些可能会用上的配置:

//指定监听的端口及IP
listener 1883 0.0.0.0

//开启Websocket
listener 1884
protocol websockets

更多信息可通过man mosquitto查看。