当前位置: 首页 > news >正文

嵌入式Web服务实战:OpenWRT+内网穿透实现物联网设备公网访问全攻略

前言:本文探讨基于OpenWRT系统构建嵌入式Web服务的实现方法,并融合NAT穿透技术达成跨公网的远程访问方案。该架构设计特别针对物联网设备本地服务向互联网的开放需求,具有显著的工程应用价值。

在OpenWRT核心服务组件中,uhttpd服务程序展现出独特的嵌入式优化特性。其设计采用分层式架构,通过精简通信协议栈有效控制资源消耗,典型工作状态下内存占用可维持在2MB阈值内。该服务与系统配置中心形成深度耦合机制,支持LuCI图形化配置的自动同步更新。功能实现上全面兼容HTTP/1.1标准协议,包含动态内容生成、加密通信协议及访问权限管理等核心功能模块。针对边缘计算设备的处理能力限制,开发团队对请求处理流程进行了多层级优化,确保在ARMv7架构下仍可实现每秒超过200次的并发响应性能。

目录

1. 检查uhttpd安装

2. 部署web站点

3. 安装cpolar内网穿透

4. 配置远程访问地址

5. 配置固定远程地址


1. 检查uhttpd安装

正常版本下,如果可以在浏览器访问OpenWRT web控制台界面,表示已经安装了uhttpd,同样,我们可以在根目录下面看到一个名称为`www`的目录,这样表示已经安装了uhttpd.

2. 部署web站点

既然uhttpd已经安装好了,我们就可以直接使用,我们只需要把我们的站点拷贝进去`www`文件夹下面即可。接下来主要介绍html网站部署,使用一个免费站点进行演示

进入www文件夹


```shellcd /www```

使用wget下载站点,ftp上传文件也可以


```shellwget https://www.cpolar.com/static/downloads/meditation-app-master.tar.gz```

下载好后解压

```shelltar xzf meditation-app-master.tar.gz```

解压后我们可以看到一个名称为`meditation-app-master`的文件夹,这里还可以看到一个名称为`cgi-bin`的文件夹,这个就是OpenWRT web 控制台界面位置.

此时我们在外部浏览器使用OpenWRT局域网ip地址加资源路径`/meditation-app-master/index.html`即可看到我们下载部署的站点。如果不加资源路径,默认会跳转过去OpenWRT web 界面,此时我们一个静态站点就已经配置好了。

下面我们安装cpolar内网穿透来实现在公网环境下也可以远程访问这个web站点。

3. 安装cpolar内网穿透

通过ssh连接操作OpenWRT, 下载公钥:

```shellwget -O cpolar-public.key http://OpenWRT.cpolar.com/releases/public.key```

下载完成后添加公钥

```shellopkg-key add cpolar-public.key```

添加cpolar的opkg仓库源

```shellecho "src/gz cpolar_packages http://OpenWRT.cpolar.com/releases/packages/$(. /etc/OpenWRT_release ; echo $DISTRIB_ARCH)"  >>  /etc/opkg/customfeeds.conf```

更新仓库

```shellopkg update```

然后开始安装cpolar,分别执行下面三个安装命令安装三个包:


```shellopkg install cpolar``````shellopkg install luci-app-cpolar``````shellopkg install luci-i18n-cpolar-zh-cn```

安装完成后,打开OpenWRT Web管理界⾯,我们可以看到有个service,点击后,即可看到我们cpolar内网穿透

点击进去后即可看到cpolar界面,接下来配置cpolar Authtoken

登录cpolar官网,如果没有注册账号,可以先注册账号,然后点击左侧的`验证`,查看自己的认证token,

