DNS
简要介绍
Egern 的 DNS 提供了多种协议支持,如传统的 DNS、DNS over HTTPS、DNS over TLS 和 DNS over QUIC。用户可以通过配置转发规则,将特定的域名请求转发到不同的 DNS 服务器上。
主要组件
1. Bootstrap(默认的 DNS 服务器)
Egern 默认使用系统配置的 DNS 服务器,即 Wi-Fi 或蜂窝网络的 DNS 服务器。此服务器仅支持传统的 DNS 协议,用于解析 Upstreams 中配置的 DNS 服务器的域名。Bootstrap 配置的 DNS 服务器不遵循代理规则,流量会直接连接到服务器。
2. Upstreams(DNS 服务器组)
Upstreams 配置包括传统 DNS 协议、DNS over HTTPS、DNS over TLS 和 DNS over QUIC 的 DNS 服务器。它们用于在 DNS 转发规则中转发域名请求,并遵循代理规则。
3. Forward(DNS 转发规则)
Forward 用于定义 DNS 转发规则,每条规则由域名匹配项 和 Upstream 组成。支持通配符格式、正则表达式和代理规则集的匹配规则。
4. 公网 IP 查询地址
此地址用于查询设备的公网 IP,并作为 EDNS Client Subnet 的参数,帮助 DNS 服务器提供离设备公网 IP 最近的域名解析结果。
5. Hosts(主机映射)
Hosts 用于将主机名映射到 IP 地址或其他主机名。主机名支持通配符匹配。
6. BlockIps (屏蔽 IP)
用于屏蔽域名解析中的某些 IP 地址,支持 IP 和 CIDR 格式。
配置示例
dns:
bootstrap:
- system # 使用系统默认的DNS配置作为引导。
upstreams: # 定义上游DNS服务器的列表。
google: # 使用Google的公共DNS服务器作为上游服务器之一。
- https://8.8.8.8 # Google的第一个DNS服务器。
- https://8.8.4.4 # Google的备用DNS服务器。
forward: # 转发DNS请求的规则。
- wildcard:
match: '*.cn' # 将所有以.cn结尾的域名请求转发给系统默认的DNS服务器。
value: system
- proxy_rule_set: # 匹配 ACL4SSR 的中国域名列表中的域名。
match: https://github.com/ACL4SSR/ACL4SSR/raw/master/Clash/ChinaDomain.list
value: system # 这些匹配的域名使用系统默认的DNS服务器。
- regex:
match: ^ad\..*|^ads\..* # 正则表达式匹配以"ad."或"ads."开头的域名(通常是广告相关的域名)。
value: quic://dns.adguard-dns.com # 这些广告相关的域名使用AdGuard的QUIC DNS服务器。
- wildcard:
match: '*' # 匹配所有其他未被前述规则匹配的域名。
value: google # 将这些域名请求转发到Google的DNS服务器。
hosts: # 本地DNS解析的主机名映射。
example.com: www.example.com # 将example.com解析为www.example.com。
localhost: 127.0.0.1 # 将localhost解析为本地地址127.0.0.1。
block_ips: # 阻止的IP地址或子网列表。
- 1.2.3.4 # 阻止IP地址1.2.3.4。
- 4.3.2.1/32 # 阻止IP地址4.3.2.1/32(单个IP地址)。
public_ip_lookup_url: https://ifconfig.me/ip # 查询公共IP地址的URL,用于获取本机的公网IP地址。
常见问题
为什么有 Upstreams 还需要 Bootstrap 的 DNS 服务器?
这是因为 Upstreams 中配置的 DNS 服务器的域名解析,可能需要依赖 Bootstrap DNS 服务器来完成初始解析。