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