主要观点:作者因对社交媒体的“末日滚动”(doomscrolling)感到不满,决定利用 ESP32 微控制器将其制作成 DNS 服务器,通过设置 DNS 黑洞(DNS sinkhole)来阻止 iPhone 访问社交媒体网站,以减少时间浪费。介绍了 DNS 的基本概念、DNS 数据包结构、如何处理传入的 DNS 查询以及与 Cloudflare DNS 的交互等内容,并提供了完整的代码和相关参考。
关键信息:
- doomscrolling:被动滚动社交媒体内容,浪费时间且无效率。
- ESP32:用于创建 DNS 服务器的低功耗、$8 微控制器。
- DNS 协议:负责将域名解析为 IP 地址,通常由 ISP 的 DNS 服务器自动处理,也可更换为其他公共 DNS 服务器。
- DNS 黑洞:特殊类型的 DNS 服务器,对特定域名返回无效的非路由 IP 地址,可用于阻止广告等。
- 代码实现:包括连接到互联网、设置简单 DNS 服务器、理解 DNS 数据包结构、处理传入 DNS 查询、处理来自 Cloudflare DNS 的响应等部分的代码。
重要细节:
- 通过读取 DNS 数据包的各个字段,提取域名并与阻止列表进行比较,若域名在阻止列表中则返回 0.0.0.0,否则将请求转发给 Cloudflare DNS 并返回实际 IP 地址。
- 使用 UDP 协议以提高速度和性能,通过 map 来跟踪客户端的请求和响应。
- 提供了完整的代码示例,包括各个函数的实现和相关数据结构的定义。
- 给出了相关的参考资料,如关于计算机网络基础的 PDF、制作 DNS 查询的文章、社区管理的域名列表以及 iPhone 13 模型等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。