Rescached

出自 ArchWiki

rescached 是一个守护进程,用于在本地内存中缓存互联网名称和地址,以加速 DNS 解析。

rescached 不是 DNS 服务器(如 BIND)的重新实现。rescached 的主要目标仅是缓存 DNS 查询和响应,以最大限度地减少到外部网络的不必要流量。它旨在用于个人系统或为小群用户提供服务。

特性

当前功能列表:

  • 能够处理来自 UDP 和 TCP 连接的请求
  • 能够使用 UDP 或 TCP 转发请求
  • 加载并服务于 /etc/hosts 中的地址和主机名
  • 加载并服务于 /etc/rescached/hosts.d/ 目录中的主机格式文件
  • 通过 /etc/rescached/hosts.d/ 中的主机列表阻止广告和/或恶意网站
  • 支持从 /etc/rescached/zone.d/ 加载和服务区域文件格式
  • openresolv 集成
  • 支持 DNS over TLS (DoT) (RFC:7858)
  • 支持 DNS over HTTPS (DoH) (RFC:8484)

rescached 中的缓存工作原理

缓存中的每个 DNS 记录都有上次访问时间字段,该字段定义了缓存在内存中的排序方式。上次查询的主机名将位于缓存列表的底部,而最早查询的主机名将位于缓存列表的顶部。

下表说明了内存中的缓存列表:

访问时间 主机名
2018-01-01 00:00:01 kilabit.info
2018-01-01 00:00:02 archlinux.org
... ...
2018-01-01 00:01:00 wiki.archlinux.org

每当 cache.prune_delay(例如每 5 分钟)时,rescached 将尝试从缓存中修剪旧记录。如果缓存中记录的访问时间值小于 current-time + cache.threshold(请记住“cache.threshold”值必须为负数),它将从缓存中删除该记录。

安装

安装 rescached-gitAUR 软件包。

安装后配置

默认配置允许直接启动守护进程。

Rescached 配置文件位于 /etc/rescached/rescached.cfg。要更改的条目是

  • 设置您的父 DNS 服务器
根据您的首选 DNS 服务器更改 parent 的值。
  • 设置缓存修剪延迟和阈值
编辑 rescached 配置文件 /etc/rescached/rescached.cfg,更改 cache.prune_delay 和/或 cache.threshold 的值以满足您的需求。

编辑配置文件后,修改 resolv.conf 文件,并将当前的解析器地址集替换为环回地址

nameserver 127.0.0.1

其他程序可能会覆盖此设置;有关详细信息,请参见 域名解析#/etc/resolv.conf 的覆盖

最后,启用启动 rescached.service

与 OpenResolv 集成

Rescached 可以检测到由 resolvconf 生成的 resolv.conf 文件的更改。要使用此功能,请在配置文件中将 file.resolvconf 设置为 /etc/rescached/resolv.conf。在 /etc/resolvconf.conf 中,将 dnsmasq_resolvpdnsd_resolvunbound_conf 设置为指向同一文件 /etc/rescached/resolv.conf

Web 用户界面

rescached 服务提供了一个 Web 用户界面,可以通过 http://127.0.0.1:5380 访问。最新版本提供了以下用户界面:

首页

首页允许用户监控活动缓存、查询缓存和删除缓存。

环境页面

环境页面允许用户动态修改 rescached 配置。

Hosts Blocks 页面

Hosts Blocks 页面允许用户启用或禁用主机阻止列表的外部来源。

hosts.d 页面

Hosts.d 页面允许用户管理主机文件,创建新的主机文件,创建新的记录或删除记录。

zone.d 页面

Zone.d 页面允许用户管理区域文件,创建新的区域文件,在区域文件中添加或删除新的资源记录。

参见

  • 有关更多信息和配置,请参阅安装后的 rescached.cfg(5)
  • 错误报告和功能请求优先在 GitHub 上提交