По историческим причинам у нас есть как внутренние (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
Вы можете объяснить, что я делаю не так?
Спасибо Клеменс
Это довольно поздний ответ, но на него ответили список рассылки 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 особого смысла не имеет.