Наверх

Простая настройка DNS сервера BIND9 на Debian 7 Wheezy

Рассмотрим ситуацию, когда в локальной сети есть один роутер, один сервер на Debian, который должен отвечать на запросы по определенному доменному имени как внутри сети, так и извне, и выполнять роль name-сервера, а также некоторое количество "клиентских" устройств (компьютеры под управлением Windows, планшеты, смартфоны).

Пусть:

IP адрес роутера 192.168.1.1
IP адрес сервера 192.168.1.10
Имя домена localdomain.net

Для решения данной задачи настроим сервер таким образом, чтобы при обращении по доменному имени внутри сети он отвечал по локальному адресу.

Для начала установим необходимые пакеты.

sudo apt-get -y install  bind9 dnsutils

Теперь отредактируем файл /etc/bind/named.conf.options

sudo nano /etc/bind/named.conf.options

Приведём его к следующему виду:

    acl mynetwork {192.168.1.0/24; 127.0.0.1; };
    options {
        directory "/var/cache/bind";
        auth-nxdomain no;
        forwarders {192.168.1.1; 8.8.8.8; };
        listen-on-v6 { none; };
        allow-query { mynetwork; };
    };

Опция acl ограничивает адреса, которые могут запрашивать зоны с нашего сервера. В данном примере это разрешено подсети 192.168.1.0/24.

allow-query { mynetwork; }; - список тех, кто имеет право запрашивать  информацию. Можно ограничить с помошью acl либо установить allow-query { any; };

forwarders {192.168.1.1; 8.8.8.8; }; - это DNS провайдера, или любые другие, у которых можно получить информацию о доменахб неизвестных Вашему серверу.

Настройка зон

Отредактируем файл /etc/bind/named.conf.local:

sudo nano /etc/bind/named.conf.local

Добавляем в него файлы наших зон (зону прямого просмотра и зону обратного просмотра):

zone "localdomain.net" {
    type master;
    file "/etc/bind/db.localdomain.net";
};
 
zone "1.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/1.168.192.in-addr.arpa.zone";
};

Зона прямого просмотра

Создадим файл для зоны прямого просмотра.

sudo nano /etc/bind/db.localdomain.net

Со следующим содержимым:

$TTL 30
$ORIGIN localdomain.net.
 
@ IN SOA localdomain.net. admin.localdomain.net. (
    2015020301 ; Serial
            1d ; Refresh
            1h ; Retry
            1w ; Expire
            2h ; Negative Cache TTL
    )
 
@   IN   NS   localdomain.net.
@   IN   NS   ns.provider.org.
@   IN   A    192.168.1.10

Здесь:

$ORIGIN - оригинальное имя зоны
localdomain.net.  - Наш DNS-сервер (точка в конце обязательна ).
admin.localdomain.net. - email администратора сервера, где вместо символа @ используется точка.
Serial - серийный номер зоны в формате ГГГГММДД и номер текущего изменения за этот день. (Важно, при каждом изменении, нужно редактировать этот номер увеличивая его в большую сторону) Пример: 2015020301 .
Refresh - период времени с которым вторичный сервер днс обращается к основному.
Retry - период с которым вторичный сервер будет повторять попытки при неудачном обновлении.
Expire - максимальное время использования данных на вторичном сервере, после которого делается обязательное обновление.
Negative Cache TTL - время актуальности данных в кэше запросов.

Далее идут записи имён хостов с ip-адресами или псевдонимами.
ns.provider.org. - вместо этой записи можете указать NS вашего регистратора либо Free DNS сервиса.

В конце этого файла нужно обязательно оставить пустую строку!

Зона обратного просмотра

Создадим файл для зоны обратного просмотра.

sudo nano /etc/bind/1.168.192.in-addr.arpa.zone

И запишем туда следующее:

1.168.192.in-addr.arpa. 10800 IN SOA localdomain.net. admin.localdomain.net. (
          2015020301 ; Serial
                  1d ; Refresh
                  1h ; Retry
                  1w ; Expire
                  2h ; Negative Cache TTL
          )
 
     NS    localdomain.net.
10   PTR   localdomain.net.

В этом файле должны быть только записи типа PTR. В конце этого файла так же должна быть пустая строка. Число 10 - это последний октет в IP адресе нашего сервера.

Например, можно добавить, допустим, в первый файл такую строку:

router   IN    A    192.168.1.1

А во второй такую:

1    PTR     router.localdomain.net.

Тогда по адресу router.localdomain.net в браузере будет открываться web-интерфейс роутера (эквивалентно 192.168.1.1), но только внутри локальной сети.

Проверка

Проверим файлы зон на наличие ошибок командой:

sudo named-checkconf -z

Если ошибок нет, обновим информацию о зонах:

sudo rndc reload

Теперь необходимо отредактировать resolv.conf:

