MQTT相关实验

第一节:Mosquitto 相关实验
第二节:域名解析和内网穿透实验
第三节:OneNET 相关实验

Gitee仓库地址: https://gitee.com/zhj0125/MQTT
Github仓库地址: https://github.com/ZHJ0125/MQTT
此仓库代码及文档仅供学习交流使用
Copyright © 2021 ZhangHoujin

域名解析和内网穿透实验

1. 域名解析

由于域名解析的过程需要事先准备域名和云服务器(需要购买),带大家一起操作不太方便,所以下面只给大家讲解一下域名解析的操作过程。

  • 域名:由一串用点分隔的字符组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位,一个域名的目的是便于记忆和沟通的一组服务器的地址。(如:zhj0125.com)
  • 云服务器:是一种处理能力可弹性伸缩的计算服务器,可以帮助构建更加安全稳定的应用,降低开发运维程度和成体成本,让开发者更专注于核心业务创新。(一台一直开机的服务器,会提供公网IP地址)
  • DNS:域名解析系统(Domain Name System),能够通过域名定位到指定的IP地址

下面以阿里云平台为例,介绍一下域名解析:

在阿里云控制台域名列表中,可以看到自己的域名

在操作列表中,选择 解析,进入域名解析页面。

在该页面可以看到分配的DNS服务器、以及各条解析记录

点击 添加记录 ,可以添加一条解析记录

其中记录类型分为A记录、CNAME记录、AAAA记录、MX记录等等

  • A记录:将域名指向一个IPv4地址
  • CNAME记录:将域名指向另外一个域名
  • AAAA记录: 将域名指向一个IPv6地址
  • MX记录:将域名指向邮件服务器地址

