win10+Vmware+ubuntu18 mosquitto调试记录
记录一下在建立mqtt调试环境上遇到的问题及对策。
我的PC环境为,win10为办公环境,Vmware虚拟机安装ubuntu18,虚拟机主要用来进行代码编译,建立mosquitto server测试环境。
1. ubuntu 安装mosquitto
安装mosquitto网上很多教程,这里简单列举一下:
sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
这一步我遇到了gpg key timeout的错误,猜测应该是外网连线的问题,毕竟大陆现在访问github不太稳定,加上我已经将更新源设置为华为的镜像地址,所以跳过这步。
sudo apt-get update
sudo apt-get install mosquitto //安装mosquitto broker
sudo apt-get install mosquitto-clients //安装mosquitto client
在/etc/mosquitto/conf.d目录下,添加配置文件myconfig.conf 配置文件:
sudo gedit /etc/mosquitto/conf.d/myconfig.conf
粘入下面这些配置:
#添加监听端口(很重要,否则只能本机访问)
listener 1883
#-------------------------------------------
# 关闭匿名访问,客户端必须使用用户名
allow_anonymous false#指定 用户名-密码 文件
password_file /etc/mosquitto/pwfile.txt
#--------------------------------------------
添加账户及密码
sudo mosquitto_passwd -c /etc/mosquitto/pwfile.txt 用户名
回车后连续输入2次用户密码即可。
启动mosquitto
可以有以下两种方式,第一种是使用默认配置 /etc/mosquitto/mosquitto.conf,启动命令如下:
sudo service mosquitto start
另一种是指定使用哪一个配置文件,启动命令如下:
sudo mosquitto -c /etc/mosquitto/conf.d/myconfig.conf -v
查看mosquitto运行状态
sudo service mosquitto status
运行本机local测试:
订阅主题(新开一个终端1)
mosquitto_sub -h localhost -t "lai001/#" -u 用户名 -P 密码 -i “client1”
发布主题(新开一个终端2)
mosquitto_pub -h localhost -t "lai001/testTopic" -u 用户名 -P 密码 -m "Hello MQTT from mosquitto-clients"
因为我的ubuntu版本是18.0x的,这个版本上支持的最新的mosquitto版本为v1.4.5,支持到MQTT 3.1。
到这里虚拟机上的mosquitto server安装完毕了,此时遇到一个问题,本机localhost测试没有问题,可以正常pub/sub,但是外网的PC无法connect上ubuntu的mosquitto server。进一步测试发现,我的ubuntu虚拟机能够ping通外网的PC,但是外网的PC无法ping通虚拟机的IP。
这个问题的原因是因为主机WIN10的Vmware的网络连接设定问题导致:

我原来设定为NAT模式下的固定IP(方便win10下映射网络驱动盘),但实际发现NAT模式下,虚拟机的网络功能一切正常,就是没办法被其他设备(除了win10主机)ping通。
参考网上的教程将Vmware的网络连接设定为桥接模式后,修复了这个问题。
有几个地方记录一下:
需要将Vmware的权限设定为管理员权限启动,要不然看不到VMnet0,无法设定为桥接模式。

引用其他博主桥接模式下的win10主机及Vmware虚拟机与Ubuntu设定如下:
桥接模式下的网络设置
2.1 真实主机设置
使用桥接模式,首先要设置用于桥接的真实主机的网卡(一般是连接外网的网卡)。以win10为例,点击右下角网络和Internet设置-更改适配器选项,找到连接外网的网卡(我的就是下图中2位置啦),右键-属性,在WLAN属性中选中VMware Bridge Protocol,然后确定即可。

2.2 VMware虚拟交换机设置
设置好真实主机配置后,接下来需要设置VMware虚拟交换机的网络设置。

如上图,点击VMware上编辑-虚拟网络编辑器进入网络设置页面(下图)。你的界面有可能看不到VMnet0选项,按照上述方法解决。然后按下图,依次选择2处桥接模式,桥接位置3处选择你的真实主机连接外网的那块网卡,点击4处确定。

虚拟机设置
接下来就需要设置VMware上的虚拟主机设置,如下图所示,在虚拟机关闭的情况下,依次点击编辑虚拟机设置-网络适配器-启动时连接-桥接模式。点击右上角关闭按钮,设置完成。

接下来,为了方便我们在win10下开发,将ubuntu设定为固定IP的方式比较友好。
在ubuntu中设定网络,wired Settings。



使用固定IP上网,则需要选择手动模式,此时需要设置IP地址,子网掩码,默认网关等。先在真实主机(假定为windows系统)上使用ipconfig命令查看下真实主机的IP地址,子网掩码,默认网关等。下面3、4处子网掩码和网关填写与真实主机相同的参数,IP地址保证与真实主机的IP地址在同一网段即可。DNS可以选择自动或者手动,手动模式下也保持和真实主机的设置一致即可。

