Skip to content

iw0-wth/microdns

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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来改进这个项目。

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages