Служба доменных имен , установка dns сервера на Ubuntu

Служба доменных имен (DNS) это сервис интернет, который ставит IP адреса и полностью квалифицированные доменные имена (FQDN) в соответствие одно другому. Поэтому DNS облегчает проблему запоминания IP адресов. Компьютеры, на которых запущен DNS, называются серверами имен (name servers). Ubuntu поставляется с BIND (сервис интернет имен Беркли), наиболее распространенную программу, используемую для управления серверами имен под Линукс.

 

Установка 

В терминале введите следующую команду для установки dns:

sudo apt-get install bind9

Очень полезный пакет для тестирования и решения проблем с DNS — это пакет dnsutils. Очень часто эти инструменты уже установлены, но для проверки и/или установки dnsutils введите следующее:

sudo apt-get install dnsutils

Настройка

Существует много способов настроить BIND9. Наиболее распространенные конфигурации — это кэширующий сервер имен, первичный мастер и вторичный мастер.

  1. Когда BIND9 настроен как кэширующий сервер, он ищет ответы на запросы имени и запоминает ответ на случай, если запрос придет повторно.

  2. В качестве первичного мастера BIND9 читает данные зоны из локального файла и является ответственным за эту зону.

  3. В качестве вторичного мастера BIND9 получает данные по зоне (целиком) с другого сервера имен, отвечающего за эту зону.

Обзор

Файлы настройки DNS сохраняются в каталоге /etc/bind. Основной файл конфигурации — это /etc/bind/named.conf.

Строки include определяют имена файлов, которые содержат DNS опции. Строка directory в файле /etc/bind/named.conf.options говорит DNS где искать файлы. Все файлы, используемые BIND, будут относительными к этому каталогу.

Файл с именем /etc/bind/db.root описывает корневые сервера имен в мире. Сервера со временем меняются, поэтому файл /etc/bind/db.root должен обслуживаться сейчас и потом. Обычно это происходит в качестве обновления к пакету bind9. Секция zone определяет мастер сервер и она сохранена в файле, определяемой опцией file.

Существует возможность настроить один сервер как кэширующий сервер имен, первичный мастер и вторичный мастер одновременно. Сервер может быть началом авторизации (SOA) для одной зоны, при этом предоставляя вторичный сервис для другой. И при всем этом предоставлять кэширующий сервис в локальной сети (LAN).

Кэширующий сервер имен

По умолчанию конфигурация настраивается на работу кэширующим сервером. Все что для этого требуется — это добавить IP адреса DNS серверов вашего интернет провайдера. Просто раскомментируйте и исправьте следующее в /etc/bind/named.conf.options:

forwarders {
                1.2.3.4;
                5.6.7.8;
           };

 

Замените 1.2.3.4 и 5.6.7.8 на актуальные IP адреса серверов имен.

 

Теперь перегружаем DNS сервер для применения новой конфигурации. Наберите в терминале:

sudo service bind9 restart

Смотрите dig для информации по тестированию кэширующего DNS сервера.

linux настройка dns secondary (первичный мастер)

В этом разделе BIND9 будет настроен как dns secondary (первичный мастер) для домена example.com. Просто замените example.com на ваше FQDN (квалифицированное имя домена).

Файл прямой зоны

Для добавления DNS зоны в BIND9, что превратит его в dns secondary  , первым шагом отредактируем /etc/bind/named.conf.local:

zone "example.com" {
type master;
        file "/etc/bind/db.example.com";
};

Теперь используем существующий файл зоны в качестве шаблона для создания файла /etc/bind/db.example.com:

sudo cp /etc/bind/db.local /etc/bind/db.example.com

Редактируем новый файл зоны /etc/bind/db.example.com, заменив localhost. на FQDN нашего сервера, оставляя дополнительную «.» в конце. Заменим 127.0.0.1 на IP адрес сервера имен и root.localhost на правильный адрес email, но с «.» вместо символа «@», опять же оставляя «.» на конце. Замените комментарии для указания домена, для которого этот файл сделан.

  Базовая установка и настройка Sendmail на Ubuntu Server

