Здравствуйте.
Настроил bind
< /etc/named.conf >
options {
listen-on port 53 { 192.168.0.0/16; 127.0.0.1; };
listen-on-v6 port 53 { none; };
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";
allow-query { 192.168.0.0/16; localhost; };
recursion no;dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";managed-keys-directory "/var/named/dynamic";
};logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};zone "zone1" IN {
type master;
file "proba.ca";
};< /var/named/proba.ca >
$TTL 60
@ 60 IN SOA invalid.invalid. invalid.invalid. 60 60 60 60 60
@ IN NS ns.example.com.
@ IN A 192.168.7.1
a2 IN A 192.168.1.1на машине < resolv.conf >
nameserver 192.168.7.1 # это комп с bind
nameserver 8.8.8.8 # DNS GoogleПробую через консоль:
$ ping ya.ru
PING ya.ru (213.180.204.3) 56(84) bytes of data.
64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=1 ttl=58 time=16.9 ms$ nslookup ya.ru
;; Got recursion not available from 192.168.7.1, trying next server
Server: 8.8.8.8
Address: 8.8.8.8#53Non-authoritative answer:
Name: ya.ru
Address: 87.250.250.203
Name: ya.ru
Address: 87.250.251.3
Name: ya.ru
Address: 93.158.134.3
Name: ya.ru
Address: 93.158.134.203
Name: ya.ru
Address: 213.180.193.3
Name: ya.ru
Address: 213.180.204.3
Name: ya.ru
Address: 77.88.21.3
Name: ya.ru
Address: 87.250.250.3Теперь пробую зайти через firefox на сайт ya.ru. Firefox отвечает "сервер не найден".
Тоже самое через lynxНикак не могу понять, почему не работает в программах?
PS: если в resolv.conf прописать первой строкой nameserver 8.8.8.8 то всё хорошо. Это я к тому что настройки firefox не при чём.
в named.conf
recursion yes
поставь.
> в named.conf
> recursion yes
> поставь.Нужно именно recursion no, для резолвинга других серверов не указанных в файле зоны используется 8.8.8.8
>> в named.conf
>> recursion yes
>> поставь.
> Нужно именно recursion no, для резолвинга других серверов не указанных в файле
> зоны используется 8.8.8.8возьмите одну или две хорошие книги по DNS и прочитайте про запросы, какие бывают
и как это работает.http://www.zytrax.com/books/dns/ch2/index.html#queries
http://www.zytrax.com/books/dns/ch7/queries.html
>> в named.conf
>> recursion yes
>> поставь.
> Нужно именно recursion no, для резолвинга других серверов не указанных в файле
> зоны используется 8.8.8.8Он и будет у вышестоящих серверов запрашивать, а для твоей сети будет кешируюшим.
> Он и будет у вышестоящих серверов запрашивать, а для твоей сети будет
> кешируюшим.Хорошо, придётся дополнить ситуацию. В одной физической сети (она же и одна логическая) две зоны днс. Компы пользующиеся зоной 1 могут выходить в интернет и видят компы в 1 сети, компы зоны 2 не могут выходить в интернет и видят только компы 2 сети. В файлах обоих зон, прописаны только адреса (имена) компов в моей сети.
Так как recursion yes allow-recursion нельзя добавлять в раздел описания зоны, то получается что таким способом нельзя одной зоне разрешить рекурсию а другой запретить. Чтобы решить ситуацию поступил так, для компов первой зоны в resolv.conf прописал 192.168.7.1 и 8.8.8.8 а для компов дторой только 192.168.7.1. Но почему-то программы (firefox lynx и другие) пользуются лишь первым сервером из resolv.conf. Об этом я уже писал...
> Так как recursion yes allow-recursion нельзя добавлять в раздел описания зоны, то получается что таким способом нельзя одной зоне разрешить рекурсию а другой запретитьможно, прочитай про acl
acl "zone1" {
192.168.1.0/24;
};acl "zone2" {
192.168.2.0/24;
};view "zone1" in {
match-clients { zone1; };
recursion yes;
additional-from-auth yes;
additional-from-cache yes;zone "." in {
type hint;
file "named.root";
};
...
}view "zone2" in {
match-clients { zone2; };
recursion no;
additional-from-auth yes;
additional-from-cache yes;zone "." in {
type hint;
file "named.root";
};
...
}
> можно, прочитай про aclПро acl в курсе, а вот про view не знаю. Почитаю, подумаю.
> Про acl в курсе, а вот про view не знаю. Почитаю, подумаю.Вот Вам вариант разрешения рекурсии только своей сети (что правильно с точки зрения безопасности):
acl "trusted" { 127.0.0.0/8; 192.168.0.0/16; };
...
options {
.....
allow-recursion { trusted;};
};То же самое касается allow-query (any для публичных доменов, естественно, trusted - для внутренних, lan, к померу), allow-transfer (тут в ACL можно записать свои вторичные ДНС), allow-query-cache (нечего всяким левым сеткам давать доступ к своему кэшу), allow-update.
всё получилось, спасибо!
И всё-таки любопытно, почему в этой ситуации программы используют только локальный сервер днс? Объясните пожалуйста
> И всё-таки любопытно, почему в этой ситуации программы используют только локальный сервер
> днс? Объясните пожалуйстаВ какой этой? Используют первый ДНС из списка, ко второму будет обращение только, если первый не ответил по таймауту
Если у тебя в resolv.conf есть записи вида
nameserver x.x.x.x
nameserver y.y.y.yи x.x.x.x на запрос имени возвращает что хост не существует, то обращения к y.y.y.y в таком случае не будет
> В какой этой? Используют первый ДНС из списка, ко второму будет обращение
> только, если первый не ответил по таймауту
> Если у тебя в resolv.conf есть записи вида
> nameserver x.x.x.x
> nameserver y.y.y.y
> и x.x.x.x на запрос имени возвращает что хост не существует, то обращения
> к y.y.y.y в таком случае не будетА почему он возвращает что хост не существует? За это отвечает какая-то опция? Что нужно сделать чтобы он поискал на первом nameserver'е и не найдя пошёл на второй?
Можно поподробнее раскрыть тему, ну или где почитать?
>[оверквотинг удален]
>> только, если первый не ответил по таймауту
>> Если у тебя в resolv.conf есть записи вида
>> nameserver x.x.x.x
>> nameserver y.y.y.y
>> и x.x.x.x на запрос имени возвращает что хост не существует, то обращения
>> к y.y.y.y в таком случае не будет
> А почему он возвращает что хост не существует? За это отвечает какая-то
> опция? Что нужно сделать чтобы он поискал на первом nameserver'е и
> не найдя пошёл на второй?
> Можно поподробнее раскрыть тему, ну или где почитать?вам сразу предложили почитать
DNS и BIND, 5-е издание
Год выпуска: 2008
Автор: Ли, Альбитц
Издательство: Символ
ISBN: 5-93286-105-3Pro DNS and BIND 10
Год: 2011
Автор: Ron Aitchison / Рон Айтчисон
Издательство: APRESS
ISBN: 978-1430230489
> Что нужно сделать чтобы он поискал на первом nameserver'е и
> не найдя пошёл на второй?Допилить dns-протокол
>> В какой этой? Используют первый ДНС из списка, ко второму будет обращение
>> только, если первый не ответил по таймауту
>> Если у тебя в resolv.conf есть записи вида
>> nameserver x.x.x.x
>> nameserver y.y.y.y
>> и x.x.x.x на запрос имени возвращает что хост не существует, то обращения
>> к y.y.y.y в таком случае не будет
> А почему он возвращает что хост не существует?- потому, что хоста может и не существовать (www.abracadabramycrazyhostname.ru существует?)
- потому что ДНС криво настроенЗа это отвечает какая-то
> опция? Что нужно сделать чтобы он поискал на первом nameserver'е и
> не найдя пошёл на второй?
> Можно поподробнее раскрыть тему, ну или где почитать?еще раз: если x.x.x.x говорит что хоста нет - значит y.y.y.y опрашиваться не будет (а чего ради, если первый доверенный ДНС уже ответ дал?). если x.x.x.x не отвечает (упал например), то будет опрошен y.y.y.y
PS
читайте рекомендации от lavr.
Всем спасибо, тему можно закрывать.