跳到主要内容

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 服务器来完成初始解析。