Создайте A запись для базового домена example.com. Также создайте A запись для ns.example.com — сервера имен в данном примере:

;
; BIND data file for example.com
;
$TTL    604800
@       IN      SOA     example.com. root.example.com. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
        IN      A       192.168.1.10
;
@       IN      NS      ns.example.com.
@       IN      A       192.168.1.10
@       IN      AAAA    ::1
ns      IN      A       192.168.1.10

Вы должны увеличивать Serial Number каждый раз, как делаете изменения в файле зоны. Если вы делаете множественные изменения, просто увеличьте Serial на единицу один раз перед перезапуском BIND9.

Теперь вы можете добавлять DNS записи в конец файла зоны. Смотрите детали в разделе Общие типы записей.

 

Многие администраторы предпочитают использовать дату последнего редактирования в качестве Serial зоны в виде 2012010100, что соответствует формату yyyymmddss (где ss — Serial Number [за день]).

 

Как только вы произвели изменения в файле зоны, требуется перегрузить BIND9 для применения изменений:

sudo service bind9 restart

Файл обратной зоны

Теперь, поскольку зона создана и разрешает имена в IP адреса, требуется создать также обратную зону. Обратная зона позволяет DNS определять имя по IP адресу.

Редактируем /etc/bind/named.conf.local и добавляем следующее:

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

 

Замените 1.168.192 на первые три октета адресов сети, которую вы используете. Также соответственно назовите файл зоны /etc/bind/db.192. В нем должен совпадать первый октет вашей сети.

 

Теперь создаем файл /etc/bind/db.192:

sudo cp /etc/bind/db.127 /etc/bind/db.192

Далее редактируем /etc/bind/db.192, изменяя в основном те же опции, что и в /etc/bind/db.example.com:

;
; BIND reverse data file for local 192.168.1.XXX net
;
$TTL    604800
@       IN      SOA     ns.example.com. root.example.com. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns.
10      IN      PTR     ns.example.com.

Serial Number в обратной зоне также требуется увеличивать при каждом изменении. Для каждой A записи, которую вы настроите в /etc/bind/db.example.com на другой адрес, вы должны создать запись PTR в /etc/bind/db.192.

После создания файла обратной зоны перегрузите BIND9:

sudo service bind9 restart

Вторичный мастер

Поскольку первичный мастер настроен, требуется вторичный мастер для того, чтобы поддерживать домен при недоступности первичного мастера.

Для начала на первичном мастере надо разрешить передачу зоны. Добавьте опцию allow-transfer к определениям прямой и обратной зон в /etc/bind/named.conf.local:

zone "example.com" {
        type master;
file "/etc/bind/db.example.com";
        allow-transfer { 192.168.1.11; };
};

zone "1.168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/db.192";
allow-transfer { 192.168.1.11; };
};

 

Замените 192.168.1.11 на IP адрес вашего вторичного сервера имен.

 

Перезапустим BIND9 на первичном мастере:

sudo service bind9 restart

Далее, на вторичном мастере установите пакет bind9 так же, как делали на первичном. Затем отредактируем /etc/bind/named.conf.local и добавим следующие определения к прямой и обратной зонам:

zone "example.com" {
type slave;
        file "db.example.com";
        masters { 192.168.1.10; };
};        

zone "1.168.192.in-addr.arpa" {
type slave;
        file "db.192";
        masters { 192.168.1.10; };
};

 

Замените 192.168.1.10 на IP адрес вашего первичного сервера имен.

 

  Русификация Ubuntu 12.04 / 13.04

Перегружаем BIND9 на вторичном мастере:

sudo service bind9 restart

В /var/log/syslog вы сможете увидеть нечто похожее на (некоторые строки разделены для соответствия формату документа):

