{"repo":"dnomd343/ClearDNS","free":true,"listed":false,"github":"https://github.com/dnomd343/ClearDNS","clone":"git clone https://github.com/dnomd343/ClearDNS.git","description":"容器化的无污染DNS服务","language":"C","stars":360,"topics":["dns","docker","macvlan","gfw","dns-server"],"license":"MIT","category":"networking-infra","readme_excerpt":"ClearDNS + ✅ 无污染的 DNS 解析，避开运营商和防火长城的污染与劫持 + ✅ 支持多种加密协议，包括 DoH 、DoT 、DoQ 与 DNSCrypt + ✅ 内置详细的分流规则，同时也支持自定义域名和 CIDR 策略 + ✅ DNS 请求审计，记录不同设备的查询、拦截、返回等信息 + ✅ 自定义拦截规则，可屏蔽指定应用，如 QQ 、微信、微博等 + ✅ 强制 hosts 功能，将指定域名直接解析到指定 IP 上 + ✅ IPv6 支持，拦截特定的 DNS 请求类型，修改指定域名的 TTL + ✅ 在 DNS 层面上实现去广告与防跟踪功能，按需求配置自定义规则 --- 由于 ClearDNS 工作在服务器一侧，因此对 APP 、网页、机顶盒、IoT 设备等均可生效；它一般部署在内网中，为局域网设备提供服务，建议运行在内网一台长期开机的设备上（主路由、树莓派、小主机、旁路由、NAS 设备等），同时 ClearDNS 也可部署在公网服务器上，面向国内网络提供无污染服务。 设计架构 AdGuardHome 用于加载拦截规则，可以自定义是否开启 DNS 请求在通过 AdGuardHome 处理后，发往分流器 Diverter ，在这里将借助路由资源、国内组 Domestic 与国外组 Foreign 的返回结果，甄别出被污染的数据，返回正确的 DNS 解析；两组请求都可拥有多个上游服务器，ClearDNS 可以逐个对服务器进行请求，亦可同时发起查询。 ClearDNS 支持多种 DNS 协议，首先是常规 DNS ，即基于 UDP 或 TCP 的明文查询，该方式无法抵抗 DNS 污染，对部分运营商有效（相当于不使用运营商分配的 DNS 服务器），仅建议用于国内无劫持的环境下使用；其次为 DNS over HTTPS 、 DNS over TLS 、 DNS over QUIC 与 DNSCrypt ，它们都是加密的 DNS 服务协议，可以抵抗污染与劫持行为，但可能被防火长城拦截；在出境请求中， DNS over TLS 特别是标准端口的服务已经被大规模封杀， DNSCrypt 也基本无法使用，目前建议使用 DNS over QUIC 与非标准路径的 DNS over HTTPS 服务。 对于多种 DNS 加密协议的简述，可以参考浅谈DNS协议，里面讲解了不同协议的区别与优缺点，以及 DNS 服务的分享格式。 在分流器部分，ClearDNS 需要借助三个资源文件工作： + gfwlist.txt ：记录常见的被墙域名 + chinalist.txt ：记录服务器在国内的常见域名 + china-ip.txt ：记录国内 IP 段数据（CIDR 格式） 防火长城的 DNS 污染有一个特点，被污染的结果必为境外 IP 地址 当分流器接到请求时，若在 chinalist.txt 中有所匹配，则只请求国内组，若在 gfwlist.txt 中匹配，则仅请求国外组；两者均未未匹配的情况下，将同时请求国内组与国外组，若国内组返回结果在 china-ip.txt 中，则证明 DNS 未被污染，采纳国内组结果，若返回国外 IP 地址，则可能已经被污染，将选取国外组结果。 由于以上资源数据一直在变动，ClearDNS 内置了更新功能，用于自动获取新的资源文件；本项目提供了默认分流配置文件，从多个上游项目收集后合并，每天零点更新一次，数据处理的源码可见此处，下发地址如下： + gfwlist.txt ： https://res.343.re/Share/cleard","default_branch":null,"files":null,"tree":[],"storefront":"/r/dnomd343","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/dnomd343/ClearDNS/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}