> cpolar官网:[https://www.cpolar.com](https://www.cpolar.com)

之后将官网查看的token复制到OpenWRT cpolar服务界面的Auth Token里,设置后点击save保存

保存成功后点击界面里的 `打开Web-UI界面` ,即可看到cpolar web ui 界面

使用我们官网注册的账号登陆,登陆后即可对隧道进行管理,安装就完成啦

4. 配置远程访问地址

在cpolar web ui管理界面中,我们点击左侧仪表盘的`隧道管理`——`创建隧道`,uhttpd由于部署在了OpenWRT Web管理界面,设置了SSL,所以端口使用443,因此我们要来创建一条`http隧道`,指向`443端口`:

- 隧道名称:可自定义,注意不要重复

- 协议:http

- 本地地址:443

- 域名类型:选择随机域名

- 地区:选择China VIP

点击`创建`

创建成功后打开在线隧道列表,可以看到公网访问的地址,有两种公网地址访问方式,一种是http,一种是https

然后我们使用其中一种http方式公网地址,并且加上资源路径:`/meditation-app-master/index.html`在浏览器访问,即可看到我们的站点界面,这样这个远程访问就配置好了.

5. 配置固定远程地址

前面我们创建隧道时使用的是免费随机临时地址,它所生成的公网地址会在24小时内变化,为了方便长久稳定连接,我们可以固定访问地址,在cpolar中叫固定二级子域名,或者您也可以配置使用您自己的域名来访问。这里我们以cpolar子域名为例


 

> 需升级至基础套餐或以上才支持配置二级子域名

登录[cpolar官网后台](https://dashboard.cpolar.com/),点击左侧仪表盘的`预留`,找到`保留二级子域名`,为http隧道保留一个二级子域名。

- *地区:选择服务器地区*

- *名称:填写您想要保留的二级子域名(可自定义)*

- *描述:即备注,可自定义填写*

本例保留一个名称为`websitewrt`的二级子域名。子域名保留成功后,我们将子域名复制下来,接下来需要将其配置到隧道中去。

打开cpolar web ui管理界面。点击左侧仪表盘的`隧道管理`——`隧道列表`,找到需要配置二级子域名的隧道,点击右侧的`编辑`

修改隧道信息,将二级子域名配置到隧道中:

- *域名类型:改为选择`二级子域名`*

- *Sub Domain:填写我们刚刚所保留的二级子域名

修改完成后,点击`更新`

隧道更新成功后,点击左侧仪表盘的`状态`——`在线隧道列表`,可以看到隧道的公网地址,已经更新为二级子域名了.

然后我们使用其中一种http方式地址在浏览器访问,即可看到我们的站点界面,这样一个固定不变的远程访问个人站点配置好了

http://www.lqws.cn/news/443449.html

相关文章:

  • ‘conda‘ 不是内部或外部命令,也不是可运行的程序或批处理文件?
  • FPGA基础 -- Verilog 系统任务与系统函数
  • 嘉立创EDA学习笔记4
  • 集合的处理:JDK和Guava孰强孰弱?
  • C#建立与数据库连接(版本问题的解决方案)踩坑总结
  • docker 目录更改,必须做数据迁移才能启动
  • 输入url之后发生了什么
  • Python-循环结构解析
  • Windows 10开始菜单优化方案,如何实现Win7风格开始菜单的还原
  • oracle通过dblink 连接pg数据库
  • 使用 Prometheus 访问 TDengine ---
  • OpenCV——直方图与匹配
  • Postman 的 Jenkins 管理 - 手动构建
  • OpenCV指定pid和vid通过MSMF打开摄像头
  • Spring AOP @Before (前置通知): 在目标方法执行前做什么?
  • 智能家居HA篇 二、配置Home Assistant并实现外部访问
  • android 省市区联动选择
  • 计算机视觉阶段一:CV入门基础
  • Xsens动作捕捉技术用于研究机器人的运动控制、姿态调整以及人机交互
  • .NET 的配置系统
  • 【Mini-F5265-OB开发板试用测评】2、PWM驱动遥控车RX2接收解码带马达驱动控制IC
  • 华为OD机试_2025 B卷_构成正方形数量(Python,100分)(附详细解题思路)
  • 如何获取Java对象的大小
  • MQTT 消息队列传输协议(Message Queuing Telemetry Transport)
  • 【深度学习】生成对抗网络(GANs)深度解析:从理论到实践的革命性生成模型
  • 优化 Python 爬虫性能:异步爬取新浪财经大数据
  • 46道Jenkins高频题整理(附答案背诵版)
  • Jenkins通过Pipeline流水线方式编译Java项目
  • IP 地理库的使用指南:从基础应用到深度实践​
  • Redis 持久化机制详解:RDB、AOF 原理与面试最佳实践(AOF篇)