У меня есть DNS-сервер (BIND 9.10.3-P4-Ubuntu) на машине Ubuntu 16.04. У меня есть домен с двумя записями A (IP1, IP2), которые указывают на два отдельных веб-сервера (Wserver1, Wserver2). Я хочу, чтобы DNS-сервер отвечал на запросы страны A с IP1 и других с IP2. Я создал файл с именем GeoIP.acl и включил его в конфигурации привязки, а также добавил свои записи A в связанные файлы службы привязки.
named.conf:
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.default-zones";
include "/etc/bind/GeoIP-AA.acl";
named.conf.options:
options {
recursion no;
// Put files that named is allowed to write in the data/ directory:
directory "/var/cache/bind";
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
allow-query { any; };
};
logging {
channel default_log {
file "/var/log/named/named.log" versions 5 size 128M;
print-time yes;
print-severity yes;
print-category yes;
severity warning;
};
channel query_log {
file "/var/log/named/query.log";
severity debug 3;
print-severity yes;
print-time yes;
};
category queries { query_log; };
category default { default_log; };
category general { default_log; };
};
named.conf.default-зоны
view "Country A" {
match-clients { AA; };
recursion no;
additional-from-cache no;
zone "test.com" IN {
type master;
file "/var/cache/bind/test-AA.com.db";
allow-update { none; };
allow-query { any; };
notify yes;
};
view "Other" {
match-clients { any; };
recursion no;
additional-from-cache no;
zone "test.com" IN {
type master;
file "/var/cache/bind/test.com.db";
allow-update { none; };
allow-query { any; };
notify yes;
};
GeoIP-AA.acl:
acl "AA" {
x1.x2.0.0/16;
y1.y2.0.0/22;
z1.z2.0.0/22;
w1.w2.0.0/8;
};
test-AA.com.db имеет IP1 как запись A, а test.com.db имеет IP2 как запись A. Я надеюсь, что с этими конфигурациями все клиенты из страны A получат IP1, а другие клиенты получат IP2 в качестве IP-адреса сайта. Кажется, все работает нормально, за исключением того, что я видел в журналах несколько IP-адресов, которые перенаправляются не с того клиента! Я имею в виду, что когда я проверяю журналы веб-сервера Wserver2, я вижу некоторые IP-адреса, которые находятся в диапазонах IP-адресов GeoIP-AA.acl и получили IP2 в качестве IP-адреса веб-сайта. Файл GeoIP-AA.acl содержит 6000 записей. Интересно узнать, есть ли ограничения на использование списков контроля доступа GeoIP с bind9? Я думаю, что все диапазоны IP-адресов не проверяются в Bind или происходит что-то еще, например, ограничение количества записей ACL. Любая помощь приветствуется
Для меня кажется, что ваша конфигурация в порядке и точно соответствует, например. то view
пример предложения от Zytrax Пункт просмотра DNS BIND.
Не сосредотачивайтесь на журналах веб-сервера и прекратите сравнивать их со своим ACL:
TTL
секунд, поэтому не ждите немедленных результатов.Вместо этого отладьте, добавив более подробный протоколирование к вашему BIND, а именно к категории queries
.
logging {
channel queries_file {
file "/var/log/named/queries.log" versions 3 size 5m;
severity debug 6;
print-time yes;
print-severity yes;
};
category queries { queries_file; };
}
Если вы видите, что какой-либо из запросов попадает в ваше представление ACL, вероятно, он работает. Вы можете убедиться в этом, случайным образом проверив соответствие запросов view "Other"
нет IP-адресов, соответствующих вашему ACL, и наоборот. Нет никаких задокументированных ограничений на размер ACL и нет причин верить в это.
В настоящее время (из комментариев) около 25% ваших DNS-запросов попадают в view "Country A"
, что кажется очень разумным. Вы не должны думать, что статистика на уровне DNS имеет какое-либо отношение к количеству реальных клиентов веб-служб, поскольку результаты, опять же, кэшируются для TTL
. Естественно, что вы получаете больше DNS-запросов из стран, где у вас меньше клиентов, потому что клиенты разделены между несколькими интернет-провайдерами, в то время как одна страна имеет менее рекурсивные DNS-серверы. После того, как рекурсивный DNS-сервер кэширует запись, многие клиенты могут запрашивать ее во время TTL
без дополнительных запросов к вашим авторитетным серверам.