Внутренние проблемы конфигурации DNS

Хорошо, я хочу заявить заранее, что этот вопрос может быть слишком сложным (количество деталей, а не сложность) для этого средства. Но я подумал, что это лучшее место для начала.

Я пытаюсь создать концептуальный проект, и моя конфигурация BIND - это мое первое большое препятствие. Я хочу настроить 3 DNS-сервера на 3 физических ящика. Ни один из этих блоков не должен разрешать публичные адреса, это только внутренний. Я прочитал, как настроить внутренние корни в (в основном) превосходной книге по 5-му изданию DNS & BIND. Но мой перевод их примера не функционален. Все IP-адреса RFC 1918 не маршрутизируются.

Ящик 1 будет доверенным для адресов в домене box1.bogus, а Ящик 2 будет доверенным для адресов в домене box 2.bogus. Блок 3 будет действовать как внутренний корень и сервер TLD для поддельных доменов.

Текущие нерешенные вопросы:

  • У меня есть файл подсказок в полях 1 и 2, который содержит одну запись NS для определения NS корневой зоны. Кроме того, есть запись A, которая переводит NS в IP-адрес корня. Если я dig . из поля 1 я получаю раздел авторизации с именем NS, а не раздел с ответом и дополнительной записью. Поэтому я не могу определить IP-адрес корневого сервера из окна 1.

  • Если я укажу /etc/resolv.conf из коробки 1 прямо на корневом сервере и сделайте dig box1.bogus Я получаю запись с ответом ns.box1.bogus и перевод в дополнительном разделе. Однако на следующей итерации (когда должен получить запись A) я получаю dig: couldn't get address for ns.box1.bogus

Очевидно, мои конфиги не верны. Я не вижу способа прикрепить их к этому сообщению, поэтому, если люди захотят пройти этот шаг за шагом, я добавлю их в комментарий к этому вопросу. В противном случае я открыт для того, чтобы перевести "оффлайн" с "парнем DNS", чтобы выяснить, где мне не хватает "." или слишком много!

Я лично думаю, что Интернет мог бы сделать с другим внутренним корневым примером, который не использует пример Movie-U.

Хорошо, если мы собираемся сделать это, то мы должны использовать конкретный пример, а? У меня есть 3 машины, настроенные на частную VLAN для тестирования этого. В качестве проверки работоспособности я соединил все свои соответствующие конфиги, сжал, когда смог, и переместил 2 из именователей. Я оставил Скретчи пока. Те же результаты, что и выше. Вот конфиги и начальные раскопки.


фиктивный

Machine Name: Bogus (I just realized I should change this...)  
Role:         Internal Root and TLD Nameserver  
IP:           10.0.0.1  
BIND:         9.5.0-16.a6.fc8  

/etc/named.conf

// Controls who can make queries of this DNS server. Currently only the
// local test bed. When there is a standardized IP addr scheme, we can have
// those addr ranges enabled so that even if firewall rules get broken, the
// public internet can't query the internal DNS.
//
acl "authorized" {
        localhost;      // localhost
        10.0.0.0/24;          // Local Test
};

