长春网站建设哪家专业,华为荣耀官网,帮他人做视频网站违法吗,寄生虫网站代做问题#xff1a;服务不能暴露公网
客户的主机不能连外网#xff0c;服务MQTT服务部署在内网。记做#xff1a;p1 (computer 1)堡垒机#xff08;跳板机#xff09;可以连外网#xff0c;内网IP 和 MQTT服务在同一个网段。记做#xff1a;p2 (computer 2)对他人而言服务不能暴露公网
客户的主机不能连外网服务MQTT服务部署在内网。记做p1 (computer 1)堡垒机跳板机可以连外网内网IP 和 MQTT服务在同一个网段。记做p2 (computer 2)对他人而言直接连 公网的 服务和端口即可 和 p1 通信。
1. 跳板机 安装Nginx
去官网下载Nginx配置 监听的端口可参考如下文档不看也行 https://blog.csdn.net/qq_41113081/article/details/120713419 就是简单的改下配置文件如下
include tcp.conf;events {worker_connections 1024;
}http {include mime.types;default_type application/octet-stream;#这个配置无用吧这是http的server_tokens off;}当前目录下 新建 tcp.conf server 192.168.30.192:7788; 配置p1有mqtt服务的主机 的 IP 和 端口因为 访问到这台主机p2的 都要转发给 它注意 p1 要开通端口我本地测试直接关闭防火墙即可 listen 7777; 本机对外暴露的端口7777。就是 别人访问 7777 端口即可跳转到 192.168.30.192:7788 启动Nginx 即可。
stream {upstream mqtttest {# 目标 redis server ip和hostserver 192.168.30.192:7788;}server {# 要监听的外部端口比如你的域名是www.baidu.com,那么你本地连接redis的时候host就填www.baidu.com端口8899listen 7777;proxy_pass mqtttest;}
}2. 安装 花生壳 测试 ngrok 好像用不了 tcp 内网穿透但花生壳可以。 下载好后实名认证添加自定义映射官网有教程 本机IP 就是设置 自己主机p2的IP端口设置为 7777 让 外网能访问到 自己的7777端口。 因为没有花钱外网的 域名和端口如下 注意点协议一定选 TCP因为mqtt底层依然是 TCP
6g8231567p.zicp.fun:5748192.168.30.36 本机p2的IP
7777 本机p2的端口开启 花生壳的自定义 映射。 3. 课外 mqtt服务端搭建
也可以自己搭建一个 mqtt服务器。使用软件为mosquitto参考文档。 https://blog.csdn.net/zlbdmm/article/details/125297796 修改配置文件 mosquitto.conf listener 7788allow_anonymous true 就不要密码了 在管理工具-服务中找到Mosquitto Broker启动mosquitto服务 使用 CMD窗口进行订阅 没用用户名密码去掉这些参数即可。-v 进行订阅 mosquitto_sub.exe -h 127.0.0.1 -p 7788 -u admin -P 123456 -v -t sensor 使用 CMD 窗口进行发布 -t进行发布 -m是消息内容 mosquitto_pub.exe -h 127.0.0.1 -p 7788 -u admin -P 123456 -t sensor -m “消息测试” 最后使用 MQTTX 进行测试 点击“New Connection”按钮则出现新建连接对话框根据MQTT服务器的信息输入对应的参数 如果想订阅一个主题则点击“New Subscription”按钮则出现新建订阅对话框 订阅上面的t sensor 即可。
4. MQTTX 进行测试 点击链接名称随便起 服务器地址为 mqtt:// 默认的6g8231567p.zicp.fun 就是上面 花生壳 对外访问的地址 端口为57482花生壳 提供的 点击链接链接成功后即可给 p1 主机发送 消息。 同理 添加了 订阅后即可收到 消息。使用 p1 cmd 窗口发送 mqtt消息。这个 依然能收到 内网的消息。
5. 总结 客户主机 p1 跳板机 p2 安装 花生壳安装 nginx 对外用户 访问流程 对外用户访问——花生壳——Nginx——客户主机Nginx 暴露 7777端口供花生壳 访问访问了 7777 端口Nginx 转发到 p1 的 IP 和 端口 实现了只需要给 对外用户一个花生壳 的 域名和端口 他 即可连接到 mqtt服务能接受 和 发送 消息。对外用户直接能 和 p1 进行通信。