说明
hosts 插件可用于从 /etc/hosts
文件提供区域。它提供从磁盘上存在的预加载文件中。它会检查文件中的更改,并相应地更新区域。此插件仅支持 A、AAAA 和 PTR 记录。hosts 插件可用于屏蔽对广告服务器的访问的现成 hosts 文件。
此插件每 5 秒重新加载 hosts 文件的内容。重新加载后,CoreDNS 会使用新的定义。如果文件被删除,则任何内嵌内容仍会继续提供。当文件还原后,它将再次被使用。
如果 hosts 插件中没有匹配项,而您希望将请求传递到插件链的其余部分,则必须指定 fallthrough
选项。
此插件每个服务器块仅可使用一次。
hosts 文件
如 hosts(5) 手册页所述,一般项目的形式为 IP_address canonical_hostname [aliases...]
。
示例
# The following lines are desirable for IPv4 capable hosts
127.0.0.1 localhost
192.168.1.10 example.com example
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fdfc:a744:27b5:3b0e::1 example.com example
PTR 记录
CoreDNS 会自动生成用于反向查找的 PTR 记录(基于 hosts 文件条目),且不能手动创建。
语法
hosts [FILE [ZONES...]] {
[INLINE]
ttl SECONDS
no_reverse
reload DURATION
fallthrough [ZONES...]
}
- FILE 要读取和解析的 hosts 文件。如果路径是相对路径,则会将 root 插件的路径作为前缀添加到其前面。如果省略,则默认为 /etc/hosts。我们会每 5 秒扫描文件中的更改。
- ZONES 它应该具有权威性的区域。如果为空,则使用配置块中的区域。
- INLINE 内联在 Corefile 中的 hosts 文件内容。如果在 fallthrough 前有任何行,则所有这些行都将被视为 hosts 文件的附加内容。仍然会读取指定 hosts 文件的路径,但条目会得到覆盖。
ttl
更改生成的记录(正向和反向)的 DNS TTL。默认值为 3600 秒(1 小时)。reload
更改每次 hostsfile 重新加载之间的周期。零秒的时间将禁用此功能。有效持续时间示例:“300ms”、“1.5h”或“2h45m”。请参阅 Go 的 time。包。no_reverse
禁用自动生成主机的in-addr.arpa
或ip6.arpa
条目fallthrough
如果区域匹配并且无法生成记录,则将请求传递到下一个插件。如果省略了 [ZONES…],则对该插件具有权威性的所有区域都会执行 fallthrough。如果列出了特定区域(例如in-addr.arpa
和ip6.arpa
),则只有针对这些区域的查询会受 fallthrough 约束。
指标
如果启用 monitor(通过 prometheus 插件),则会导出以下指标
coredns_hosts_entries{}
- hosts 和 Corefile 中条目总数。coredns_hosts_reload_timestamp_seconds{}
- 主机文件上次重新加载的时间戳。
示例
加载 /etc/hosts
文件。
. {
hosts
}
加载当前目录中的 example.hosts
文件。
. {
hosts example.hosts
}
加载 example.hosts 文件,仅从中提供 example.org 和 example.net,如果查询不匹配,则转到下一个插件。
. {
hosts example.hosts example.org example.net {
fallthrough
}
}
加载 Corefile 中内联主机文件。
example.hosts example.org {
hosts {
10.0.0.1 example.org
fallthrough
}
whoami
}
另请参阅
/etc/hosts
文件中条目的形式基于 IETF RFC 952,该 RFC 已由 IETF RFC 1123 更新。
此文件的 规范来源