Хорошо, я собираюсь заявить заранее, что этот вопрос может быть слишком сложным (количество деталей, а не сложность) для этой среды. Но я решил, что это лучшее место для начала.
Я пытаюсь настроить проект, подтверждающий концепцию, и моя конфигурация 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
// 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
// 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; };
};
$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
. 3600000 NS ns.bogustld.
ns.bogustld. 3600000 A 10.0.0.1
; End of File
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





Предполагая, что вы проверили все очевидные вещи - например, убедитесь, что основной файл конфигурации привязки является тем, что вы думаете. Во-первых, убедитесь, что те, которые, по вашему мнению, используются, являются правильными - иногда легко отредактировать файл, который находится в неправильном каталоге, и удивиться, почему изменения не замечаются.
Также вы использовали 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. Это неправильно? И я считать Я понимаю, что вы говорите о том, что имена хостов не совпадают с зонами. Сообщите мне, правильно ли я редактировал свои конфиги выше!
В порядке. Вижу, вы добавили свои конфиги. Превосходно.
Я бы изменил корневую зону следующим образом:
;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, это работает, верно (при условии, что конфигурация выше все еще на месте)?
добавьте все файлы конфигурации в конец сообщения (убрав IN A и т. д.) В противном случае невозможно будет узнать, что происходит.