Добро Пожаловать  Ru.Board
 

Навигация
  • Главная
  • Форум
  • Темы
  • Топ лист
  • Файловый архив

  • Реклама





    Проголосуй!
    Статьи на какие темы вы бы желали видеть на нашем сайте?

    Системное администрирование Windows
    Администрирование *nix систем
    Обзоры пользовательского программного обеспечения
    Вебмастеринг: тонкости сайтостроения
    Вебмастеринг: юзабилити сайтов
    Вебпрограмминг: полезные решения
    Linux-системы: вопросы по работе
    Вопросы по аппаратной части компьютеров
    Обзоры программ для администраторов
    Компьютерная безопасность (для пользователей)
    Компьютерная безопасность (для администраторов)
    Другое


    Результаты
    Другие Опросы

    голосов: 16198

    Избранное
  • Установка Php-Nuke
  • Установка IkonBoard на локалхосте



    Форум по движку IkonBoard V.2

    Файловый архив для вебмастеров: полезные скрипты

    Форум по операционным системам: Linux, Windows, Mac

  • Поиск по сайту




    В помощь сисадмину: Кеширующий DNS сервер для локальной сети на основе BIND 9
    Опубликовал Zmey 16.06.2004 17:42

    В помощь сисадмину
    Этот документ описывает установку и начальную конфигурацию пакета BIND 9 для работы в качестве кэширующего DNS сервера для локальной сети.


    Было решено использовать 9-ю версию пакета BIND, так как она наименее уязвима для внешних атак. BIND 9 поддерживает списки управления доступом для запросов, передачи зоны, а также динамических обновлений. Кроме того, этой версией поддерживается стандарт динамических обновлений и уведомления об изменениях зоны, она может использовать механизм инкрементальной передачи зоны, позволяющий вторичным DNS серверам запрашивать у первичных серверов только изменения зональных данных. Это позволяет ускорить передачу зон.

    В качестве ОС на сервере установлена FreeBSD 4.10.
     

    Получение, сборка и установка пакета BIND из исходных кодов

    На момент написания статьи последней стабильной версией BIND 9 являлась 9.2.3.
    Исходные коды BIND 9.2.3 доступны для загрузки с публичного FTP сервера: ftp://ftp.isc.org/isc/BIND9/9.2.3/bind-9.2.3.tar.gz.

    Итак.

    Создаем директорию, где будет проходить весь процесс:

    # mkdir /usr/local/src
    # cd /usr/local/src

    Скачиваем дистрибутив с FTP сервера ftp.isc.org:

    Распаковываем, и заходим в полученную папку:

    # tar -xzf bind-9.2.3.tar.gz
    # cd bind-9.2.3

    Мы хотим что бы наш BIND 9 стал вместо штатного BIND 8.

    # ./configure --prefix=/usr --sysconfdir=/etc/namedb

    Далее, если конфигурация прошла успешно, приступаем к сборке пакета:

    # make
    # make install

    На моей системе (FreeBSD 4.10) все собралось и установилось без каких-либо проблем.

    Проверяем версию named которая у нас теперь стоит:

    # named -v
    BIND 9.2.3

    Пусть вас не пугает, что мы устанавливаем BIND, а для проверки запускаем named. Так называется исполняемый файл, который, собственно говоря, и выполняет роль DNS сервера.

    На этом первый этап нашей затеи окончен, BIND 9 скомпилирован и установлен в вашей системе, можно порадоваться за себя. :)
     

    Установка BIND 9 из портов FreeBSD

    Если порты у вас обновляются регулярно, то переходим в соответствующую директорию:

    # cd /usr/ports/dns/bind9

    Если не регулярно, то, вероятно, ваш BIND 9 нужно искать здесь:

    # cd /usr/ports/net/bind9

    Если портов у вас совсем нет, то устанавливайте BIND 9 из исходных кодов (см. выше).

    Итак делаем следующие шаги.
    Переходим в каталог BIND9 в ваших портах и компиллируем BIND 9:

    # cd /usr/ports/dns/bind9
    # make PORT_REPLACES_BASE_BIND9=yes install

    Данная операция необходима для того, чтобы BIND 9 был установлен вместо штатного BIND 8.
    Система сама скачает дистрибутив, распакует, сконфигурирует и установит.
    После того, как закончится установка, предлагаю убедиться, что теперь у вас установлен именно BIND 9:

    # named -v
    BIND 9.2.3

    На этом установка BIND 9 закончена, теперь можно переходить к конфигурированию и запуску. :)

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

    Начальное конфигурирование и запуск BIND 9

    Если у вас был установлен BIND 8, который идет в поставке с системой, то, вероятно, в папке /etc/namedb вы найдете файл конфигурации bind и некоторые дополнительные файлы, которые могут понадобиться для работы BIND. Если таких файлов у вас нет, никогда не было, и вы не знаете, где их взять, придется писать их с нуля. Я, например, нашел эти файлы в исходных кодах системы /usr/src/etc/namedb/.
    Если вы обнаружили у себя соответствующие файлы, внимательно делайте необходимые правки в них. Будьте особенно осторожны, если вы решились писать конфигурационные файлы с нуля.

    Итак, сначала создадим самый главный файл - файл конфигурации. Возьмите свой любимый текстовый редактор и создайте новый файл с именем named.conf. Содержание у него будет примерно такое:

    # cat named.conf 
    
    // Первой строкой задаем сети, которым будет разрешено
    //посылать запросы через наш DNS-сервер:
    acl "corpnets" { 192.168.1.0/24; 192.168.2.0/24; 127.0.0.1; };
    options {
    // Рабочая директория: 
       directory "/etc/namedb";  
    // Pid файл создавать тоже в рабочей директории, хотя можно
    // написать любую другую, например /var/run/named/named.pid: 
       pid-file "named.pid";            
    // Разрешаем посылать запросы только от тех сетей, которые мы
    // указали выше:
       allow-query { "corpnets"; };
       };
    // Указатели корневых серверов: 
       zone "." { 
           type hint; 
           file "named.root"; }; 
    // Настраиваем обратное отображение
    // для адреса 127.0.0.1: 
       zone "0.0.127.in-addr.arpa" { 
           type master; 
           file "localhost.rev"; 
           notify no; }; 
    

    С файлом named.conf пока все. Теперь нужно создать файлы, на которые мы ссылаемся в named.conf, а именно: named.root и localhost.rev.
    Файл named.root скачиваем c FTP-сервера ftp.internic.net:

    Желательно периодически повторять эту процедуру или настроить на автоматическое обновление через cron.

    Файл localhost.rev можно написать вручную, а можно воспользоваться специальной утилитой make-localhost, которая находится в исходных кодах системы: /usr/src/etc/namedb/make-localhost.

    Выглядит он примерно так:

    # cat localhost.rev
    
    ;       From: @(#)localhost.rev 5.1 (Berkeley) 6/30/90
    ; $FreeBSD: src/etc/namedb/PROTO.localhost.rev,v 1.6 2000/01/10 15:31:40 peter Exp $
    ;
    ; This file is automatically edited by the 'make-localhost' script in
    ; the /etc/namedb directory.
    ;
    
    $TTL    3600
    
    @       IN      SOA     zm.domain.com. root.zm.domain.com.  (
                                    20040603        ; Serial
                                    3600            ; Refresh
                                    900             ; Retry
                                    3600000 ; Expire
                                    3600 )          ; Minimum
            IN      NS      zm.domain.com.
    1       IN      PTR     localhost.domain.com.
    
    

    С файлом localhost.rev тоже закончили.

    Теперь можно попробовать запустить и проверить наш bind:

    # named
    # ps -ax|grep named

    Если процес запущен и работает, пробуем послать запрос через наш DNS-сервер:

    # dig @127.0.0.1 ya.ru

    В ответ на этот запрос мы должны получить некий положительный ответ, например:

    # dig @127.0.0.1 ya.ru
    
    ; <<>> DiG 9.2.1 <<>> @127.0.0.1 ya.ru
    ;; global options:  printcmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36843
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 0
    
    ;; QUESTION SECTION:
    ;ya.ru.                         IN      A
    
    ;; ANSWER SECTION:
    ya.ru.                  36000   IN      A       213.180.193.123
    
    ;; AUTHORITY SECTION:
    ya.ru.                  36000   IN      NS      ns1.yandex.ru.
    ya.ru.                  36000   IN      NS      ns2.yandex.ru.
    ya.ru.                  36000   IN      NS      ns3.yandex.ru.
    ya.ru.                  36000   IN      NS      ns.ispm.ru.
    
    ;; Query time: 2639 msec
    ;; SERVER: 127.0.0.1#53(127.0.0.1)
    ;; WHEN: Sun Jun 13 22:28:50 2004
    ;; MSG SIZE  rcvd: 122
    

    Если ответа нет, идем смотреть логи системы в /var/log/messages, читаем, что нам пишет наш bind, и пытаемся понять, с чем это может быть связано.
    Надеюсь, вы догадаетесь при необходимости настроить соответствующим образом ваш фаервол для работы DNS-сервера.

    Если положительный ответ получен, значит ваш DNS-сервер работает и теоретически может обслуживать вашу сеть :)

    Теперь давайте настроим ваш компьютер на работу с установленным DNS-сервером. Для этого необходимо внести изменения в файл /etc/resolv.conf. Выглядеть он будет примерно следующим образом:

    # cat /etc/resolv.conf 
    # Ваш домен
    domain domain.com 
    # IP адрес либо 127.0.0.1 либо адрес вашей машины 
    nameserver 127.0.0.1
    

    Проверяем, обращается ли ваша машина к установленному DNS-серверу:

    # nslookup yandex.ru
    Server:  localhost.domain.com
    Address:  127.0.0.1
    Non-authoritative answer:
    Name:    yandex.ru
    Address:  213.180.216.200
    

    Если получен ответ, аналогичный тому, что вы видите выше, значит, обращение происходит успешно.

    С целью уменьшения трафика от вашего DNS сервера имеет смысл указать ему адреса DNS серверов вашего провайдера. В этом случае при попытке резольвинга DNS имени ваш DNS сервер будет сначала обращаться к кэшу на сервере провайдера.

    Для этого необходимо добавить в наш файл конфигурации (named.conf) опцию forwarders.
    В секции options добавляем следующую строку:

    forwarders { 195.5.45.17; };

    Не забудьте изменить IP адрес на адрес DNS сервера вашего провайдера.

    Секция options в файле конфигурации должна выглядеть вот так:

       options {
            directory "/etc/namedb";           // Working directory
            pid-file "named.pid";              // Put pid file in working dir
            allow-query { "corpnets"; };
            forwarders { 195.5.45.17; };
    };
    

    После изменения файла конфигурации необходимо перестартовать named, для чего можно воспользоваться командой:

    # killall -HUP named

     

    Настройка DNS-сервера для работы с утилитой удаленного администрирования rdnc

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

    Чтобы решить эту задачу, нам необходимо создать файл конфигурации для утилиты rndc.conf и добавить несколько строк в конфигурационный файл нашего сервера.
    Копируем содержимое файла /usr/sbin/rndc-confgen в файл /etc/namedb/rndc.conf, который будет служить конфигурационным файлом для утилиты rndc:

    # /usr/sbin/rndc-confgen > /etc/namedb/rndc.conf

    В результате выполнения этой команды мы получим файл rndc.conf примерно следующего содержания:

    # Начало файла rndc.conf 
    # Start of rndc.conf
    key "rndc-key" {
            algorithm hmac-md5;
            secret "SW8ldl5IOMfhvlqxyRuRVw==";
    };
    options {
            default-key "rndc-key";
            default-server 127.0.0.1;
            default-port 953;
    };
    # Конец файла rndc.conf 
    # Начало секции для named.conf 
    # Для использования ключа авторизации необходимо добавить следующие строки в файл 
    # named.conf, при необходимости исправив список разрешенных для авторизации хостов: 
    key "rndc-key" { 
    algorithm hmac-md5; 
    secret "SW8ldl5IOMfhvlqxyRuRVw=="; 
    }; 
    
    controls { 
    inet 127.0.0.1 port 953 
    allow { 127.0.0.1; } keys { "rndc-key"; }; 
    }; 
    #Конец секции для named.conf 
    
    Теперь нужно добавить в самое начало файла конфигурации DNS сервера (named.conf) следующую секцию файла rndc.conf:

    key "rndc-key" {
          algorithm hmac-md5;
          secret "SW8ldl5IOMfhvlqxyRuRVw==";
    };
    controls {
          inet 127.0.0.1 port 953
                  allow { 127.0.0.1; } keys { "rndc-key"; };
    };
    
    После этого можно перезапустить named:

    # killall -HUP named

    Давайте проверим, работает ли наша утилита для удаленного администрирования DNS сервера:

    # rndc status
    number of zones: 3
    debug level: 0
    xfers running: 0
    xfers deferred: 0
    soa queries in progress: 0
    query logging is OFF
    server is up and running
    

    Если выполнение данной команды прошло успешно, и вы получили примерно то, что получилось выше, значит утилита смогла подключиться к вашему named, успешно авторизовалась при помощи ключа, который мы создали, и попросила показать статус DNS сервера.

    При помощи утилиты rndc можно делать очень много различных операций с вашим DNS сервером. Запустите ее без аргументов и увидите список доступных команд. :)

     

    На этом установка и конфигурация вашего DNS сервера закончена. После ее окончания должен получиться DNS сервер, который может обслуживать вашу локальную сеть, использовать кэш DNS-сервера провайдера для оптимизации распознания имен Интернет и поддерживает удаленное управление при помощи утилиты rndc.

     

    В следующей части статьи мы рассмотрим такие темы, как:

    1. Настройка DNS сервера для поддержки домена.
    2. Повышение безопасности DNS сервера.
    3. Параметры в файле доменной зоны.
     

    Автор: Дмитрий Донченко.

    Огромное спасибо всем кто помогал написать эту статью. Отдельное спасибо bm-у, моему лучшему другу и коллеге, который высматривал очепятки и неправильности в том, что я тут насочинял.

    КомментироватьВерсия для печати

     
    Категории
  • В помощь сисадмину
  • Все о софте
  • Вебмастеру
  • Игры
  • Hardware
  • О сайте
  • Программирование
  • Операционные системы
  • IkonBoard
  • InvisionBoard
  • Скрипты в примерах
  • Php-Nuke
  • Цифровое изображение
  • Юмор

  • Ссылки по теме
  • Ещё о В помощь сисадмину
  • Новости от Zmey


    Популярная статья в категории В помощь сисадмину:

    Групповые политики Active Directory



  • This web site was made with PHP-Nuke