- IT Blog. Code Inside - https://code-inside.com -

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

Компьютерная сеть интернет

Рассмотрим ситуацию, когда в локальной сети есть один роутер, один сервер на 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

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

tracert localdomain.net
ipconfig /flushdns

Спасибо antizlo.blogspot.com [1] и rtfm.co.ua [2]