bind "не могу найти пример: SERVFAIL"
Я пытаюсь настроить DNS-сервер в своей локальной сети, потому что мой маршрутизатор не поддерживает отражение nat, и у меня есть виртуальные хосты, которым требуется домен (не может быть достигнут по IP-адресу), работающий на Apache. Я не очень знаком с файлами зон, но думаю, что я на правильном пути. Мой домен - tenex.us, и я хочу получить доступ к нему по локальной сети, используя tenex.local (с соответствующим vhost, добавленным в apache). DNS-сервер работает, поскольку он разрешает и кэширует другие адреса, включая tenex.us, но я получаю
сервер не может найти tenex.local: SERVFAIL
Я назвал.conf следующим образом
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
zone "tenex.local" IN {
// this is the authoritative server for
// tenex.us info
type master;
file "db.tenex";
};
и db.tenex следующим образом
$TTL 86400
@ IN SOA ns1.tenex.local. craig.tenex.local. (
2014120705
28800
7200
864000
86400
)
IN NS ns1
IN NS ns2
@ IN A 10.1.1.2
ns1 IN A 10.1.1.2
ns2 IN A 10.1.1.2
www IN CNAME @
dev IN CNAME @
ftp IN CNAME @
и named.conf.options следующим образом (другие файлы являются установочными файлами по умолчанию с 6/6/14)
acl clients {
10.1.1.0/24;
10.1.2.0/24;
localhost;
localnets;
};
options {
directory "/var/cache/bind";
recursion yes;
allow-query { clients; };
forwarders {
8.8.8.8;
8.8.4.4;
};
forward only;
dnssec-validation yes;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
Я не эксперт по DNS, но вот как я думаю, что это работает. Поправь меня, если я ошибаюсь, это мне очень поможет.
- Я запрашиваю сервер для tenex.local,
- Он видит, что для tenex.local указана зона, а затем возвращает содержимое файла зоны для этой записи на устройство, которое ее запросило.
- Устройство видит, что авторизующим сервером имен является ns1.tenex.local и что текущий адрес совпадает с адресом записи A ns1.tenex.local в файле зоны (10.1.1.2), поэтому он (должен) разрешить запись A для www.tenex.local/tenex.local/dev.tenex.local/ и т. д.
1 ответ
Я считаю, что для того, чтобы написать простоns1 IN A ...
вместоns1.tenex.local. IN A ...
ты должен определить$ORIGIN tenex.local.
в вашем файле зоны. То же самое должно относиться и к@
символ.
См. также BIND — зона не загружена из-за ошибок.