ubuntu系统文件设置
为了保证ubuntu虚拟机后续重新开机后保持这个固定IP,最后咱还需要设置一下系统文件。
首先,在虚拟机终端中,输入命令ifconfig,可以找到我们设置的希望用于和真实主机及外网通信的网卡名称,如下图,我的网卡名称是ens33,对应IP地址已经是我前面设置的静态IP了; 
修改/etc/netplan/01-network-manager-all.yaml文件:
sudo gedit /etc/netplan/01-network-manager-all.yaml
编辑为如下内容,将固定IP,gateway,NDS等信息填入:
network:
version: 2
renderer: NetworkManager
ethernets:
ens33: #网卡名,以ubuntu操作系统的网卡名称为准
dhcp4: no #ipv4关闭dhcp,用static模式
dhcp6: no #ip6关闭dhcp
addresses:
- 192.168.31.130/24 #本机IP地址
gateway4: 192.168.31.1 #vmware网关的的IP地址
nameservers: #DNS服务器
addresses: [114.114.114.114, 8.8.8.8, 1.1.1.1]
修改配置后先测试一下:
sudo netplan try
如果测试通过,再应用配置:
sudo netplan apply
重启网络服务:
sudo service network-manager restart
至此,网络环境已经全部设定好。重启Vmware与ubuntu后,分别测试 虚拟机与主机,虚拟机与外网机器互ping(同网段下),都可以正常ping通。
此时,在ubuntu启动mosquitto broker/mosquitto_pub/mosquitto_sub,在另外一台PC上使用MQTT tool,我使用的是MQTT explorer,连接ubuntu上的mosquitto broker,测试pub与sub主题,ubuntu server上的mosquitto_sub可以收到MQTT explorer pub的数据,MQTT explorer可以收到ubuntu server上的mosquitto_pub的数据,测试环境建立完成。
补充一下,桥接模式需要win10主机一定要有网络连接,才能远程访问虚拟机,这样当没有网络环境时,开发会很麻烦,所以在没有网络连接的情况下,需要使用Vmware的NAT模式来启动ubuntu,这样WIN10主机可以远程访问虚拟机了。
记录一下NAT模式的设定:
1.WIN10主机先设定“VMware Virtual Ethernet Adapter for VMnet8” 这张虚拟网卡的IP,将其设定为与ubuntu IP(192.168.31.130)为同一网段,我这里设置为 192.168.31.1,如下:
控制面板->网络和 Internet->网络和共享中心->更改适配器设置
VMware Virtual Ethernet Adapter for VMnet8 ->鼠标右键->属性
Internet协议版本4(TCP/IPv4)->鼠标右键->属性

2.Vmware设定如下:
设定“虚拟网络编辑器” -> VMnet8子网地址(与192.168.3.1同一网段)

编辑虚拟机设置 -> 选择NAT模式

