Я настраиваю локальный DNS только для передачи (bind9) сервер. Имейте следующую конфигурацию:
options {
directory "/var/cache/bind";
recursion yes; /* So that server could answer queries about domains its is not authoritative for. */
allow-query { homeclients; };
forwarders {
8.8.8.8;
8.8.4.4;
};
forward only;
dnssec-enable yes;
dnssec-validation yes;
auth-nxdomain no; # conform to RFC1035
listen-on port 53 {
127.0.0.1;
192.168.1.33;
};
listen-on-v6 { any; };
};
Но когда я делаю:
dig @127.0.0.1 ubuntu.com +trace
Я добираюсь:
; (1 server found)
;; global options: +cmd
. 3600000 IN NS J.ROOT-SERVERS.NET.
...
. 3600000 IN NS K.ROOT-SERVERS.NET.
;; Received 811 bytes from 127.0.0.1#53(127.0.0.1) in 0 ms
ubuntu.com. 3600 IN A 91.189.94.40
;; Received 55 bytes from 192.33.4.12#53(C.ROOT-SERVERS.NET) in 1 ms
выройте получает ее информацию от локального, связывают экземпляр, который, согласно моей конфигурации, должен передать все запросы серверам DNS Google. Но это также просит базироваться серверы...
Почему сервер DNS только для передачи просит 'базироваться' серверы?Спасибо.
Я думаю, что Вы неправильно понимаете способ, которым на самом деле работает режим трассировки dig. При рассмотрении страницы справочника dig Вы получаете следующую информацию:
+[no]trace
Toggle tracing of the delegation path from the root name servers
for the name being looked up. Tracing is disabled by default. When
tracing is enabled, dig makes iterative queries to resolve the name
being looked up. It will follow referrals from the root servers,
showing the answer from each server that was used to resolve the
lookup.
If @server is also specified, it affects only the initial query for
the root zone name servers.
Особенно последняя часть проясняет, это dig +trace @server
спросит сервер о корневых серверах имен, и затем вступит во владение и выполнит итерации серверов имен следующего уровня сам.
Однако я понимаю Ваше удивление - я должен был посмотреть оно сам ;)