跳转至内容

Rescached

来自 ArchWiki

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

rescached 并非像 BIND 那样的 DNS 服务器重新实现。rescached 的主要目标仅在于缓存 DNS 查询和响应,以最大限度地减少不必要的对外网络流量。它适用于个人系统或为一小组用户提供服务。

特性

当前功能列表:

  • 能够处理来自 UDP 和 TCP 连接的请求
  • 能够使用 UDP 或 TCP 转发请求
  • 加载并提供 /etc/hosts 中的地址和主机名
  • 加载并提供 /etc/rescached/hosts.d/ 目录内 hosts 格式的文件
  • 通过 /etc/rescached/hosts.d/ 中的主机列表拦截广告和/或恶意网站
  • 支持加载并提供来自 /etc/rescached/zone.d/ 的区域文件 (zone file) 格式
  • 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 会尝试从缓存中清除旧记录。如果缓存中记录的访问时间小于 当前时间 + 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 服务提供了一个可以通过 http://127.0.0.1:5380 访问的 Web 用户界面。最新版本提供以下界面:

首页

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

环境页面

环境页面允许用户实时修改 rescached 配置。

主机拦截页面 (Hosts Blocks)

主机拦截页面允许用户启用或禁用外部的主机拦截列表源。

hosts.d 页面

Hosts.d 页面允许用户管理 hosts 文件,包括创建新 hosts 文件、创建新记录或删除记录。

zone.d 页面

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

参见

  • 安装后,更多信息和配置请参阅 rescached.cfg(5)
  • Bug 报告和功能请求请优先提交至 GitHub

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.