sudo nano /etc/resolv.conf

Приводим его в следующий вид:

domain localdomain.net
search localdomain.net
nameserver 192.168.1.10
nameserver 192.168.1.1

Проверку можно сделать двумя командами:

nslookup localdomain.net
nslookup 192.168.1.10

Которые должны выдать cледующий результат:

Имя:   localdomain.net
Address: 192.168.1.10

Последние штрихи

    • Если DHCP у вас раздает роутер, не забудьте установить выдаваемые по умолчанию DNS сервера 192.168.1.10 и 192.168.1.1
    • Проверьте корректность работы, введя в консоли Windows-машины
tracert localdomain.net
    • Если маршрут пошел сразу на адрес  192.168.1.10, значит все работает корректно. Если нет, пропробуйте очистить кэш DNS и посторить еще раз:
ipconfig /flushdns
  • Не забудьте пробросить необходимые порты на роутере.

Спасибо antizlo.blogspot.com и rtfm.co.ua

Всего отзывов: 11

  1. Барбадос

    Огромнейшее спасибо за инструкцию, в которой все расписано для «чайника», а не для спеца, который сто раз это делал. Все пошагово выполнил и без проблем сервак поднялся и заработал. Еще раз спасибо

  2. Добрый день, подскажите пжл как мне настроить работу в связке двух днс. Один установлен на WinSRV2012 на нем же домен, а второй — bind на debian 7 с синхронизацией друг с другом. ДНС на WS2012 — первичный, на debian — вторичный.

  3. Спасибо! Слава Богу все работает!
    Очень важное предложение в статье «Число 10 — это последний октет в IP адресе нашего сервера.»
    У меня, например, адрес сервера заканчивался на 100 и соответственно последний октет 100. А ни в одной статье (по крайней мере те, которіе я нагуглил) об єтом ни слова — поєтому их примері и не работают.
    Автору Респект!

  4. Да, забыл, IP router 192.168.1.1
    IP server DNS 192.168.10.201
    IP MySQL server 192.168.10.202
    IP Web server 192.168.1.203
    IP mail server 192.168.10.204

    IP адреса 192.168.10.х раздает DHCP virtualbox — создана виртуальная сеть (vboxnet0)

  5. Здравствуйте. Попробовал сделать по этому туториалу. Но нет — не пошло. При обращении к localdomain.net, открывается поисковик с сообщением о поиске этой строки в инете.

    У меня так:
    Железо: ноут DELL проапгрейденный под сервер увеличением памяти и установкой второго винта для райда.
    Параметры: ОЗУ 16Gb, ЦПУ-i5, HDD-1Tb х 2 (gibrid 8Gb-SSD, cash-64)
    Основная система — Убунту 14.04. ЛТС;
    Виртуальные через virtualbox 5.0 : 1-Debian7.2->DNS server; 2-Debian7.2->MySQL server; 3-Debian7.2->WEB server; 4-Debian7.2->MAIL server.
    Имеется 4 домена: domain1.net, domain-022.ru, domain-020.su. localdomain.net. Из них localdomain.net — должен быть локальный, и видеться только внутри локалки.
    По данному мануалу настраивал только локальный домен. И не пошло.
    Ах да, стоит роутер. что нужно прописать в роутере?

    Прошу сильно не ругаться, я еще недавно сидел в «окнах» и пришлось перейти на линь. Вот изучаем по мануалам.

    В случае, если не хотите оказать информационную помощь, отсылать к манам-жманам и иным фанам не имеет смысла — я тоже умный в другой сфере и могу тоже послать изучать чего-нить там…. ))), Хотя я еще никого не послал изучать ТОЭ (теоретические основы электротехники), чего очень часто любят делать гуру разного уровня подготовки линя.

    • Уважаемый гость, здесь на вопросы никто не ругается, а стараются по возможности и в меру сил помочь, так что пассаж про ТОЭ был, скажем, лишним. Мне, правда, не до конца понятна архитектура вашей сети. Я так понимаю, физически на одной машине вы держите разных сервера, а DHCP у вас раздает роутер.

      Перво-наперво проверьте, получают ли ваши клиентские машины в качества хотя бы одного из DNS серверов IP 192.168.10.201. Ведь если такого DNS у них не прописано, они не узнают, что localdomain.net есть в этой сети.
      Мой сервер находится по адресу 192.168.1.8, поэтому настройки DHCP на роутере выглядят вот так:

      Также, стоит проверить на той машине, которая не хочет открывать localdomain, результаты команды nslookup, а именно где оно вообще пытается искать. Попробуйте для начала, и, если не получится, пишите, попробую посоветовать что-то еще.

  6. Спасибо за туториал , нашел у вас ошибку :
    в строке
    one «localdomain.net» {
    пропущена буква «z»

    а так все завелось и работает!!! спасибо!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *