Установка и настройка DNS сервер BIND
Статья рассказывает об установке и настройке BIND в качестве публичного ДНС сервера для обслуживания ваших доменов.
Вариантов настройка ДНС сервера довольно много и у статьи нет цели рассмотреть все варианты, поэтому тут рассматривает один частный случай чаще всего встречающийся на хостингах
Исходные данные:
- Нужно делегировать обслуживание вашего доменного имени youname.ru на собственный ДНС сервер
- Для делегирования обязательно наличие двух ДНС серверов (master и slave), желательно независимых
- Как минимум подойдет один ДНС сервер на машине с двумя IP адресами (рассматриваем этот случай)
- Локальная машина и сеть использует этот ДНС сервер как рекурсивный кэширующий ДНС сервер
Установка
Для установки bind в Gentoo Linux выполните:
emerge net-dns/bind
Для большей безопасности bind можно поместить в chroot окружение, делается это очень просто - достаточно выполнить:
emerge net-dns/bind --config
Настройка
Основной конфигурационный файл - /chroot/dns/etc/bind/named.conf 1) или /etc/bind/named.conf. В нём следует внести следующие изменения:
nano /chroot/dns/etc/bind/named.conf
options { directory "/var/bind"; // Если планируете использовать bind как ДНС сервер для локальной машины // активируйте следующие две опции forward first; // Замените IP адресса на ДНС сервера вашего провайдера forwarders { 89.111.176.254; 89.111.172.1; }; listen-on-v6 { none; }; // Дополните список IP адресами вашего сервера listen-on { 127.0.0.1; 1.22.333.444; 4444.333.22.1; }; // Разрешить обрабатывать ДНС отовсюду allow-query { any; }; // По-умолчанию выключаем рекурсивные запросы recursion no; // if you have problems and are behind a firewall: //query-source address * port 53; pid-file "/var/run/named/named.pid"; }; // ------------- Представление для внутреннего использования (на локальной машине и локальной сети) ------------- view "internal" { // IP адреса считающиеся внутренними match-clients { 127.0.0.1; 10.0.0.0/8; 192.168.0.0/24; }; // включить рекрсивные запросы recursion yes; // Стандартные настройки зон zone "." IN { type hint; file "named.ca"; }; zone "localhost" IN { type master; file "pri/localhost.zone"; allow-update { none; }; notify no; }; zone "127.in-addr.arpa" IN { type master; file "pri/127.zone"; allow-update { none; }; notify no; }; // Зона вашего домена zone "youname.ru" { type master; file "/etc/bind/pri/youname.ru.zone"; }; }; // ------------- Внешнее представление ------------- view "public" { match-clients { any; }; // Выключить рекурсивные запросы recursion no; // Зона вашего домена zone "youname.ru" { type master; file "/etc/bind/pri/youname.ru.zone"; }; };
Теперь создадим само описание зоны youname.ru:
nano /chroot/dns/etc/bind/pri/youname.ru.zone
$TTL 7200 ; Время жизни кэша по умолчанию 2 часа @ IN SOA ns1.youname.ru. admin.youname.ru. ( 2010070601 ; серийный номер (YYYYMMDDrr) 7200 ; обновлять каждые 2 часа 1800 ; повторно (30 минут) 604800 ; полное устаревание (1 неделя) 7200 ; минимальный TTL (2 часа) ) NS ns1.youname.ru. NS ns2.youname.ru. ; Основной IP адрес A 1.22.333.444 ; ДНС сервера ns1 A 1.22.333.444 ns2 A 4444.333.22.1 ; IP дня поддомена www www A 1.22.333.4444 ; Для всех остальных поддоменов IP как для www * CNAME www
Теперь можно запустить bind и проверить его работу:
/etc/init.d/named start rc-update add named default
Проверка локально:
dig @127.0.0.1 youname.ru ANY
Внешняя проверка:
dig @1.22.333.4444 youname.ru ANY dig @444.333.22.1 youname.ru ANY
Все запросы должны отдать одинаковый результат соответствующие описанной зоне.
Если всё верно то теперь можете делегировать ваш домен указав следующие параметры для ДНС сервера:
ns1.youname.ru 1.22.333.4444 ns2.youname.ru 4444.333.22.1
Делегирование может занять несколько часов из-за кэширования.
Так же локальные машины можно настроить на использование вашего ДНС сервера. Для этого в gentoo изменить следующий конфиг:
nano /etc/resolv.conf
// Для машины с ДНС сервером: nameserver 127.0.0.1 // Для машин в локальной сети: nameserver 1.22.333.4444 nameserver 4444.333.22.1
Дополнительная информация
Ссылки:
Тема настройки ДНС очень обширна и без чтения дополнительной документации не обойтись. Если есть вопросы пишите в комментарии.
Обсуждение
ошибка:: view "internal" {
там нужна еще ; правильно будет так view "internal" {
Спасибо, исправлено.
Во-первых строках своего письма хотел бы сказать огромное спасибо за столь полезный сайт! Вопрос: а если есть 2 сервера с реальными IP адресами? Каким образом нужно изменить конфигурацию? Там как я понимаю должен быть первичный (master) и вторичный (slave) сервера?
Да, забыл, и не плохо было бы про spf ещё упомянуть… Спасибо!
За расшифровку и примеры view - огромное спасибо !!! ПОМОГЛО!!!
Спасибо огромное! Очень полезный сайт!
При запуске выдало такую ошибку.. Что делать то?
start-stop-daemon: failed to start `/usr/sbin/named'
Смотреть логи
Поменяй путь к файлу в zone "." на тот который стоит по стандарту при установке пакета.
Всем привет!
Есть проблемы с настройкой Bind9. Есть 2 DNS сервера в локальной сети (один на Ubuntu, др. на Win2008), со своими зонами. Оба DNS знают только о своих зонах. Есть так же компы у которых прописаны свои DNS.
Задача: Заставить Bind опрашивать DNS на Win2008 при отсутствии записи у себя.