启动虚拟机,此时WIN10主机与ubuntu在同一网段,就可以通过VMnet8这张虚拟网卡远程访问ubuntu虚拟机了。
相关文章:
win10+Vmware+ubuntu18 mosquitto调试记录
记录一下在建立mqtt调试环境上遇到的问题及对策。 我的PC环境为,win10为办公环境,Vmware虚拟机安装ubuntu18,虚拟机主要用来进行代码编译,建立mosquitto server测试环境。 1. ubuntu 安装mosquitto 安装mosquitto网上很多教程&…...
Java EE 突击 9 - Spring Boot 日志文件
Spring Boot 日志文件 学习目标一 . 日志有什么用1.1 日志格式说明 二 . 自定义日志打印2.1 得到日志对象2.2 使用日志对象提供的方法 , 输出自定义的日志内容2.3 日志的级别 三 . 日志持久化3.1 在配置文件里面设置日志名称3.2 设置日志的保存目录 四 . 日志级别的设置五 . 简…...
篇十六:命令模式:封装请求
篇十六:"命令模式:封装请求" 开始本篇文章之前先推荐一个好用的学习工具,AIRIght,借助于AI助手工具,学习事半功倍。欢迎访问:http://airight.fun/。 另外有2本不错的关于设计模式的资料&#x…...
Android 系统框架
启动流程 init 进程启动过程 Android系统启动流程 Zygote启动流程及源码分析 APP启动流程 init进程是Android用户空间第一个进程,主要做以下3件事情: 创建和挂载启动所需的文件目录。初始化和启动关键服务,守护关键服务。解析init.rc配…...
【Hystrix技术指南】(3)超时机制的原理和实现
[每日一句] 也许你度过了很糟糕的一天,但这并不代表你会因此度过糟糕的一生。 [背景介绍] 分布式系统的规模和复杂度不断增加,随着而来的是对分布式系统可用性的要求越来越高。在各种高可用设计模式中,【熔断、隔离、降级、限流】是经常被使…...
MySQL: Failed to Connect to MySQL at XXXX:3306 with user root
客户端连接MySQL服务器,报错: 解决方案: 没有让root用户远程登录,需要设置; 进入MySQL服务器,修改一下 # mysql -h localhost -uroot -P3306 -p12345678 mysql: [Warning] Using a password on the comm…...
《大型网站技术架构设计》第二篇 架构-性能
不同视角下的网站性能 1、用户 从用户角度,网站性能就是用户在浏览器上直观感受到的网站响应速度快还是慢。用户感受到的时间。 2、开发人员 开发人员关注的主要是应用程序本身及其相关子系统的性能,包括响应延迟、系统吞吐量、并发处理能力、系统稳定…...
谷歌推出AI模型机器人RT2 将文本和图像输出为机器人动作
去年年底,ChatGPT火遍全球,全世界都见识了大语言模型的强大力量。人们对大模型不再陌生,开始使用基于大模型的应用绘画、作图、搜索资料、设计剧情等,而妙用不止于此。谷歌推出了Robotics Transformer 2(RT2),这是一个…...
常见的服务器安全管理漏洞
常见的服务器安全管理漏洞 企业信息化技术的应用,以不可逆转。随着文件服务器、ERP管理软件等等在企业中生根发芽,应用服务器也逐渐在企业中普及起来。以前在企业中有一台应用服务器已经是了不起的事情,现在有两台、三台的,也不为…...
JavaScript高级:探索作用域链的神秘面纱
在 JavaScript 的编程世界中,作用域是一种控制变量可访问性和生命周期的机制。而作用域链则是闭包的关键所在,它使得函数在创建时捕获并保存了外部作用域的变量,为 JavaScript 增添了更多的魔力。本文将深入探讨作用域链的概念和作用…...
mysql数据库如何转移到oracle
mysql数据库转移到oracle 在研发过程中,可能会用到将表数据库中的表结构及数据迁移到另外一种数据库中, 比如说从mysql中迁移到oracle中, 常用的方法有好些,如下 1、使用powerdesigner,先连接mysql然后生成mysql的p…...
nnU-Net 终极指南
一、说明 了解最先进的nnU-Net以及如何将其应用于您自己的数据集所需的一切。使用nnU-Net,这是语义图像分割中非常强大的基线。在本指南中,您将: 对nnU-Net的主要贡献进行简要概述。了解如何将 nnU-Net 应用于您自己的数据集。 但是ÿ…...
ubuntu 安装 python
ubuntu 安装 python 初环境与设备查询是否安装安装python 本篇文章将介绍ubuntu 安装 python 初 希望能写一些简单的教程和案例分享给需要的人 环境与设备 系统:ubuntu 查询是否安装 因为系统也许会自带一个python,所以验证一下,如果自…...
【腾讯云 Cloud studio 实战训练营】云端 IDE 构建移动端H5
🐱 个人主页:不叫猫先生,公众号:前端舵手 🙋♂️ 作者简介:2022年度博客之星前端领域TOP 2,前端领域优质作者、阿里云专家博主,专注于前端各领域技术,共同学习共同进步…...
Kubernetes 之 Kubeadm 搭建
Kubeadm 搭建 一、搭建准备1.1 环境准备1.2 所有节点安装docker1.3 所有主机安装 cri-dockerd1.4 所有节点安装kubeadm,kubelet和kubectl1.5 部署K8S集群1.6 设定kubectl1.7 部署 Dashboard 一、搭建准备 master(2C/4G,cpu核心数要求大于2&a…...
Qt应用开发(基础篇)——堆栈窗口 QStackedWidget
一、前言 QStackedWidget继承于QFrame,QFrame继承于QWidget,是Qt常用的堆栈窗口部件。 框架类QFrame介绍 QStackedWidget堆栈窗口,根据下标切换,一次显示一个小部件,常用于应用界面切换、图片轮询播放等场景。 二、QSt…...
浅谈测试开发岗位
一、测试开发的概念与需求 测试开发,通常也被称为自动化测试,是一个涵盖了从测试设计、开发、执行和结果分析等一系列活动的职位。在软件开发的生命周期中,测试开发起着至关重要的作用,其主要目标是确保软件的质量和性能达到预期…...
典型移动APP安全风险提醒
研究背景 随着互联网和移动设备的发展,手机已成为人人都拥有的设备,各式各样的App更是丰富了人们的生活:从社交到出行、从网购到外卖,从办公到娱乐等,App已成为大众生活必需品。然而,App的流行使人们对App…...
多平台发布文章-项目总结
做个最近的AIGC内容创作技术要点的总结吧😼 流程图 时序图...
什么是IoC?什么是Spring IoC?什么是DI?
首先说明 IoC 是一种思想,IoC的全称是Inversion of Control,翻译成中文叫做“控制反转” 用人话来说,IoC的思想就是将一个对象对另一个对象的控制权交出去(不必关心交给谁),从而让对象之间的依赖关系降低&…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...
AI语音助手的Python实现
引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...
永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器
一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...
软件工程 期末复习
瀑布模型:计划 螺旋模型:风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合:模块内部功能紧密 模块之间依赖程度小 高内聚:指的是一个模块内部的功能应该紧密相关。换句话说,一个模块应当只实现单一的功能…...
