Документация по ОС FreeBSD Среда, 24.04.2024, 11:00
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » DNS

Настройка bind9 [2008]

Любой уважающий себя админ обязан иметь хотя бы один ДНС сервер. Может придется домен регистрировать, может в интернет выпускать локалку, или сделать свою зону, или отдать кому-то поддомен. Мало ли что?
  Классическим ДНС сервером для unix систем является BIND (Berkley Internet Name Domain) или сокращенно named. В систему настройки ДНС исторически внеслись некоторые глупости, которые и по сей день вызывают недоумение у новичков, а потому, кто не понимает причины такого подхода, могут идти читать официальную документацию, а здесь вы видете шпаргалку, которую применяю я сам для своих нужд.

Итак, сначала установим... А вот на самом деле, named уже есть в штатной установке FreeBSD, но мы уж поставим что-нибудь посвежее, если из портов, то:


root@localhost# cd /usr/ports/dns/bind9 && make install

Либо из пакетов (что совсем просто):


root@localhost# pkg_add -r bind9

Особенностью полной сборки является утилита rndc, управляющая демоном named. А посему нам придется сгенерировать пару ключей для rndc и правильно их прописать. Поскольку named - это штатный демон для FreeBSD, то его конфиг находится в /etc/namedb (а не в /usr/local/etc/named, как обычно).

Итак запускаем rndc-confgen:



root@localhost# rndc-confgen
                                                                                    
# Start of rndc.conf
key "rndc-key" {
        algorithm hmac-md5;
        secret "zDfVVNmsufD3PYiGeXNlmw==";
};

options {
        default-key "rndc-key";
        default-server 127.0.0.1;
        default-port 953;
};
# End of rndc.conf

# Use with the following in named.conf,
# adjusting the allow list as needed:
# key "rndc-key" {
#       algorithm hmac-md5;
#       secret "zDfVVNmsufD3PYiGeXNlmw==";
# };
#
# controls {
#       inet 127.0.0.1 port 953
#       allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf


    Как мы видим нам очень просто и наглядно дают понять что именно и в какой файл мы должны вписать, так и поступаем - тупо Copy/Paste в указанные файлы. Только не забываем, конечно, убрать комментарии ('#') в начале строки в named.conf.
    Cамое время вписать в /etc/rc.conf строку:

named_enable="YES"

   После чего лучше перегрузить компьютер, но если перезагружать очень не хочется, то можно запустить его командой /usr/sbin/named -t /var/named -u bind. Если на команду rndc reload сервер реагирует адекватно, значит все в порядке.

     ДНС может использоваться следующими способами:
1. Кеширующий ДНС
2. Мастер ДНС - главный держатель зоны
3. Подчиненный ДНС - умеет скачивать доверенную зону, хранить у себя и обслуживать ДНС запросы на эту зону.

   Итак наш named.conf:



#Это вносится от rndc-confgen
key "rndc-key" {
algorithm hmac-md5;
secret "zDfVVNmsufD3PYiGeXNlmw==";
};

controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};

# В trusted вносим сервера вторичные, провайдерские, те которые могут скачивать зоны,
# то есть доверенные узлы. Остальным лишняя информация не нужна.
acl "trusted"  
   {
    192.168.0.0/24;
    127.0.0.1;
    195.196.197.198;
    195.196.197.199;
    195.94.224.129;
   };

# Описываем общие опции для всех зон:
options
    {
    directory "/etc/namedb";
    pid-file "/var/run/named/pid";
    dump-file "/var/dump/named_dump.db";
    statistics-file "/var/stats/named.stats";
    allow-transfer { trusted; };              # имеют права скачивать зону
    allow-query { any; };                     # имеют право отпралять запрос
    allow-recursion { any; };                 # не помню
    listen-on { any; };                       # слушать ip со всех интерфейсов,
    query-source address * port 53;
    auth-nxdomain yes;
    version "WinDNS 1.01";                    # Просто для прикола
    };

# как будут записываться логи
logging {
    category lame-servers { null; };
    category default { default_syslog;};
channel default_log {
        file "/var/log/dns.log";
        severity notice;
        print-time yes;
        print-category yes;
        print-severity yes;
                     };

    category queries { default_log;};
    category xfer-in { default_log; };
    category xfer-out { default_log; };
    category security { default_log; };
    category resolver { default_log; };
    category client { default_log; };
    category unmatched { default_log; };
    category default { default_log; };
    category database { default_log; };

};

# Для кеширующего ДНС-а нужна такая запись:
# должен быть файл /etc/namedb/named.root с корневыми DNS-ами
zone "."  {
    type hint;
    file "named.root";
    };

# Зона локалхоста
zone "localhost" {
    type master;
    file "localhost.zone";
    };

# описываем обратную зону для локалхоста
# для этого достаточно запустить скрипт sh /etc/namedb/make-localhost
zone "0.0.127.IN-ADDR.ARPA" {
    type master;
    file "localhost.rev";
    notify no;
    };


Файл /etc/named/localhost.zone



$ttl 1D
@       IN      SOA  dommain.ru. admin.domain.ru. (
2007110201 ;serial
108000 ;refresh
1800 ;retry
1209600 ;expiry
604800)

    IN  NS      @
    IN  A       127.0.0.1


Пояснения:

