RPZ CNAME пропускает использование RPZ

По историческим причинам у нас есть как внутренние (192.168.0.0/16), так и публичные IP-адреса на хостах в одном домене (example.com). Теперь я хочу разделить это, чтобы внутренние имена хостов не были разрешены для внешних пользователей.

Мой текущий план - использовать связывание с 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

Можете ли вы объяснить, что я делаю не так?

Спасибо Клеменс

0 ответов

Это довольно поздний ответ, но на него ответили в списке рассылки 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;)
В любом случае, если вам необходимо использовать записи CNAME в файле rpz, добавьте точку. Все остальное не имеет особого смысла в отношении rpz.

Другие вопросы по тегам