client 192.168.1.10#39448: received notify for zone '1.168.192.in-addr.arpa'
zone 1.168.192.in-addr.arpa/IN: Transfer started.
transfer of '100.18.172.in-addr.arpa/IN' from 192.168.1.10#53:
 connected using 192.168.1.11#37531
zone 1.168.192.in-addr.arpa/IN: transferred serial 5
transfer of '100.18.172.in-addr.arpa/IN' from 192.168.1.10#53:
 Transfer completed: 1 messages, 
6 records, 212 bytes, 0.002 secs (106000 bytes/sec)
zone 1.168.192.in-addr.arpa/IN: sending notifies (serial 5)

client 192.168.1.10#20329: received notify for zone 'example.com'
zone example.com/IN: Transfer started.
transfer of 'example.com/IN' from 192.168.1.10#53: connected using 192.168.1.11#38577
zone example.com/IN: transferred serial 5
transfer of 'example.com/IN' from 192.168.1.10#53: Transfer completed: 1 messages, 
8 records, 225 bytes, 0.002 secs (112500 bytes/sec)

 

Обратите внимание, что передача зоны произойдет только если Serial Number на первичном сервере больше значения на вторичном. Если вы хотите, чтобы первичный мастер DNS сообщал вторичному DNS серверу об изменении зоны, вы можете добавить also-notify { ipaddress; }; в /etc/bind/named.conf.local как показано в примере ниже:

zone "example.com" {
type master;
file "/etc/bind/db.example.com";
allow-transfer { 192.168.1.11; };
also-notify { 192.168.1.11; }; 
};

zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192";
allow-transfer { 192.168.1.11; };
also-notify { 192.168.1.11; }; 
};

 

 

Каталог по умолчанию для файлов неавторизованных зон — /var/cache/bind/. Этот каталог также настроен в AppArmor для разрешения доступа сервису named на запись в него. Для дополнительной информации по AppArmor смотрите AppArmor
 

Решение проблем

Этот раздел посвящен способам определения причины проблем, возникающих с DNS и BIND9.

Тестирование

 

resolv.conf

Первый шаг в тестировании BIND9 это добавление IP адреса сервера имен в список определителей сетевых имен. Первичный сервер имен должен настраиваться, как и любой другой узел сети, с двойной проверкой. Просто отредактируйте /etc/resolv.conf, добавив следующее:

nameserver192.168.1.10
nameserver192.168.1.11

 

Вам надо добавить также IP адрес вторичного сервера имен на случай недоступности первичного.

 

dig

Если вы установили пакет dnsutils, вы можете проверить свою установку используя обзорную утилиту DNS dig:

1. После установки BIND9 примените dig к интерфейсу обратной петли (loopback), чтобы убедиться, что порт 53 прослушивается. Из терминала наберите:

dig -x 127.0.0.1

Вы должны увидеть строки вывода, похожие на следующее:

;; Query time: 1 msec
;; SERVER: 192.168.1.10#53(192.168.1.10)

2. Если BIND9 настроен у вас как кэширующий сервер, используйте dig для замера времени при разрешении имени внешнего домена:

dig ubuntu.com

Обратите внимание на время в конце вывода результата команды:

;; Query time: 49 msec

После повторного вызова dig должно произойти улучшение:

;; Query time: 1 msec

ping

Теперь для демонстрации как приложения могут использовать DNS для разрешения сетевых имен используйте утилиту ping для отправки ICMP эхо-запроса. Из терминала наберите следующее:

ping example.com

Это проверит может ли сервер имен разрешить имя ns.example.com в IP адрес. Вывод команды будет напоминать следующее:

PING ns.example.com (192.168.1.10) 56(84) bytes of data.
64 bytes from 192.168.1.10: icmp_seq=1 ttl=64 time=0.800 ms
64 bytes from 192.168.1.10: icmp_seq=2 ttl=64 time=0.813 ms

