ACL
acl 在源 ip 上实施访问控制策略,并防止对 DNS 服务器的未经授权的访问。
描述
acl 启用时,用户可以通过配置 IP 过滤规则集,即允许授权递归查询或阻止未经授权的查询,以阻止或过滤可疑的 DNS 查询。
这个插件可以在多个域名服务块中多次使用。
句法
acl [ZONES...] {
ACTION [type QTYPE...] [net SOURCE...]
}
ZONES
区域应具有权威性。如果为空,则使用配置块中的区域。ACTION
(allow,block 或 filter)定义了处理与此规则匹配的 DNS 查询的方式。默认操作为 allow,这意味着将允许递归与任何规则都不匹配的 DNS 查询。块和过滤器之间的区别在于,块返回状态代码 REFUSED,而过滤器返回空集 NOERRORQTYPE
是与允许或阻止的请求相匹配的查询类型。支持公共资源记录类型。*
代表所有记录类型。省略的默认行为type QTYPE...
是匹配所有种类的 DNS 查询(与相同type *
)。SOURCE
是与允许或阻止的请求相匹配的源IP地址。支持典型的 CIDR 表示法和单个 IP 地址。*
代表所有可能的源IP地址。
例子
为了演示插件 acl 的用法,我们在此提供一些典型示例。
阻止所有记录类型为 192.168.0.0/16 的 DNS 查询:
. {
acl {
block type A net 192.168.0.0/16
}
}
从 192.168.0.0/16 过滤所有记录类型为 A 的 DNS 查询:
. {
acl {
filter type A net 192.168.0.0/16
}
}
阻止除 192.168.1.0/24 之外的所有来自 192.168.0.0/16 的 DNS 查询:
. {
acl {
allow net 192.168.1.0/24
block net 192.168.0.0/16
}
}
仅允许来自 192.168.0.0/24 和 192.168.1.0/24 的 DNS 查询:
. {
acl {
allow net 192.168.0.0/24 192.168.1.0/24
block
}
}
阻止从 192.168.1.0/24 到 a.example.org 的所有 DNS 查询:
example.org {
acl a.example.org {
block net 192.168.1.0/24
}
}
指标
如果启用了监控(通过 prometheus插件),则将导出以下指标:
coredns_acl_blocked_requests_total{server, zone}
- DNS 请求器被阻止的次数统计。coredns_acl_allowed_requests_total{server}
- DNS 请求通过的次数统计。
在 server
和 zone
标签的详细解释,参考 metrics 插件。