1 Строка: "$TTL 1D"  - Time To Live 1 Day. Именно со строчки TTL должен начинаться файл зоны. В противном случае named его не прочитает

2 строка: "@" (собачка :) - означает описанную зону в named.conf, в нашем случае localhost, IN  - без комментариев, SOA (start of autherity кажется) ответсвенный сервер, dommain.ru. - наш домен (обязательно с точкой), admin.domain.ru. - наше мыло (ибо собачка используется как имя зоны). Во второй строке обязательно должна присутсвовать SOA-запись .

3 строка: серийный номер для обновления. Если в зону вносятся любые изменения номер должен быть увеличен. Обычно, номер делают как ГГГГ-ММ-ДД 01-99. Благодря, такой нехитрой формуле можно гарантировать возрастающую уникальность серийного номера зоны.

4 строка: обновляться каждые 30 часов

5 строка: повтроять через полчаса

6 строка: истечение срока 1209600 сек = 2 недели

8 запись типа: "   IN NS   @" - сокращенная, полная выглядит так:
localhost.   IN    NS      @    или
@            IN    NS      @    что в сущности одно и то же из named.conf
Этой строкой мы объясняем кто будет мастер-сервером ДНС (выражение IN NS) для этой зоны. Как оказывается он сам и будет.

9 запись типа "    IN  A       127.0.0.1" тоже сокращенная, полный вариант описан чуть выше. Этой строкой мы объясняем на какой ip-адрес мы присваиваем имя localhost.

Синаксис достаточно труднопонимаемый, но принципиально несложный. Если изложено непонятно, то рекомендую почитать Handbook, написано как раз так, чтобы понял каждый.

Итак, после такого конфига у нас должен быть работающий кеширующий DNS-сервер. Пробуем:



root@localhost# rndc reload
server reload successful
root@localhost# echo "nameserver\t127.0.0.1" > /etc/resolv.conf
root@localhost# host mail.ru
mail.ru has address 194.67.57.126
mail.ru has address 194.67.57.226
mail.ru has address 194.67.57.26
mail.ru mail is handled by 10 mxs.mail.ru.


В ответ на команду "host" приходит ответ, значит наш DNS на 127.0.0.1 работает. Вообщем, кеширующий ДНС мы запустили.

Теперь самое время прописать какую-нибудь зону. Например ounix.ru - домен второго уровня, полностью принадлежит нам. Тогда в /etc/namedb/named.conf вписываем:



zone "ounix.ru" {
    type master;
    file "ounix.ru";
    allow-transfer { trusted;};
        };


   А в файле "ounix.ru" мы уже описываем нашу зону и все её поддомены, NS и MX записи:



$TTL 38400
@       IN      SOA     ns1.ounix.ru. admin.ounix.ru. (

2007102501 ;serial
108000 ;refresh
1800 ;retry
1209600 ;expiry
604800)

@       IN      NS      ns1.ounix.ru.       ; Первый (master) DNS сервер
@       IN      NS      ns2.ounix.ru.       ; Вторичный (slave) сервер зоны
@       IN      MX 10   mail.ounix.ru.      ; MX-запись на поддомен mail, опишем чуть позже
@       IN      A       195.91.211.84       ; Сама зона присваивается машине 195.91.211.84
mail    IN      A       195.91.211.84       ; поддомен mail присваеваем ip 195.91.211.84
ns1     IN      A       195.91.211.84       ; поддомен ns1 туда же
ns2     IN      A       195.94.224.129      ; а вот поддомен ns2 уйдет на другой сервер
ftp     IN      A       195.91.211.84       ; Ну далее все должно быть понятно
www     IN      A       195.91.211.84      
dark    IN      A       195.91.211.84
unix    IN      A       195.91.211.84
test    IN      A       195.91.211.84
jabber  IN      A       195.94.224.129


Хочется обратить внимание что NS и MX записи могут быть только на доменные имена, но никак не на ip адреса. Если мы пишем имя хоста полностью, обязательно ставим точку в конце, в противном случае к записи без точки добавляется имя зоны. Например, "mail" тождественно "mail.ounix.ru."
   Таким образом, мы описали зону на master-сервере DNS. А как же вторичные сервера прописывают у себя зоны? А вот так:


zone "ounix.ru" {
        type slave;
        file "slave/ounix.ru";
        masters { 195.91.211.84; };
    };


  Мы указали, что являемся подчиненным DNS сервером для этой зоны, что мастер у нас 195.91.211.84, что скачивать зону на ounix.ru надо с него, а хранить ее надо в /etc/namedb/slave/ounix.ru
    И после перезапуска BIND-а, если нигде нет ошибок, на подчиненном сервере появится копия файла зоны ounix.ru



Источник: http://www.ounix.ru/index.php?page=article&id=20
Категория: DNS | Добавил: oleg (12.04.2008) | Автор: Dark
Просмотров: 2920 | Комментарии: 1 | Рейтинг: 0.0/0 |
Всего комментариев: 1
1 Valery  
0
>> allow-recursion { any; }; # не помню
Список хостов и сетей для который сервер сам будет выяснять IP.
Т.е. опросит корневой сервер, TLD сервер (1-й уровень) и т.д пока не дойдет до сервера, отвечающего за конкретную зону. Альтернатива - транслировать запросы на DNS - сервера провайдера.
Обычно используется вместе с опцией "recursion yes;", чтобы разрешить рекурсию.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024