named-checkzone

Хороший способ проверить ваши файлы зон — это использовать утилиту named-checkzone, установленную вместе с пакетом bind9. Эта утилита позволяет вам убедиться в корректности настроек до перезапуска BIND9 и применения изменений.

  Мониторинг трафика на Ubuntu Server в реальном времени и другие полезные мелочи

1. Для тестирования нашего файла прямой зоны из примера введите следующее в командной строке:

named-checkzone example.com /etc/bind/db.example.com

Если все настроенно верно, вы сможете увидеть вывод, похожий на:

zone example.com/IN: loaded serial 6
OK

2. Аналогично, для тестирования файла обратной зоны введите следующее:

named-checkzone 1.168.192.in-addr.arpa /etc/bind/db.192

Вывод должен напоминать следующее:

zone 1.168.192.in-addr.arpa/IN: loaded serial 3
OK

 

Serial Number вашего файла зоны может отличаться.

 

Журналирование

BIND9 имеет широкий набор доступных опций настроек журналов. Существуют две основные опции. С помощью опции channel указывается где вести журналы, а опция categoryопределяет какую информацию писать в журнал.

Если опции журналов отсутствуют, по умолчанию применяется следующее:

logging {
     category default { default_syslog; default_debug; };
     category unmatched { null; };
};

Этот раздел раскрывает как настроить BIND9 посылать отладочные сообщения, связанные с DNS запросами в отдельный файл.

1. Сначала нам надо настроить канал (channel) для определения в какой файл посылать сообщения. Редактируем /etc/bind/named.conf.local и добавляем следующее:

logging {
    channel query.log {      
        file "/var/log/query.log";
        severity debug 3; 
    }; 
};

2. Затем настраиваем категорию (category) для отправки всех DNS запросов в файл:

logging {
    channel query.log {      
        file "/var/log/query.log"; 
        severity debug 3; 
    }; 
    category queries { query.log; }; 
};

 

Обратите внимание на опцию debug, которая может принимать значения от 1 до 3. Если уровень отладки не указан, о умолчанию используется 1.

 

3. Поскольку сервис named запускается от имени bind, надо создать файл и сменить ему пользователя:

    sudo touch /var/log/query.log
    sudo chown bind /var/log/query.log

4. Перед тем как сервис named сможет писать в новый файл журнала нужно изменить профиль AppArmor. Сначала редактируем файл /etc/apparmor.d/usr.sbin.named, добавив:

/var/log/query.log w,

Затем перегружаем профиль:

cat /etc/apparmor.d/usr.sbin.named | sudo apparmor_parser -r

Дополнительную информацию по AppArmor смотрите в разделе AppArmor.

5. Теперь перегружаем BIND9 для применения изменений:

sudo service bind9 restart

Теперь вы можете увидеть файл /var/log/query.log, заполненный информацией о запросах. Это простейший пример использования опций журналирования BIND9.

 

Ссылки

 

Общие типы записей

Этот раздел покажет некоторые наиболее общие типы записей DNS.

1. A запись: Эта запись указывает IP адрес для сетевого имени (hostname).

www      IN    A      192.168.1.12

2. CNAME запись: Используется для создания псевдонима (alias) на A запись. Вы не можете создавать CNAME запись, указывающую на другую CNAME запись.

web     IN    CNAME  www

3. MX запись: Используется для определения куда должна посылаться электронная почта (email). Должна указывать на A запись, не на CNAME.

        IN    MX  1   mail.example.com.
mail    IN    A       192.168.1.13

4. NS запись: Используется для определения какие сервера поддерживают копии зоны. Должна указывать на A запись, не на CNAME. Ею определяются первичные и вторичные сервера зоны.

        IN    NS     ns.example.com.
        IN    NS     ns2.example.com.
ns      IN    A      192.168.1.10
ns2     IN    A      192.168.1.11

материал взят с help.ubuntu.ru
 

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here