主机

源码

hosts 可从 /etc/hosts 样式文件中提供区域数据。

说明

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.arpaip6.arpa 条目
  • fallthrough 如果区域匹配并且无法生成记录,则将请求传递到下一个插件。如果省略了 [ZONES…],则对该插件具有权威性的所有区域都会执行 fallthrough。如果列出了特定区域(例如 in-addr.arpaip6.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 更新。

此文件的 规范来源