跳转至

上游服务器管理

上游 (Upstream) 是你的 DNS 查询在经过 Load Ants 加密和路由决策后的最终目的地。合理地配置上游,是保证 DNS 解析服务高可用和高性能的关键。

一个类比:分配任务的"工作小组"

你可以将 Load Ants 的上游管理机制想象成一个办公室里的项目管理场景:

  • DoH 服务器 (servers): 就像是办公室里的一个个"组员"。每个组员都有自己的工作地址(URL)。
  • 上游组 (upstream_groups): 就像是为了完成特定目标而建立的"工作小组"。你可以创建多个小组,例如"谷歌组"、"阿里组"、"抗污染专用组"等。
  • 负载均衡策略 (strategy): 就像是"小组组长"分配任务的方式。组长需要决定下一个进来的任务(DNS 查询)应该交给哪个组员来处理。

Load Ants 就是这位高效的"管理者",它根据你设定的策略,智能地将查询分发给组内的各个服务器。

负载均衡策略 (strategy)

为每个上游组选择合适的策略,可以帮助你实现不同的目标,如性能、隐私或故障转移。

策略名称 工作方式 最佳适用场景
roundrobin 轮询:像发牌一样,按顺序将请求依次分配给组里的每个服务器。1 号发完发 2 号,2 号发完发 3 号,一轮结束后再从 1 号开始。 当组内所有服务器性能相近时,用它来平均分配负载是最公平、最简单的。
weighted 加权轮询:根据你为每个服务器设定的"权重"(weight)来分配请求。权重越高的服务器,接到的请求就越多。 当组内服务器性能或可靠性不同时。例如,你可以让一台高性能的主服务器承担 80% 的流量,另一台备用服务器承担 20%。
random 随机:完全随机地从组里挑选一个服务器来处理请求,没有任何固定顺序。 当你希望增强隐私性时。随机选择可以打乱查询模式,让外部更难追踪你的 DNS 行为。

连接到私有服务:认证支持

除了连接到公共 DoH 服务器,Load Ants 还支持与需要认证的私有 DoH 提供商安全通信。这对于企业内部或个人搭建的私有 DNS 服务非常有用。

  • 支持的认证方式:
    • HTTP 基本认证 (Basic Auth): 使用用户名和密码进行验证。
    • Bearer 令牌认证 (Bearer Token): 使用一个访问令牌进行验证。

你可以在上游组配置中为特定的服务器组轻松添加认证信息。

资源优化:共享的连接池

为了最大化性能并减少资源消耗,Load Ants 在内部为所有上游组维护一个共享的 HTTP 客户端连接池

这意味着,即使你配置了数十个不同的上游服务器,Load Ants 也会智能地复用与这些服务器的底层 TCP/TLS 连接。这带来了几个好处:

  • 减少延迟:避免了为每个新请求都重新进行 TCP 和 TLS 握手的开销。
  • 降低 CPU 和内存使用:更少的连接数意味着更少的系统资源占用。
  • 提升吞吐量:连接复用是实现高并发 DoH 请求的关键。

这个优化过程是自动且透明的,无需任何额外配置。


配置示例

让我们看一个包含多个上游组和不同策略的配置:

upstream_groups:
    # 上游组 1: 公共 DNS,用于日常使用
    - name: "public_dns"
      # 策略: 轮询,平均分配请求
      strategy: "roundrobin"
      servers:
          - url: "https://223.5.5.5/dns-query" # 阿里 DNS
          - url: "https://1.12.12.12/dns-query" # 腾讯 DNS

    # 上游组 2: 高性能服务器组,主备模式
    - name: "high_performance"
      # 策略: 加权,让 server_1 处理大部分请求
      strategy: "weighted"
      servers:
          - url: "https://main-server.com/dns-query"
            weight: 80 # 主服务器,权重 80
          - url: "https://backup-server.com/dns-query"
            weight: 20 # 备用服务器,权重 20

    # 上游组 3: 注重隐私的服务器组
    - name: "private_dns"
      # 策略: 随机选择,打乱查询模式
      strategy: "random"
      servers:
          - url: "https://dns.google/dns-query"
          - url: "https://cloudflare-dns.com/dns-query"

# 在路由规则中,你可以根据需要将不同的域名指向这些不同的上游组
static_rules:
    - match: "wildcard"
      patterns: ["*.internal.corp"]
      action: "forward"
      target: "high_performance" # 内部服务使用高性能组

    - match: "wildcard"
      patterns: ["*"]
      action: "forward"
      target: "public_dns" # 其他所有查询使用公共 DNS 组

通过将服务器分组并应用不同策略,你可以构建一个高度定制化、既可靠又高效的 DNS 解析系统。


下一步