Ubuntu Server | Установка и настройка DNS сервера

Продолжая серию статей по настройке сервера на Ubuntu, переходим к настройке DNS сервера. На данный момент у меня установлен Ubuntu сервер и настроен DHCP для автоматической раздачи IP адресов.

Что такое DNS рассказывать не буду, целью написания статьи не служит разжевывание самой сути DNS, а только установка и настройка. В двух словах, DNS — это система доменных имен, служит для получения IP адреса по имени компьютера. В связи с историческим расширением сети, стало неудобно пользоваться только IP адресами. Да и не упомнишь его с первого раза. Для этих целей и была придумана DNS.

И так, начнем! Для начала поднимем права до root

su -

Установим Bind (Это собственно и есть сам DNS сервер)

aptitude install bind9

Теперь нам следует сгенерировать ключ для обновления DNS записей

dnssec-keygen -a HMAC-MD5 -b 128 -r /dev/urandom -n USER DHCP_UPDATER

Выводим сгенерированный ключ на экран

cat Kdhcp_updater.*.private|grep Key

Должно показать что то вроде

Key: 4GD8OIb8pZk4vAueACAfUQ==

Перепишите и сохраните этот ключ, в последующей настройке нам он еще понадобится.

Настраиваем Bind9

Открываем конфигурационный файл

nano /etc/bind/named.conf.options

добавляем в уже имеющийся код, следующее

forwarders {
8.8.8.8;
};

listen-on {
127.0.0.1;
192.168.10.1;
};

Что это значит:

forvarders - вышестоящий DNS сервер, используется для переадресации запроса в случае если URL не найден в вашей базе (8.8.8.8  DNS google)

listen-on - адреса которые будут обслуживаться нашим DNS сервером (локалхост и сетевая карта смотрящая в локальную сеть)

В общем файл named.conf.options должен выглядеть вот так:

options {
directory «/var/cache/bind»;

// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113

// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0′s placeholder.

// forwarders {
// 0.0.0.0;
// };

auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };

forwarders {
8.8.8.8;
};

listen-on {
127.0.0.1;
192.168.10.1;
};

};

Редактируем файл name.conf.local

nano /etc/bind/named.conf.local

Добавляем туда следующий код:

key DHCP_UPDATER {
 algorithm HMAC-MD5.SIG-ALG.REG.INT;
 secret "4GD8OIb8pZk4vAueACAfUQ=="; 
};
zone "example.net" IN {
     type master;
     file "/var/lib/bind/forward.db";
     allow-update { key DHCP_UPDATER; };
};
zone "10.168.192.in-addr.arpa" IN {
     type master;
     file "/var/lib/bind/reverse.db";
     allow-update { key DHCP_UPDATER; };
};

Что это значит:

key DHCP_UPDATER — информация о ключе, который мы с вами записывали (в кавычки вам нужно вписать свой ключ)

zone «example.net» — информация о зоне использования DNS, указан тип — master, путь к файлу хранения данных зоны, обновления файла разрешено с использованием ключа.

zone «10.168.192.in-addr.arpa» — создание зоны обратного просмотра

Теперь создадим сами файлы в которых будут храниться данные зоны example.net

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

nano /var/lib/bind/forward.db

добавим в него следующий код:

$TTL 86400      ;       1 day
example.net.    IN      SOA     srv.example.net. admin.example.net. (
20110103        ; Serial
10800           ; Refresh
3600            ; Retry
604800          ; Expire
86400           ; Minimum TTL
)

IN      NS      srv.example.net.
IN      A       192.168.10.1
localhost       IN      A       127.0.0.1
srv01           IN      A       192.168.10.1

Рассмотрим подробнее… Зона example.net, в которой есть DNS сервер SRV с IP адресом 192.168.10.1.

Остальные записи будут создаваться DHCP сервером в автоматическом режиме.

Теперь нам нужно создать файл зоны обратного просмотра reverse.db

nano /var/lib/bind/reverse.db

Пишем туда следующее:

$TTL 86400      ;       1 day
example.net.                       IN                SOA              srv01.example.net.            admin.example.net.    (
20110103                             ; Serial
10800                                    ; Refresh
3600                                       ; Retry
604800                                 ; Expire
86400                                    ; Minimum TTL
)

IN               NS            srv01.example.net.
IN               A              192.168.10.1
localhost                             IN               A              127.0.0.1
srv01                                    IN               A              192.168.10.1

Надеюсь все понятно…

Сохраняем, закрываем, перезапускаем Bind

/etc/init.d/bind9 restart

теперь нам нужно указать суфиксы локальной DNS в файле /etc/resolv.conf

nano /etc/resolv.conf

добавляем в начало файла:

domain example.net
search example.net
nameserver 127.0.0.1

