diff --git a/README.md b/README.md index cbd9226..49a66f6 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,8 @@ + 自定义拦截规则,可屏蔽指定应用,如 QQ 、微信、微博等 ++ IPv6支持,拦截特定的 DNS 请求类型,修改指定域名的 TTL + + 在 DNS 层面上实现去广告与防跟踪功能,按需求配置自定义的拦截规则 + 无论 APP 、网页还是机顶盒、IoT 设备等均可拦截 @@ -20,11 +22,7 @@ ClearDNS 可部署在主路由器上,但需要路由器刷入支持 Docker 的 ## 设计架构 -TODO: add structure of cleardns here (input -> adguard -> overture -> domestic/foreign) - -TODO: plain dns / dns over http / dns over tls / dns over quic / dnscrypt - -TODO: about assets (gfwlist, chinalist, china-ip) +ClearDNS 运行架构: ```mermaid graph LR @@ -35,11 +33,31 @@ TODO: about assets (gfwlist, chinalist, china-ip) diverter --> foreign(Foreign) end domestic -. Plain DNS .-> domestic_1(223.5.5.5) - domestic -. DNS over TLS .-> domestic_2(tls://223.5.5.5) + domestic -. DNS over TLS .-> domestic_2(tls://dot.pub) foreign -. DNS over QUIC .-> foreign_1(Private Server) foreign -. DNS over HTTPS .-> foreign_2(Private Server) ``` +请求在通过 AdGuardHome 处理后(可选),发往分流器 Diverter ,在这里将对请求,通过国内组 Domestic 与国外组 Foreign 的请求,甄别出被污染的数据,返回正确的 DNS 。两组请求都可拥有多个上游服务器,ClearDNS 可以逐个查询,亦可同时发起请求。 + +ClearDNS 支持多种协议,首先是常规 DNS ,即基于 UDP 或 TCP 的明文查询,该方式无法抵抗 DNS 污染,对部分运营商有效,仅建议用于国内无劫持的环境下使用;其次为 `DNS over HTTPS` 、`DNS over TLS` 、`DNS over QUIC` 与 `DNSCrypt` ,它们都是加密的 DNS 服务协议,格式为 ... ,在出境请求中,`DNS over TLS` 特别是标准端口的服务已经被大规模封杀,`DNSCrypt` 也基本无法使用,目前建议使用 `DNS over QUIC` 与非标准子路径的 `DNS over HTTPS` + +对于多种 DNS 加密协议的简述,可以参考 ... + +在分流器部分,ClearDNS 需要借助三个资源文件工作: + ++ `gfwlist.txt` :记录被墙的常见域名 + ++ `chinalist.txt` :记录服务器在国内的创建域名 + ++ `china-ip.txt` :记录国内 IP 列表(CIDR 格式) + +分流器接到请求时,如果在 `chinalist.txt` 中匹配,则只请求国内组,若与 `gfwlist.txt` 匹配,则请求国外组;未匹配的情况下,将同时请求两组查询,若国内组返回结果在 `china-ip.txt` 中,则证明 DNS 未被污染,采纳国内组结果,若返回非国内 IP ,则可能已经被污染,将返回国外组结果。 + +由于这方面记录一直在变动,ClearDNS 内置了更新功能,可自动这些资源文件;数据从多个上游项目收集,每天进行一次合并整理,整合数据的源码为 ... ,您可以自由配置更新服务器,或者禁用更新。 + +TODO: add update disable option + ## 配置格式 ClearDNS 使用 YAML 作为默认配置格式,默认配置文件如下: @@ -266,6 +284,8 @@ assets: ### 1. 网络配置 +> 本项目基于 Docker 构建,在 [Docker Hub](https://hub.docker.com/repository/docker/dnomd343/cleardns) 或 [Github Package](https://github.com/dnomd343/ClearDNS/pkgs/container/cleardns) 可以查看已构建的各版本镜像。 + ClearDNS基于Docker网络有以下三种部署模式: | | host模式 | bridge模式 | macvlan模式 | @@ -293,18 +313,15 @@ Docker version ···, build ··· shell> wget -qO- https://get.docker.com/ | bash ``` -ClearDNS可以从多个镜像源获取,其数据完全相同,国内用户建议首选阿里云镜像。 +XProxy 同时发布在多个镜像源上: -``` -# Docker Hub -shell> docker pull docker.io/dnomd343/cleardns ++ `Docker Hub` :`dnomd343/cleardns` -# Github Package -shell> docker pull ghcr.io/dnomd343/cleardns ++ `Github Package` :`ghcr.io/dnomd343/cleardns` -# 阿里云个人镜像 -shell> docker pull registry.cn-shenzhen.aliyuncs.com/dnomd343/cleardns -``` ++ `阿里云镜像` :`registry.cn-shenzhen.aliyuncs.com/dnomd343/cleardns` + +> 下述命令中,容器路径可替换为上述其他源,国内网络建议首选阿里云仓库
@@ -324,7 +341,7 @@ shell> netstat -tlnpu | grep -E ":53|:80" # 映射系统时间文件以同步容器内部时区 shell> docker run --restart always \ --name cleardns -d \ --v /etc/cleardns/:/etc/cleardns/ \ +-v /etc/cleardns/:/cleardns/ \ -v /etc/timezone:/etc/timezone:ro \ -v /etc/localtime:/etc/localtime:ro \ -p 53:53/udp -p 53:53 -p 80:80 \ @@ -351,7 +368,7 @@ shell> netstat -tlnpu | grep -E ":53|:80|:4053|:5353|:6053" docker run --restart always \ --name cleardns -d \ --network host \ --v /etc/cleardns/:/etc/cleardns/ \ +-v /etc/cleardns/:/cleardns/ \ -v /etc/timezone:/etc/timezone:ro \ -v /etc/localtime:/etc/localtime:ro \ dnomd343/cleardns @@ -409,7 +426,7 @@ shell> docker run --restart always \ --name cleardns \ --network macvlan \ --privileged -d \ --v /etc/cleardns/:/etc/cleardns/ \ +-v /etc/cleardns/:/cleardns/ \ -v /etc/timezone:/etc/timezone:ro \ -v /etc/localtime:/etc/localtime:ro \ dnomd343/cleardns