Назад | Перейти на главную страницу

Настройка сервера имен DNS для массового виртуального хоста с Bind9

Я пытаюсь настроить 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

Моя конфигурация следующая:

/etc/bind/ named.conf.local

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;

};

/etc/bind/ named.conf.options

параметры{

    directory "/var/cache/bind";  
    forwarders { 80.34.100.160; };
    auth-nxdomain no;  
    listen-on-v6 { any; };  

};

/etc/bind/zones/master_example.test

$ 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.

/ etc / hosts

127.0.0.1 пример localhost
192.168.1.52 пример localhost example.test

/etc/resolv.conf

сервер имен 80.58.0.33
сервер имен 80.58.61.250
сервер имен 80.58.61.254

поиск example.test
пример поиска
сервер имен 192.168.1.52


РЕДАКТИРОВАТЬ

Некоторые важные изменения. Теперь у меня такая конфигурация:

/etc/resolv.conf

поиск example.test
пример поиска
сервер имен 192.168.1.52

сервер имен 80.58.0.33
сервер имен 80.58.61.250
сервер имен 80.58.61.254

/ etc / hosts

127.0.0.1 пример localhost example.test 192.168.1.52 dns1.example.test

/etc/bind/ named.conf.local

Я просто закомментировал зону обратного адреса.

/etc/bind/zones/master_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

Итак, что должно быть моим следующим шагом вперед?


РЕДАКТИРОВАТЬ 2

Я оставил 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, которую я создал, чтобы иметь возможность связаться с каждым отдельным виртуальным хостом среды разработки?


РЕДАКТИРОВАТЬ 3

В конце концов, я покинул свои зоны вот так. Одна зона для тестового виртуального хоста, а другая для массового виртуального хоста для задач разработки. Все работает так, как я хотел, быстро и с хорошей производительностью. Не знаю, есть ли лучшая конфигурация для созданной мной системы. Любые советы будут приняты во внимание.

master_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 @

master_dev

$ 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

/etc/bind/ named.conf.local

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;

};

/etc/bind/ named.conf.options

параметры{

    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