Проблемы с внутренней конфигурацией DNS

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

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

Поле 1 будет авторитетным для адресов в домене box1.bogus, а поле 2 будет авторитетным для адресов в домене box2.bogus. Блок 3 будет действовать как внутренний корень и как сервер TLD для домена фальшивка.

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

  • У меня есть файл подсказок в блоках 1 и 2, который содержит одну запись NS для определения NS корневой зоны. Кроме того, существует запись А, которая переводит 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; };
};

/ var / с именем / master / root

$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

/ var / named / master / фиктивный

$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 + trace itchy.bogus

; <<>> 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 + trace itchy.bogus

; <<>> 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

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

Richard Harrison 22.10.2008 02:16
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
5 550
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

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

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

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

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

На каждом из трех серверов должен быть один и тот же файл подсказок. Он должен иметь запись 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.

Чисто как грязь? :)

У меня нет файла подсказок на «корневом сервере имен», поскольку в нем есть определение для root. Это неправильно? И я считать Я понимаю, что вы говорите о том, что имена хостов не совпадают с зонами. Сообщите мне, правильно ли я редактировал свои конфиги выше!

JT. 22.10.2008 04:41

В порядке. Вижу, вы добавили свои конфиги. Превосходно.

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

;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 для серверов имен для делегированных зон, но в вашем случае будет проще гарантировать, что любая данная обслуживаемая зона имеет делегирования только для подзон И хосты в текущей зоне.

Ответ принят как подходящий

Используя @, вы определяете 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, это должно работать правильно.

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

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

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

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

;; 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

Мой внутренний корневой ящик (фиктивный)

; <<>> 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, но ни одну из моих внутренних машин?

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

При использовании обычных корневых ссылок в Интернете вам более или менее запрещено использовать собственный внутренний корневой каталог, потому что ни один из реальных корневых серверов Интернета не знает о «подделке».

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

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

... Правильно ли я понял вопрос? Не уверена.

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

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

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

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

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

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

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