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的思想就是将一个对象对另一个对象的控制权交出去(不必关心交给谁),从而让对象之间的依赖关系降低&…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
