Unbound 作为缓存中间服务器速度很慢,而且做的比我需要的还多

Unbound 作为缓存中间服务器速度很慢,而且做的比我需要的还多

我需要的

转发 DNS 服务器作为另一个 DNS 服务器的中介,该 DNS 服务器提供过期记录并在稍后更新其缓存。

问题

我尝试使用它unbound,因为我发现它是唯一具有此服务过期功能的软件。

但是我的设置存在一个问题unbound,即它会发送多个查询并执行一些奇怪的操作,使其自身比到上游服务器的简单dignslookup(~100ms)慢(~几百毫秒)(假设它的地址是22.22.22.22)。我能做些什么让 unbound 的行为比这更简单吗?:

/etc/unbound/unbound.conf

include-toplevel: "/etc/unbound/unbound.conf.d/*.conf"

server:
  chroot: ""
  logfile: /var/log/unbound.log
  verbosity: 2
  log-queries: yes
  port: 53
  cache-min-ttl: 600
  rrset-cache-size: 400m
  msg-cache-size: 200m
  prefetch: yes
  serve-expired: yes
  serve-expired-ttl: 172800 # :)
  do-not-query-localhost: no
  tcp-upstream: no
  outgoing-num-tcp: 4000
  incoming-num-tcp: 4000
  access-control: ... # a few access-control lines
  so-reuseport: yes
  tcp-idle-timeout: 10000
  edns-tcp-keepalive: yes

remote-control:
  control-enable: yes

forward-zone:
  name: "ir"
  forward-addr: 46.224.1.42
  forward-addr: 8.8.4.4

forward-zone:
  name: "."
  forward-addr: 22.22.22.22 # Upstream server

答案1

对于我的目的(缓存和提供过期/陈旧的记录)来说,CoreDNS 似乎工作得更好,采用以下配置:

. {
  bind lo
  forward . 22.22.22.22
  log
  cache {
    success 20000 3600 600
    denial 10000 1800 600
    prefetch 5000
    serve_stale 172800s immediate
  }
}

其中 22.22.22.22 是上游服务器的地址,serve_stale 172800s immediate模仿serve-expired的功能unbound。因此,当响应过期时,它们被视为在 172800 秒内是新鲜的,并立即发送给客户端,而无需等待上游。(https://coredns.io/plugins/cache/

相关内容