options {
    listen-on port 53 {
        127.0.0.1;
        10.0.0.1;
    };
    listen-on-v6 port 53 { ::1; };
    directory   "/var/named";
    dump-file   "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";
    memstatistics-file "/var/named/data/named_mem_stats.txt";
    pid-file    "/var/run/named/named.pid";
    allow-query     { any; };
    recursion no;
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

//
// The fake root.
//
zone "." {
    type master;
    file "master/root";
    allow-query { authorized; };
};

//
// The TLD for testing
//
zone "bogus" {
    type master;
    file "master/bogus";
    allow-query { authorized; };
    allow-transfer { authorized; };
};

/ Вар / имя / хозяин / корень

$TTL    3600
.                   SOA ns.bogustld. hostmaster.internal.bogus. (
                        2008101601  ; serial
                        1H      ; refresh
                        2H      ; retry
                        14D     ; expire
                        5M )        ; minimum
;
; Fake root zone servers defined.
;
.                   NS  ns.bogustld.
ns.bogustld.        A   10.0.0.1
;
; Testing TLD
;
bogus           NS  ns1.bogus.
ns1.bogus.              A   10.0.0.1

/ Вар / имя / мастер / поддельный

$TTL 3600
@           SOA ns1.internal.bogus. hostmaster.internal.bogus. (
                2008102201  ; serial date +seq
                1H      ; refresh
                2H      ; retry
                14D     ; expire
                5M)     ; min TTL
;
            NS  ns1.internal.bogus.
;
; Auth servers
;
ns1.internal.bogus. A   10.0.0.1
;
; Customer delegations each customer 2nd level domain has it's
; own zone file.
;
;Modified to be unique nameservers in the bogus domain
itchy           NS  ns1-itchy.bogus.
ns1-itchy.bogus.    A   10.0.0.2
;
scratchy        NS  ns1-scratchy.bogus.
ns1-scratchy.bogus. A   10.0.0.3

Выход из коп.

; <<>> DiG 9.5.0-P2 <<>> .
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57175
;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;.                              IN      A

;; AUTHORITY SECTION:
.                       300     IN      SOA     ns.bogustld. hostmaster.internal
.bogus. 2008101601 3600 7200 1209600 300

;; Query time: 1 msec
;; SERVER: 10.0.0.1#53(10.0.0.1)
;; WHEN: Tue Oct 21 12:23:59 2008
;; MSG SIZE  rcvd: 88

Вывод из копания + трассировка зуд.богус

; <<>> DiG 9.5.0-P2 <<>> +trace itchy.bogus
;; global options:  printcmd
.                       3600    IN      NS      ns.bogustld.
;; Received 57 bytes from 10.0.0.1#53(10.0.0.1) in 1 ms

itchy.bogus.            3600    IN      NS      ns1-itchy.bogus.
;; Received 69 bytes from 10.0.0.1#53(ns.bogustld) in 0 ms

itchy.bogus.            3600    IN      A       10.0.0.2
itchy.bogus.            3600    IN      NS      ns1.itchy.bogus.
;; Received 79 bytes from 10.0.0.2#53(ns1-itchy.bogus) in 0 ms

зудящий

Machine Name: Itchy   
Role:         SLD Nameserver (supposed to be owner of itchy.bogus) 
IP:           10.0.0.2  
BIND:         9.5.0-16.a6.fc8  

/etc/named.conf

// Controls who can make queries of this DNS server. Currently only the
// local test bed. When there is a standardized IP addr scheme, we can have
// those addr ranges enabled so that even if firewall rules get broken, the
// public internet can't query the internal DNS.
//
acl "authorized" {
        localhost;      // localhost
        10.0.0.0/24;          // LAN Test
};

options {
    listen-on port 53 {
        127.0.0.1;
        10.0.0.2;
    };
    listen-on-v6 port 53 { ::1; };
    directory   "/var/named";
    dump-file   "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
    pid-file    "/var/run/named/named.pid";
    allow-query     { any; };
    recursion no;
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

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

zone "itchy.bogus" {
    type master;
    file "master/itchy.bogus";
    allow-query { authorized; };
    allow-transfer { authorized; };
};

/var/named/master/itchy.bogus

$TTL    3600
@       SOA     ns1.itchy.bogus. hostmaster.itchy.bogus. (
                2008102202  ; serial
                1H      ; refresh
                2H      ; retry
                14D     ; expire
                5M )        ; minimum
;
        A   10.0.0.2
        NS      ns1.itchy.bogus.
ns1     A   10.0.0.2

/var/named/master/root.hint

.                        3600000      NS    ns.bogustld.
ns.bogustld.         3600000       A    10.0.0.1
; End of File

/etc/resolv.conf

nameserver 10.0.0.2

Выход из коп.

; <<>> DiG 9.5.0-P2 <<>> .
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31291
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;.                              IN      A

;; AUTHORITY SECTION:
.                       3600000 IN      NS      ns.bogustld.

;; Query time: 0 msec
;; SERVER: 10.0.0.2#53(10.0.0.2)
;; WHEN: Tue Oct 21 17:09:53 2008
;; MSG SIZE  rcvd: 41

Вывод из копания + трассировка зуд.богус

; <<>> DiG 9.5.0-P2 <<>> +trace itchy.bogus
;; global options:  printcmd
.                       3600000 IN      NS      ns.bogustld.
;; Received 41 bytes from 10.0.0.2#53(10.0.0.2) in 0 ms

dig: couldn't get address for 'ns.bogustld': failure

8 ответов

Решение

Используя @, вы определяете itchy.bogus. Затем вы не можете переопределить его дальше в зоне с помощью линии itchy.bogus.

Попробуй это:

@       SOA     ns1.itchy.bogus. hostmaster.itchy.bogus. (
                        2008102201      ; serial
                        1H              ; refresh
                        2H              ; retry
                        14D             ; expire
                        5M )            ; minimum
;
            NS      ns1
            A       10.0.0.2
    ns1     A       10.0.0.2

Так как это файл зоны для itchy.bogus, это должно делать правильно.

Теперь мои проблемы с делегированием выглядят решенными, но я все еще испытываю проблемы с поиском root (что, я думаю, было бы очень легко).

Я думаю, что проблема связана с тем, что, когда я dig с зудящей машины я получаю авторитетную запись вместо записи ответа. Я просто не уверен, что я сделал (или не сделал), чтобы вызвать это.

Если вы "копаете [без аргументов]" с компьютера, используя типичный файл подсказок для Интернета, вы получите блок ответов для корневых серверов имен и перевод в дополнительном разделе.

если я делаю это с поддельной машины (root и TLD nameserver), я получаю

;; QUESTION SECTION:
;.                              IN      NS

;; ANSWER SECTION:
.                       3600    IN      NS      ns.bogustld.

;; ADDITIONAL SECTION:
ns.bogustld.            3600    IN      A       10.0.0.1

Если я делаю это с зудом машины, я получаю

;; QUESTION SECTION:
;.                              IN      NS

;; AUTHORITY SECTION:
.                       3600000 IN      NS      ns.bogustld.

;; Query time: 0 msec

Будет еще интереснее, если вы попробуете dig +trace .

Интернет-бокс

; <<>> DiG 9.5.0a6 <<>> +trace .
;; global options:  printcmd
.                       3005    IN      NS      C.ROOT-SERVERS.NET.
.                       3005    IN      NS      D.ROOT-SERVERS.NET.
.                       3005    IN      NS      E.ROOT-SERVERS.NET.
.                       3005    IN      NS      F.ROOT-SERVERS.NET.
.                       3005    IN      NS      G.ROOT-SERVERS.NET.
.                       3005    IN      NS      H.ROOT-SERVERS.NET.
.                       3005    IN      NS      I.ROOT-SERVERS.NET.
.                       3005    IN      NS      J.ROOT-SERVERS.NET.
.                       3005    IN      NS      K.ROOT-SERVERS.NET.
.                       3005    IN      NS      L.ROOT-SERVERS.NET.
.                       3005    IN      NS      M.ROOT-SERVERS.NET.
.                       3005    IN      NS      A.ROOT-SERVERS.NET.
.                       3005    IN      NS      B.ROOT-SERVERS.NET.
;; Received 500 bytes from 64.105.172.26#53(64.105.172.26) in 19 ms

.                       86400   IN      SOA     a.root-servers.net. nstld.verisi
gn-grs.com. 2008102201 1800 900 604800 86400
;; Received 92 bytes from 128.63.2.53#53(H.ROOT-SERVERS.NET) in 84 ms

Моя внутренняя корневая коробка (Bogus)

; <<>> DiG 9.5.0-P2 <<>> +trace .
;; global options:  printcmd
.                       3600    IN      NS      ns.bogustld.
;; Received 57 bytes from 10.0.0.1#53(10.0.0.1) in 1 ms

.                       3600    IN      NS      ns.bogustld.
;; Received 72 bytes from 10.0.0.1#53(ns.bogustld) in 0 ms

зудящий

; <<>> DiG 9.5.0-P2 <<>> +trace .
;; global options:  printcmd
.                       3600000 IN      NS      ns.bogustld.
;; Received 41 bytes from 10.0.0.2#53(10.0.0.2) in 0 ms

dig: couldn't get address for 'ns.bogustld': failure

Почему мой компьютер, подключенный к Интернету, находит SOA, а не мои внутренние машины?

Ваш сервер имен не будет использовать подсказку, чтобы дать ответы на раскопки. То есть, это не даст намек на копание в качестве ответа. Он будет настаивать на том, чтобы запросить 10.0.0.1 для bogustld. Я не думаю, что вы создали bogustld как зону, просто фальшивку.

Вы, вероятно, должны изменить ns.bogustld на ns.bogus. Дайте 10.0.0.1 имя ns.bogus.

В качестве альтернативы, вы можете добавить NS и SOA-запись в. для bogustld.

Если копать ns1.bogus. @10.0.0.2, это работает, верно (при условии, что конфигурация выше все еще на месте)?

Каждый из 3 серверов должен иметь один и тот же файл подсказок. У него должна быть запись NS для "." с именем корневого сервера и записью A для этого имени.

Корневой сервер должен иметь "." зона настроена. "." зона должна иметь "фальшивку" с записью ns для себя. Затем он должен иметь записи A для box1.bogus, идущие в box1, и box2.bogus, уходящие в box2.

Обратите внимание, что вы не должны использовать box1 и box2 как имена хостов, так и имена доменов 2-го уровня. Допустим, что вместо доменов это zone1.bogus и zone2.bogus.

Таким образом, box1 и box2 должны находиться в фиктивной зоне, дополненной записями A. zone1 и zone2 должны быть записями NS, указывающими на box1 и box2.

Ясно как грязь?:)

Как и горцы, там может быть только один.

Используя обычные корневые интернет-подсказки, вы более или менее лишены возможности использовать собственный внутренний корневой каталог, поскольку ни один из настоящих корневых серверов Интернета не знает о "фальшивых".

Ваш единственный выбор - отразить корень "." зоны изнутри вашего ".", но затем добавьте к нему "фальшивку". Это можно сделать, периодически удаляя корневую зону и выполняя некоторую обработку, чтобы добавить в нее свою пользовательскую зону.

Некоторые из альтернативных корневых провайдеров DNS делают это, но они предоставляют корневые подсказки для своих "клиентов", которые вообще не ссылаются на "настоящие" корневые серверы.

... Правильно ли я понимаю вопрос? Точно сказать не могу.

Предполагая, что вы проверили все очевидные вещи, например, убедитесь, что основной файл конфигурации bind соответствует вашим ожиданиям. Во-первых, убедитесь, что то, что, по вашему мнению, использует named, является правильным - иногда легко отредактировать файл, который находится не в том каталоге, и удивляться, почему изменения не замечены.

Также вы использовали named-checkconf и named-checkzone

Отладить связывание достаточно сложно, но без просмотра конфигурационных файлов это практически невозможно, поэтому, пожалуйста, добавьте их в исходное сообщение.

(Я добавил это как комментарий к вопросу - я написал как ответ, потому что OP здесь новый).

Копать землю. @10.0.0.1 (фальшивый) должен возвращать авторитетные записи для ".", Поскольку он действительно является авторитетным для зоны.

копать землю. @10.0.0.2 (зуд) не должен возвращать достоверные записи для '.', Поскольку это не так. Он может вернуть доверенную запись при первом запросе имени в корневой зоне, поскольку он должен извлечь и извлечь доверенную запись с заслуживающего доверия сервера. Но если вы сделаете это во второй раз, вы получите кэшированный результат, и флаг 'aa' будет сброшен.

Хорошо. Я вижу, вы изменили свои конфиги. Отлично.

Я бы изменил корневую зону таким образом:

;Should this be ns1.itchy.bogus or ns1.itchy.internal.bogus??
itchy                   NS      ns1-itchy.bogus.
ns1-itchy.bogus.    A   10.0.0.2
;
scratchy        NS      ns1-scratchy.bogus.
ns1-scratchy.bogus. A   10.0.0.3

Я думаю, что проблема в том, что вы делегируете itchy.bogus, поэтому вы не можете поместить туда имена.

Я полагаю, что серверы имен "com" ​​используют подсказки, чтобы они могли обслуживать записи A для серверов имен для делегированных зон, но в вашем случае будет проще убедиться, что любая обслуживаемая зона имеет делегирование только для подзон И хосты в текущей зоне.

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