microdns

基于micropython的dns服务器。DNS Server Based on Micropython.

0.0.1 iw0-wth Updated At: 2026-03-27
Install Package
Local Install
mpremote mip install https://upypi.net/pkgs/microdns/0.0.1
Remote Install
mip.install("https://upypi.net/pkgs/microdns/0.0.1")
Version Selection
README

ESP32 MicroPython DNS服务器

基于micropython的dns服务器。 DNS Server Based on Micropython.

功能特性

  • AP模式WiFi热点: 创建名为"ESP32_DNS_Server"的WiFi网络
  • DNS服务器: 监听端口53,处理DNS查询请求
  • Web管理界面: 提供简单的Web界面查看服务器状态
  • 域名解析: 将所有域名解析到ESP32的IP地址(192.168.4.1)
  • 通配符支持: 支持*.local等通配符域名匹配

文件说明

  • main_with_web.py: 包含Web服务器的完整版本
  • microdns.py: DNS服务器核心模块
  • web_server.py: Web服务器模块
  • dns_list.py: DNS列表
  • README.md: 项目说明文档

使用方法

1. 上传文件到ESP32

将所有文件上传到ESP32的根目录。

2. 启动服务器

exec(open('main_with_web.py').read())

3. 连接WiFi网络

  • SSID: ESP32_DNS_Server
  • 密码: 12345678
  • IP地址: 192.168.4.1

4. 配置DNS

将设备的DNS服务器地址设置为:192.168.4.1

5. 访问Web界面

在浏览器中访问:http://www.example.com

DNS记录配置

dns_list.py中可以修改DNS记录:

self.dns_records = {
    'example.com': '192.168.4.1',
    'www.example.com': '192.168.4.1',
    'test.com': '192.168.4.1',
    '*.local': '192.168.4.1',  # 通配符匹配
}

网络配置

main.py中可以修改AP配置:

ap.config(essid='ESP32_DNS_Server', password='12345678')
ap.ifconfig(('192.168.4.1', '255.255.255.0', '192.168.4.1', '8.8.8.8'))

测试方法

1. 使用nslookup测试

nslookup example.com 192.168.4.1

2. 使用ping测试

ping example.com

3. 使用dig测试

dig @192.168.4.1 example.com

DNS协议支持

  • 查询类型: A记录 (IPv4地址)
  • 端口: 53 (标准DNS端口)
  • 协议: UDP
  • TTL: 300秒

未来可能的改进

  1. DNS转发: 添加向上游DNS服务器转发查询的功能
  2. 缓存机制: 实现DNS查询缓存
  3. 更多记录类型: 支持AAAA、CNAME等记录类型
  4. 安全功能: 添加DNS查询过滤和黑名单

许可证

本项目采用MIT许可证。

贡献

欢迎提交Issue和Pull Request来改进这个项目。

File List
Name Size Type
.gitignore 2.0KB File
LICENSE 1.0KB File
README.md 2.3KB Doc
dns_list.py 259B Python
main_with_web.py 1.7KB Python
microdns.py 9.4KB Python
package.json 346B Conf
web_server.py 3.7KB Python