Назад | Перейти на главную страницу

Есть ли ограничения в использовании GeoIP с bind9

У меня есть 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 без дополнительных запросов к вашим авторитетным серверам.