RPZ CNAME 泄露 RPZ 的使用情况

RPZ CNAME 泄露 RPZ 的使用情况

由于历史原因,我们在一个域 (example.com) 上的主机上同时拥有内部 (192.168.0.0/16) 和公共 IP。我现在想将其拆分,以便外部用户无需解析内部主机名。

我目前的计划是使用 RPZ 进行绑定。

我的named.conf如下:

options {
    directory "/var/named";
    pid-file "/run/named/named.pid";

    // Uncomment these to enable IPv6 connections support
    // IPv4 will still work:
    //  listen-on-v6 { any; };
    // Add this for no IPv4:
    //  listen-on { none; };

    allow-recursion { localhost; };
    allow-transfer { none; };
    allow-update { none; };

    version none;
    hostname none;
    server-id none;
    response-policy { zone "rpz"; };
};

zone "localhost" IN {
    type master;
    file "localhost.zone";
};

zone "0.0.127.in-addr.arpa" IN {
    type master;
    file "127.0.0.zone";
};

zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" {
    type master;
    file "localhost.ip6.zone";
};

zone "255.in-addr.arpa" IN {
    type master;
    file "empty.zone";
};

zone "0.in-addr.arpa" IN {
    type master;
    file "empty.zone";
};

zone "." IN {
    type hint;
    file "root.hint";
};

zone "rpz" {type master; file "rpz"; allow-query {localhost;}; };

我的rpz区域文件如下:

$TTL 1H
@                 SOA LOCALHOST. named-mgr.example.com (16 1h 15m 30d 2h)
@ IN    NS  localhost.
support.example.com     A   192.168.1.1
cname.example.com   CNAME support.example.com
*.example.com CNAME rpz-passthru.
*   CNAME .

当我查询 support.example.com 时,我得到了我想要的结果:

# dig +short support.example.com @127.0.0.1
192.168.1.1

但是当我查询 cname.example.com 时,IP 被解析,但客户端被告知他位于 RPZ 区域。

# dig +short cname.example.com @127.0.0.1
support.example.com.rpz.
192.168.1.1

或者,我可以按如下方式更改区域文件中的 CNAME:

cname.example.com   CNAME support.example.com. ;mind the period at the end

但这将阻止 bind 递归解析 cname:

# dig +short cname.example.com @127.0.0.1
support.example.com.
# dig +short support.example.com. @127.0.0.1
192.168.1.1

你能解释一下我做错了什么吗?

谢谢克莱门斯

答案1

回复得有点晚了,但这个问题已经在isc 邮件列表。遗憾的是,您不能将多个 rpz 记录链接在一起,例如

cname.example.com    CNAME  support.example.com.
support.example.com      A   192.168.1.1

rpz 是一次性操作。如果您的查询导致 2 次查找(涉及 CNAME 时会自动发生)- rpz 将仅处理第一次查找。

您需要将配置更改为

cname.example.com       A   192.168.1.1
support.example.com     A   192.168.1.1

...每个条目只需一次查找即可得到答案。

当不使用 cname 记录时,您也不必担心 cname 记录后面的句点的必要性 ;)
无论如何,如果您必须在 rpz 文件中使用 CNAME 记录,那么请添加句点。对于 rpz 来说,其他一切都没有多大意义。

相关内容