说明
通过 unbound,你可以执行递归查询。Unbound 在解析时默认使用 DNSSEC,并且将这些记录(DNSKEY、RRSIG、NSEC 和 NSEC3)返回给客户端。如果客户端没有提出请求,unbound 插件将移除这些记录。Unbound 的内部 (RR) 答案缓存已禁用,因此你可能需要使用 cache 插件。
Libunbound 可以通过(部分)选项进行配置,目前已按默认设置以下选项
msg-cache-size
,设置为 0rrset-cache-size
,设置为 0
此插件每块服务器块只能使用一次。
语法
unbound [FROM]
- FROM 是要匹配的请求的基本域名,以便解析。如果未指定,将使用服务器块中的区域。
更多利用扩展语法实现的功能
unbound [FROM] {
except IGNORED_NAMES...
option NAME VALUE
}
- FROM 如上。
- IGNORED_NAMES 中的
except
是一个用空格分隔的排除在解析之外的域列表。 option
允许设置 一些 unbound 选项(参见 unbound.conf(5)),可以多次指定。
指标
如果启用监控(通过 prometheus 指令),则导出以下指标
coredns_unbound_request_duration_seconds{server}
- 每个查询的持续时间。coredns_unbound_response_rcode_count_total{server, rcode}
- RCODE 的计数。
server
标签表示处理请求的服务器,有关详细信息,请参见指标插件。
示例
解析所有域的查询
. {
unbound
}
解析 example.org 中的所有查询。
. {
unbound example.org
}
或
example.org {
unbound
}
解析除 example.org(或以下)之外的所有查询
. {
unbound {
except example.org
}
}
通过设置选项启用 DNS 查询名称最小化
. {
unbound {
option qname-minimisation yes
}
}
漏洞
unbound 插件依赖于 libunbound(3),这是一个 C 库,编译此库需要依赖 C 和 cgo。无法完全静态编译 CoreDNS。对于编译,还需要安装 libunbound 源代码(在 Debian 上为 libunbound-dev
)。
尚不支持 DNSSEC 验证。也没有配置信任锚点(已记录)的方法。
另请参阅
有关 Unbound 和 unbound.conf(5) 的信息,请参阅 https://unbound.net。有关 libunbound 的(cgo)Go 封装,请参阅 https://github.com/miekg/unbound。