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秒
未来可能的改进
- DNS转发: 添加向上游DNS服务器转发查询的功能
- 缓存机制: 实现DNS查询缓存
- 更多记录类型: 支持AAAA、CNAME等记录类型
- 安全功能: 添加DNS查询过滤和黑名单
许可证
本项目采用MIT许可证。
贡献
欢迎提交Issue和Pull Request来改进这个项目。