主机记录就是域名前缀,常见用法有:

  • www:解析后的域名为 www.aliyun.com
  • @:直接解析主域名 aliyun.com
  • *:泛解析,匹配其他所有域名 *.aliyun.com
  • mail:将域名解析为mail.aliyun.com,通常用于解析邮箱服务器
  • 二级域名:如:abc.aliyun.com,填写abc
  • 手机网站:如:m.aliyun.com,填写m
  • 显性URL:不支持泛解析(泛解析:将所有子域名解析到同一地址

记录值需要根据记录类型,填写云服务器IP地址或者需要指向的另一个域名地址等等

forever305.cn 域名为例,在域名域名解析页面中,可以看到

域名地址 解析类型 被解析到的地址
forever305.cn A记录 47.95.13.239 服务器
www.forever305.cn A记录 47.95.13.239 服务器
zhj.forever305.cn CNAME记录 Coding Pages 网页服务

也就是说,如果在浏览器中输入forever305.cn,DNS就会浏览器地址定位到IP为47.95.13.239的服务器的网络端口(默认80端口),实现域名解析。

在命令行中输入以下ping指令,测试域名指向的地址

ping forever305.cn

同样的方法,可以测试 www.forever305.cnzhj.forever305.cn

2. 内网穿透

  • 内网地址:局域网中设备的IP地址,用于定位局域网中的设备,如 192.168.1.102
  • 公网地址:公网服务器所对应的IP地址,用于访问在互联网中的设备,如 47.95.13.239

树莓派应用LNMP、BOA 实验中,我们已经在树莓派上搭建了web服务。但是这样的服务只能在局域网中被访问到,不在同一个局域网中的设备无法访问树莓派的web服务。

为了解决这样的问题,我们可以使用 内网穿透 方式,将局域网web服务对应的端口,映射到公网地址对应的端口。使用内网穿透后,当我们访问公网对应的网址,就相当于访问了树莓派的web端口,实现在公网上对树莓派的访问。

2.1 内网穿透工具选择

常见的内网穿透服务有 WeNAT、花生壳、NATAPP、Ngrok 等等

本次使用花生壳服务,点击查看 官网教程

由于花生壳免费版本仅支持TCP、UDP协议,只能实现SSH等简单方式的内网穿透,不符合本次实验要求,所以改用NATAPP进行内网穿透实验。

NATAPP是基于Ngrok的反向代理服务,免费的版本提供了HTTP、TCP、UDP全隧道穿透功能,提供代理服务端和公网域名,并且服务在国内,方便大家使用。可以满足本次实验要求,实现将树莓派搭建的web服务转发到公网。

2.2 隧道配置

(1)注册和选择隧道

在NATAPP官网右上角,使用手机号注册。注册成功后登陆进去,在左侧导航栏中找到 我的隧道 -> 购买隧道,选择 免费隧道 的版本

填写隧道基本信息

  • 隧道名称:随便填写
  • 隧道协议:选择 Web
  • 本地端口:80(填写树莓派Web服务端口)

填写完成后,点击免费购买

(2)隧道配置

购买完成后,点击 我的隧道,可以看到刚刚创建的隧道信息。点击该隧道右侧的 配置 按钮,进行详细配置。

详细配置页面中,最主要的几个配置已用红框标出,如下图所示:

  • authtoken:这是验证信息,一会用到
  • 本地地址:是指局域网中需要被映射的内网地址,因为我们在树莓派本地搭建NATAPP客户端,所以这里只需填写 127.0.0.1 这个本机地址即可。
  • 本地端口:是指局域网中需要被映射的内网地址的端口,因为我们搭建的服务器默认端口是80端口,所以这里填写80即可。
  • 本地Web管理地址:一会我们安装的NATAPP客户端是一个命令行界面,如果开启了这个管理地址,就会在这个管理地址启动一个图形界面,方便用户管理。这里我们填写 5000

填写完成后,点击下面的 修改 按钮保存配置。

2.3 客户端配置

在NATAPP页面的右上标题栏找到 客户端下载,右键点击 Linux/ARM 32位 的按钮,选择 链接另存为,选择文件保存路径。

需要注意下载的位置,默认应该是 /home/pi/Download 目录下

新建一个文件夹,把下载的NATAPP客户端文件移动到这个文件夹中。

mkdir NATAPP            # 创建NATAPP文件夹
mv natapp NATAPP/       # 将natapp客户端文件移动到NATAPP文件夹中
cd NATAPP/              # 切换当前目录到NATAPP文件夹

客户端启动之前,需要编写配置文件。在NATAPP文件夹内,创建一个名为 config.ini 的文件,向其中写入以下内容:

#将本文件放置于natapp同级目录 程序将读取 [default] 段
#在命令行参数模式如 natapp -authtoken=xxx 等相同参数将会覆盖掉此配置
#命令行参数 -config= 可以指定任意config.ini文件
[default]
authtoken=13c18e48fc1c7470      #对应一条隧道的authtoken
clienttoken=                    #对应客户端的clienttoken,将会忽略authtoken,若无请留空,
log=none                        #log 日志文件,可指定本地文件, none=不做记录,stdout=直接屏幕输出 ,默认为none
loglevel=ERROR                  #日志等级 DEBUG, INFO, WARNING, ERROR 默认为 DEBUG
http_proxy=                     #代理设置 如 http://10.123.10.10:3128 非代理上网用户请务必留空

该文件是官方给的配置文件,详见使用本地配置文件config.ini

文件内容已经写得很清楚了,其中需要改的只有一个 authtoken,将 13c18e48fc1c7470 改成你自己的authtoken。修改完成后,保存该文件,然后在终端中执行以下代码:

sudo chmod +x natapp        # 为客户端程序添加执行权限
./natapp                    # 执行客户端程序

执行成功后,显示如下界面:

可以看到,NATAPP服务已经将我本地的127.0.0.1:80本地地址映射到了http://2zt6r7.natappfree.cc公网地址。

现在我已经在本地搭建了LAMP服务,打开浏览器输入127.0.0.1:80,如下图所示:

这是本地Apache服务的默认页面,我现在去访问http://2zt6r7.natappfree.cc这个公网地址。大家需要输入你自己的公网地址。

可以看到,公网与树莓派本地显示的内容是一样的,这样说明内网穿透功能已经实现了。

在浏览器输入http://127.0.0.1:5000/可以进入管理页面,看到网页的请求信息。


End

域名解析和内网穿透实验相关推荐

  1. 群晖IPv6/ddns-go/域名解析设置内网穿透方案

    前言 群晖的内网穿透有很多方案,外网IPv4(这个现在很难搞到了),中间服务器搭建Tunnel隧道,frp等方案(网速慢,流量限制,需另购服务器),第三方服务花生壳等(按量付费,速度问题). 本篇介绍 ...

  2. 4G模块 | 基于4G Cat.1的内网穿透实践

    1024G 嵌入式资源大放送!包括但不限于C/C++.单片机.Linux等.关注微信公众号[嵌入式大杂烩],回复1024,即可免费获取! 上一篇分享了:<小熊派4G开发板初体验>,对小熊派 ...

  3. 手把手教你内网穿透(Windows环境)

    内网穿透原理知识 一.传统NAT穿透 传统的NAT技术是通过将专用的网络地址(如企业内部网Internet)转换为公用地址(如互联网Internet),从而对外隐藏了内部管理的IP地址.这样,通过在内 ...

  4. 利用内网穿透实现无固定IP调试支付回调

    在家(使用NAT网)开发项目时,难免会涉及到第三方外部接口回调(如:支付回调.微信小程序登录),需要固定IP或域名解析,内网穿透是个不错的选择.常见的内网穿透工具有 向日葵.natapp.网云穿 等. ...

  5. 在校外如何安全访问校园内网资源?快解析内网穿透

    现如今很多高校选择利用信息化手段实施网络教学,通过在线直播课堂.网络点播教学.在线辅导答疑等形式丰富教学形式,使学生学习时间更为自由.便利.但很多时候以用校园内网为前提,在校外如何安全访问校园内网资源 ...

  6. NAT-DDNS内网穿透技术,解决动态域名解析难题

    进行 NAT 穿透,是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机.对于穿透类型,一般分为两大类,一是基础NAT,另一个是NAPT,大家可能并不怎么了 ...

  7. 指南:内网穿透与DDNS动态域名解析区别,一篇看懂

    外网访问的两种方式 目前局域网环境中主流的外网访问内网分DDNS和内网穿透两种方式,以下将分别介绍: 一.DDNS服务(动态域名解析) 外网访问内网设备的基础是通过IP来通讯,而且运营商提供的公网IP ...

  8. 使用nps搭建内网穿透并配置泛域名解析

    使用nps搭建内网穿透并配置泛域名解析 前言 1. 准备工作 2. 服务器端搭建nps并配置 2.1 配置nps配置文件 2.2 docker安装nps 2.3 web端配置nps并使用 3. 客户端 ...

  9. Frp 内网穿透服务器在渗透中的应用

    内容 实战-在内网发布服务使之可在公网访问 使用 frp 搭建内网穿透服务器 实战-kali 配置 MSF 接收来自公网的 shell 实战-跨网段获取内网 shell 实战-内网穿透-二级代理 实战 ...

最新文章

  1. spring cloud服务发现注解之@EnableDiscoveryClient与@EnableEurekaClient
  2. 手机项目,html抬头,HTMLCSS学习笔记(二十)-- 移动端项目准备工作
  3. gmod的css模块放哪,gmod模式怎么更换?gmod模块安装步骤教程
  4. system.gc会立即执行垃圾回收吗_JVM基础到实战03-垃圾回收概念
  5. xpath 取标签下所有文字内容_xpath提取目录下所有标签内的内容,递归 //text()...
  6. 读取配置文件工程src目录下配置文件封装,如sms_format.properties
  7. 设计模式--代理模式--Java实现
  8. 【java学习之路】(数据结构篇)002.栈和队列
  9. elf文件格式_Android so(ELF) 文件解析
  10. centos 7 下安装haproxy
  11. I2C(smbus、pmbus)和 SPI协议
  12. 使用PaddlePaddle实现车牌识别
  13. 为什么要制定项目计划?
  14. 如何写introduction
  15. mysql to sqlserver_mysql to sqlserver
  16. 如何招聘:永远不要自负的人
  17. 有趣的java代码_求一些有趣的java小程序?
  18. 如何学习一门编程语言
  19. html中怎么把h标签左移,基础标签--h、p、a、hr、br、img、base
  20. 1350:面朝大海 春暖花开 [ 基础版 ]

热门文章

  1. Nginx反向代理负载均衡的容器化部署
  2. PCA Whitening ZCA Whitening
  3. 【Axure高保真原型】文字模板——删除线
  4. CSS 背景鼠标滑过,提示文字
  5. Prometheus如何集成免费电话和短信告警
  6. Matlab通过串口与下位机通讯
  7. 在微信公众号中如何添加【自定义菜单】,原创图文教程
  8. 针对WiFi图标消失问题解决方法
  9. 上班时间做“副业”被抓,程序员惨遭解雇,还要退还所有工资
  10. 期末Django项目实训报告