Centos 8 上的 DNS 代理

Centos 8 上的 DNS 代理

是否有一个适用于 centos 8 的简单 dns 代理可以缓存请求?

我在 Linux 上运行一个 .net core 应用程序,它向 Web 服务器发送 http 请求。

目前名称解析需要 300 毫秒。

我想将其缩短至 1ms。可以使用 DNS 代理来实现吗?哪种代理需要最少的设置?

答案1

这听起来像是 unbound 或 dnsmasq 的一个很好的用例,它们都是在设计上缓存 DNS 服务器的。我个人对 unbound 最有经验,所以我将在这里描述它,但安装和配置 dnsmasq 的指南也广泛可用。

安装非常简单,只需运行 yum:

sudo yum install unbound

然后,通过编辑 /etc/unbound/unbound.conf 配置 unbound。合理的默认值如下:

server:
  access-control: 127.0.0.0/8 allow
  access-control: 10.0.0.0/8 allow
  access-control: 172.16.0.0/12 allow
  access-control: 192.168.0.0/16 allow
  aggressive-nsec: yes
  cache-max-ttl: 14400
  cache-min-ttl: 1200
  hide-identity: yes
  hide-version: yes
  interface: 0.0.0.0
  prefetch: yes
  rrset-roundrobin: yes
    so-reuseport: yes
  use-caps-for-id: yes
  verbosity: 1
  num-threads: 2
  private-address: 192.168.0.0/16
  private-address: 172.16.0.0/12
  private-address: 10.0.0.0/8

forward-zone:
   name: "."
   forward-addr: 1.0.0.1@53 # Cloudflare
   forward-addr: 1.1.1.1@53 # Cloudflare
   forward-addr: 8.8.4.4@53 # Google
   forward-addr: 8.8.8.8@53 # Google

这将 unbound 配置为可从所有 RFC1918(私有)地址访问,并将所有请求转发到 Cloudflare 和 Google DNS 服务器。配置完成后,重新启动 unbound:

sudo systemctl restart unbound

你就可以出发了!

答案2

DNS 代理是一种接受另一台设备的 DNS 请求并代表该设备转发这些请求的设备。DNS 代理并不是您所指的代理定义中真正存在的东西。它的功能与递归 DNS 服务器相同。

不过,除此之外,Centos 计算机上的 DNS 客户端已经处理了您要解决的问题。如果它不断联系外部名称服务器以获取地址,则记录的 TTL 可能低于应有值。它应该联系名称服务器一次,然后使用缓存直到 TTL 过期。如果没有发生这种情况,听起来就像 DNS 记录。

相关内容