Сохраняем, закрываем, перезапускаем сеть:

/etc/init.d/networking restart

Проверяем определился ли наш сервер

nslookup srv

в ответ увидим что то вроде этого

root@srv:~# nslookup srv
Server: 127.0.0.1
Address: 127.0.0.1#53

Name: srv.example.net
Address: 192.168.10.1

отлично! Работает

Теперь займемся настройкой динамического обновления зон DHCP сервером

В первую очередь внесем изменения в конфигурационный фал DHCP

nano /etc/dhcp/dhcpd.conf

и поменяем option domain-name с example.org на example.net (подразумевается что настройка DHCP производилась по моей статье)

также в файл вносим следующее

ddns-update-style interim;
update-static-leases on;
key DHCP_UPDATER {
algorithm hmac-md5;
secret «4GD8OIb8pZk4vAueACAfUQ==»;
}

zone example.net. {
primary 127.0.0.1;
key DHCP_UPDATER;
}

zone 10.168.192.in-addr.arpa. {
primary 127.0.0.1;
key DHCP_UPDATER;
}


в поле secret вам нужно внести свой ключ, полученный ранее.

в общем увас должно получиться такое

ddns-update-style interim;
update-static-leases on;
key DHCP_UPDATER {
algorithm hmac-md5;
secret «4GD8OIb8pZk4vAueACAfUQ==»;
}

zone example.net. {
primary 127.0.0.1;
key DHCP_UPDATER;
}

zone 10.168.192.in-addr.arpa. {
primary 127.0.0.1;
key DHCP_UPDATER;
}

subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.10 192.168.10.254;
option domain-name-servers 192.168.10.1;
option domain-name «example.net»;
option routers 192.168.10.1;
option broadcast-address 192.168.10.255;
default-lease-time 604800;
max-lease-time 604800;
}

Больше нам ничего не нужно менять.

Перезапускаем DNS сервер

/etc/init.d/bind9 restart

Перезапускаем DHCP сервер

/etc/init.d/isc-dhcp-server restart

Проверяем что у нас получилось

Включаем клиентский ПК, в нашем случае это машина с winXP на борту, которая находится в локальной сети с сервером.

выполняем запрос

nslookup test1

(test1 — имя машины)

в ответ должны увидеть следующее

здесь мы видим что машина получила IP адрес от DHCP сервера и имя от DNS сервера. Значит все нормально работает.

А так же вы можете посмотреть другие статьи из этой серии:

1. Установка Ubuntu Server, первоначальная настройка

2. Установка и настройка DHCP сервера на Ubuntu Server

3. Установка и настройка DNS сервера на Ubuntu Server

4. Установка и настройка прокси сервера SQUID

5. Настройка контент-фильтра Dansguardian для работы с SQUID

6. Установка и настройка почтового сервера

7. Установка и настройка FTP сервера

8. Установка и настройка WEB сервера

9. Настройка управления сервером через вэб интерфейс (WEBMIN)

  • Vladimir

    Как настроить dns сервер если он на ubuntu вместе с lamp подключен через роутер ?
    Возможно ли ето?

  • http://vk.com/greeshan greeshan

    до момента nslookup srv все настроил по вашей инструкции, на чистую ubuntu, но на этом моменте не выдает никакой информации о доменном имени и тд, ошибка Got SERVFAIL reply from 127.0.0.1, trying next server

    • yoskirukato

      Что то вы сделали не так. Сервер не видит себя как DNS

      • greeshan

        Сделал все строго по инструкции, единственное у меня одна сетевая карта, eth0, для нее я прописал настройки как у вашей eth1. Dhcp работает и запускается. Bind запускается.

  • http://efimrus.ru Aleksey Efimov

    Здраствуйте!

    Прошу помощи.

    Как можно настроить BIND при условии: Имеется локальная сеть (без интернета, внешних DNS сеть не видет).

    Стоит маршрутизатор Mikrotik (DHCP, Hotspot). Hotspot перенаправляет клиентов на локальный Web-сайт (www-сервер).

    Проблема в том что, Hotspot без DNS сервера работает только с запросами IP-адресами (в браузерах клиентов). По запросам от клиентов в браузере типа google.ru вылетает ошибка о недоступности страницы, тоесть Hotspot такие запросы без DNS обратки игнорирует.

    Как научить BIND, при отсутствии интернета, подменять любой запрос хоть google.ru, хоть пупкин.рф припарковывал IP моего веб-сервера?

    Схемка ниже / / /

  • Сергей

    Здравствуйте. Делаю всё по инструкции. После того, как создали зону прямую и обратную, нужно перезапустить Bind. Так вот. Он не запускается. просто пишет fail. куда смотреть?