是否有一个适用于 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 记录。