Я пытаюсь настроить chrooted DNS-сервер имен в локальной сети, как это, каждый, подключенный к локальной сети, может иметь доступ к массовым виртуальным хостам, определенным для среды разработки, без необходимости вручную редактировать свои локальные / etc / hosts один за другим. Массовый виртуальный хост называется example.user.dev (VirtualDocumentRoot / home / user / example) и example.test (DocumentRoot / var / www / example).
Я все настроил, и / var / log / syslog не показывает никаких ошибок, но при проверке DNS с помощью:
хост -v example.test
Не находит хозяина. Я также не получаю ответа, используя команду dig.
dig -x example.test
; << >> DiG 9.5.1-P3 << >> -x пример
;; глобальные параметры: printcmd
;; Получил ответ:
;; - >> HEADER << - код операции: QUERY, статус: NXDOMAIN, id: 47844
;; флаги: qr rd ra; ЗАПРОС: 1, ОТВЕТ: 0, АВТОРИТЕТ: 1, ДОПОЛНИТЕЛЬНО: 0;; РАЗДЕЛ ВОПРОСА:
; example.in-addr.arpa. В PTR;; РАЗДЕЛ ВЛАСТИ:
in-addr.arpa. 600 В SOA a.root-servers.net. dns-ops.arin.net. 2010042604 1800 900 691200 10800;; Время запроса: 108 мсек.
;; СЕРВЕР: 80.58.0.33 # 53 (80.58.0.33)
;; КОГДА: 26 апр, понедельник, 11:15:53 2010
;; РАЗМЕР MSG rcvd: 107
Моя конфигурация следующая:
zone "example.test" {
type master; allow-query { any; }; file "/etc/bind/zones/master_example.test"; notify yes;
};
зона "1.168.192.in-addr.arpa" {
type master; allow-query { any; }; file "/etc/bind/zones/master_1.168.192.in-addr.arpa"; notify yes;
};
параметры{
directory "/var/cache/bind"; forwarders { 80.34.100.160; }; auth-nxdomain no; listen-on-v6 { any; };
};
$ ORIGIN example.test.
86400 долларов США
@ IN SOA example.test. root.example.test. (201004227 ; serial 28800 ; refresh 14400 ; retry 3600000 ; expire 86400 ) ; min
;
TXT "example.test, DNS-сервис"
@ IN NS example.test.
локальный хост 127.0.0.1
пример.тест. А 192.168.1.52
пример A 192.168.1.52
www CNAME example.test.
127.0.0.1 пример localhost
192.168.1.52 пример localhost example.test
сервер имен 80.58.0.33
сервер имен 80.58.61.250
сервер имен 80.58.61.254поиск example.test
пример поиска
сервер имен 192.168.1.52
Некоторые важные изменения. Теперь у меня такая конфигурация:
поиск example.test
пример поиска
сервер имен 192.168.1.52сервер имен 80.58.0.33
сервер имен 80.58.61.250
сервер имен 80.58.61.254
127.0.0.1 пример localhost example.test 192.168.1.52 dns1.example.test
Я просто закомментировал зону обратного адреса.
$ ORIGIN example.test.
86400 долларов США
@ В SOA dns1.example.test. hostmaster.example.test. (2010042214 ; serial 21600 ; refresh 3600 ; retry 604800 ; expire 86400 ) ; min
В NS dns1.example.test.
В NS dns2.example.test.
IN A 192.168.1.52пример IN A 192.168.1.52
dns1 IN A 192.168.1.52
dns2 IN A 192.168.1.52
Пример www CNAME
А теперь выполняем:
dig example.test @ 192.168.1.52
; << >> DiG 9.5.1-P3 << >> example.test @ 192.168.1.52
;; глобальные параметры: printcmd
;; Получил ответ:
;; - >> HEADER << - код операции: QUERY, статус: NOERROR, id: 53489
;; флаги: qr aa rd ra; ЗАПРОС: 1, ОТВЕТ: 1, АВТОРИТЕТ: 2, ДОПОЛНИТЕЛЬНО: 2;; РАЗДЕЛ ВОПРОСА:
; пример.тест. В;; РАЗДЕЛ ОТВЕТА:
пример.тест. 86400 IN A 192.168.1.52;; РАЗДЕЛ ВЛАСТИ:
пример.тест. 86400 IN NS dns1.example.test.
пример.тест. 86400 IN NS dns2.example.test.;; ДОПОЛНИТЕЛЬНЫЙ РАЗДЕЛ:
dns1.example.test. 86400 ИН А 192.168.1.52
dns2.example.test. 86400 IN A 192.168.1.52;; Время запроса: 1 мсек.
;; СЕРВЕР: 192.168.1.52 # 53 (192.168.1.52)
;; КОГДА: 26 апр, понедельник, 12:38:56 2010
;; РАЗМЕР MSG rcvd: 118
Итак, что должно быть моим следующим шагом вперед?
Я оставил DNS-сервер resolv.conf вот так:
сервер имен 192.168.1.52
сервер имен 80.58.0.33
сервер имен 80.58.61.250
сервер имен 80.58.61.254
и добавил адрес DNS-сервера 192.168.1.52 на любой клиентский компьютер в их resolv.conf
Таким образом я могу с каждого компьютера связаться с http: //example.test .
Должен ли я создать новую зону или использовать подстановочный знак в зоне example.test, которую я создал, чтобы иметь возможность связаться с каждым отдельным виртуальным хостом среды разработки?
В конце концов, я покинул свои зоны вот так. Одна зона для тестового виртуального хоста, а другая для массового виртуального хоста для задач разработки. Все работает так, как я хотел, быстро и с хорошей производительностью. Не знаю, есть ли лучшая конфигурация для созданной мной системы. Любые советы будут приняты во внимание.
$ ORIGIN example.test.
86400 долларов США
@ В SOA dns1.example.test. hostmaster.example.test. (2010042215 ; serial 21600 ; refresh 3600 ; retry 604800 ; expire 86400 ) ; min
@ IN NS dns1.example.test.
@ IN NS dns2.example.test.
@ IN A 192.168.1.52
www IN CNAME @
$ ORIGIN dev.
86400 долларов США
@ IN SOA dev. hostmaster.dev. (2010042215 ; serial 21600 ; refresh 3600 ; retry 604800 ; expire 86400 ) ; min
@ IN NS dev.
@ IN A 192.168.1.52
* .dev. IN A 192.168.1.52
zone "example.test" {
type master; allow-query { any; }; file "/etc/bind/zones/master_example.test"; notify yes;
};
zone "dev" {
type master; allow-query { any; }; file "/etc/bind/zones/master_dev"; notify yes;
};
зона "1.168.192.in-addr.arpa" {
type master; allow-query { any; }; file "/etc/bind/zones/master_1.168.192.in-addr.arpa"; notify yes;
};
параметры{
directory "/var/cache/bind"; allow-query { 192.168.1.0/24; localhost;}; allow-recursion { 192.168.1.0/24; localhost;}; forwarders { 80.58.0.33; 80.34.100.160; }; auth-nxdomain no; listen-on-v6 { any; };
};
Вы можете (и должны) сделать зону намного чище.
В моем примере предполагается, что service-domain.net - это домен, которым вы управляете, а затем просто ссылайтесь на него столько раз, сколько необходимо в named.conf
(Я использую сценарий, который просто берет список таких доменов и создает конфигурацию)
Попробуйте что-то вроде этого:
$TTL 86400
@ IN SOA ns.service-domain.net. hostmaster.service-domain.net. (
201004227 ; serial
28800 ; refresh
14400 ; retry
3600000 ; expire
86400 ) ; min
@ IN NS ns1.service-domain.net.
@ IN NS ns2.service-domain.net.
@ IN A 192.168.1.52
www IN CNAME @
@ IN MX 0 mail.service-domain.net.
Затем ссылайтесь на это как:
zone "example.test" {
type master;
allow-query { any; };
file "/etc/bind/zones/master_generic_zone";
notify yes;
};
zone "sample.com" {
type master;
allow-query { any; };
file "/etc/bind/zones/master_generic_zone";
notify yes;
};
Глядя на IP-адреса в вашем resolv.conf У меня такое ощущение, что ваш сервер BIND находится на 192.168.1.52. Насколько я могу судить, вы не можете указать в resolv.conf что-то вроде «для этих доменов используйте этот сервер имен». По сути, ваш сервер BIND никогда не будет опрашиваться. Как вы можете видеть в поиске по раскопкам (что неверно, он запрашивает обратную запись DNS), он пробует 80.58.0.33, который, как я предполагаю, является DNS-сервером вашего провайдера.
Вы уже настроили BIND в качестве кэширующего сервера имен с помощью параметра «пересылки», поэтому вам нужно иметь только 192.168.1.52 на клиентских компьютерах в качестве сервера имен.
Чтобы проверить, правильно ли настроен ваш BIND, попробуйте следующее:
dig example.test @192.168.1.52