跳转至

07 httpdns

作者:拓毅恒 | 最后修改:2026-07-22

一、httpdns 概述

  • HTTPDNS:一种通过 HTTP/HTTPS 协议直接向 DNS 服务器发起查询请求的域名解析技术,能够有效绕过运营商 DNS 污染或劫持,提高网络访问的稳定性和安全性。
  • 阿里 DNS:阿里巴巴提供的 HTTPDNS 服务,具有解析速度快、稳定性高的特点。
  • 腾讯 DNS:腾讯云提供的 HTTPDNS 服务,覆盖面广,响应及时。

二、演示功能概述

本章节将演示如何使用 Air780EGH 来开启 HTTPDNS 功能,实现通过阿里 DNS 和腾讯 DNS 进行域名解析。

三、准备硬件环境

1、Air8201H 开发板一块 + 可上网的 sim 卡一张 +4g 天线一根;

2、TYPE-C USB 数据线一根;

TYPE-C USB 数据线直接插到板子的 TYPE-C USB 座子,另外一端连接电脑 USB 口;

四、准备软件环境

4.1 文章内容应用

在开始实践本示例之前,先筹备一下软件环境:

1.烧录工具: Luatools 工具

2.内核固件:Air8201H固件(基于Air780EHM)

3.LuatOS 需要的脚本和资源文件

脚本和资源文件:https://gitee.com/openLuat/LuatOS/tree/master/module/Air8201/demo/httpdns

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 将代码烧录到 Air8201G板子

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

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

七、 总结

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

AI问答/AI搜索