Rescached
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 的覆盖。
与 OpenResolv 集成
Rescached 可以检测到由 resolvconf 生成的 resolv.conf 文件的更改。要使用此功能,请在配置文件中将 file.resolvconf
设置为 /etc/rescached/resolv.conf
。在 /etc/resolvconf.conf
中,将 dnsmasq_resolv
、pdnsd_resolv
或 unbound_conf
设置为指向同一文件 /etc/rescached/resolv.conf
。
Web 用户界面
rescached 服务提供了一个 Web 用户界面,可以通过 http://127.0.0.1:5380 访问。最新版本提供了以下用户界面:
首页允许用户监控活动缓存、查询缓存和删除缓存。
环境页面允许用户动态修改 rescached 配置。
Hosts Blocks 页面允许用户启用或禁用主机阻止列表的外部来源。
Hosts.d 页面允许用户管理主机文件,创建新的主机文件,创建新的记录或删除记录。
Zone.d 页面允许用户管理区域文件,创建新的区域文件,在区域文件中添加或删除新的资源记录。
参见
- 有关更多信息和配置,请参阅安装后的 rescached.cfg(5)
- 错误报告和功能请求优先在 GitHub 上提交