10 httpdns
作者:拓毅恒 | 最后修改:2026-04-14
一、httpdns 概述
- HTTPDNS:一种通过 HTTP/HTTPS 协议直接向 DNS 服务器发起查询请求的域名解析技术,能够有效绕过运营商 DNS 污染或劫持,提高网络访问的稳定性和安全性。
- 阿里 DNS:阿里巴巴提供的 HTTPDNS 服务,具有解析速度快、稳定性高的特点。
- 腾讯 DNS:腾讯云提供的 HTTPDNS 服务,覆盖面广,响应及时。
二、演示功能概述
本章节将演示如何使用 Air780EGH 来开启 HTTPDNS 功能,实现通过阿里 DNS 和腾讯 DNS 进行域名解析。
三、准备硬件环境
参考:Air780EGH 硬件环境清单,准备好硬件环境。
3.1 Air780EGH 核心板

四、准备软件环境
4.1 文章内容应用
在开始实践本示例之前,先筹备一下软件环境:
1. 烧录工具:Luatools 工具;
2. 内核固件:本demo开发测试时使用的固件为Air780EGH V2032 版本固件,本demo对固件版本没有什么特殊要求,所以你如果要测试本demo时,可以直接使用最新版本的内核固件;如果发现最新版本的内核固件测试有问题,可以使用我们开发本demo时使用的内核固件版本来对比测试;
3. 脚本文件:https://gitee.com/openLuat/LuatOS/tree/master/module/Air780EGH/demo/httpdns
4. LuatOS 运行所需要的 lib 文件:使用 Luatools 烧录时,勾选 添加默认 lib 选项,使用默认 lib 脚本文件。
准备好软件环境之后,接下来查看如何烧录项目文件到 780EGH 中,将本篇文章中演示使用的项目文件烧录到 Air780EGH 核心板中。
4.2 API 介绍
这里仅介绍本篇文档所使用的 API,详情请查看:API - httpdns
httpdns.ali(domain_name, opts)
通过阿里 DNS 解析域名
httpdns.tx(domain_name, opts)
通过腾讯 DNS 解析域名
五、代码演示
5.1 HTTPDNS 应用
httpdns = require "httpdns"
-- HTTPDNS查询任务
local function httpdnstask()
-- 如果当前时间点设置的默认网卡还没有连接成功,一直在这里循环等待
while not socket.adapter(socket.dft()) do
log.warn("httpdns", "wait IP_READY", socket.dft())
-- 在此处阻塞等待默认网卡连接成功的消息"IP_READY"
-- 或者等待1秒超时退出阻塞等待状态
sys.waitUntil("IP_READY", 1000)
end
-- 检测到了IP_READY消息
log.info("httpdns", "recv IP_READY", socket.dft())
log.info("已联网")
while true do
sys.wait(1000)
-- 通过阿里DNS获取结果
local ip = httpdns.ali("air32.cn")
log.info("httpdns", "air32.cn", ip)
-- 通过腾讯DNS获取结果
local ip = httpdns.tx("openluat.com")
log.info("httpdns", "openluat.com", ip)
end
end
-- 启动HTTPDNS任务
sys.taskInit(httpdnstask)
六、功能演示
6.1 HTTPDNS 功能演示
使用 Luatools 将代码烧录到 Air780EGH 核心板

烧录完毕后会等待网络连接成功

连接成功后,会开始通过阿里 DNS 和腾讯 DNS 来获取结果

七、 总结
至此,我们演示了使用 httpdns 进行域名解析的全过程