- Установка и настройка DNS-сервера BIND в Linux
- Установка сервера bind
- Создание файла зоны DNS
- Настройка обратной зоны
- Настройка файла конфигурации bind
- Проверка файлов зоны и конфигурации
- Проверка обратной зоны
- Запуск и перезапуск сервера bind
- Тестирование сервера bind
- Как установить и настроить DNS-сервер BIND на Linux CentOS
- Подготовка сервера
- Установка и запуск BIND
- Базовая настройка DNS-сервера
- Описание глобальных опций
- Пример глобальных настроек
- Зоны bind
- Решение проблем с помощью log-файлов
- Лог запросов
- Установка и настройка bind на Ubuntu
- Подготовка системы
- Установка и запуск
- Базовая настройка
- Создание и настройка зон
- Установка и настройка DNS-сервера BIND на CentOS в chroot-окружении
- Редактируем файл конфигурации /etc/named.conf:
- Дополнительные файлы конфигурации
- Файл /etc/named/named.internal.conf:
- Файл /etc/named/named.external.conf:
- Создаем файлы зон на основном сервере
- Внутренняя зона example.com
- Внешняя зона example.com
- Добавляем правила в iptables
Установка и настройка DNS-сервера BIND в Linux
BIND – наиболее распространенное open-source приложение, в котором реализованы протоколы DNS, предоставляющие возможность преобразования доменных имен в IP-адреса и наоборот.
Данная статья представляет собой руководство по быстрой настройке DNS-сервера в Linux при помощи BIND. Мы не будем подробно разбирать, что такое система DNS и как она работает, а сосредоточимся на примере настройки своей зоны и файла конфигурации для домена/узла с поддержкой сервисов www и электронной почты.
В нашем примере мы будем использовать следующие параметры:
IP-адрес, на котором будет установлен сервер имен: 172.31.0.122
имя домена/узла: itproffi.ru
авторитативные сервера имен для зоны itproffi.ru: ns1.itproffi.ru (172.31.1.10) и ns2. itproffi.ru (172.31.1.11)
службы www и электронной почты для itproffi.ru будут использовать адрес 172.31.1.10
Установка сервера bind
Установка bind очень проста – нужно воспользоваться менеджером пакетов. В Debian и Ubuntu выполните следующую команду:
В CentOS или Fedora:
Пакет dnsutils необязателен для запуска сервера bind, но для тестирования конфигурации мы будем пользоваться командой dig из этого пакета.
Создание файла зоны DNS
Дальнейшие примеры будут для Ubuntu/Debian, но также подходят и для Centos/RedHat, только директория с настройками зон в CentOS будет находиться в /etc/named/ , а основной файл конфигурации /etc/named.conf . Для начала нам потребуется создать новый файл зоны для домена itproffi.ru. Перейдите в директорию /etc/bind/ . создайте в ней поддиректорию zones/master/ и перейдите в нее, выполнив следующую последовательность команд:
Директория /etc/bind/zones/master будет содержать файл зоны для домена itproffi.ru. При желании можно использовать другую директорию. Файл зоны db.itproffi.ru будет содержать запись DNS, которая поможет серверу имен установить соответствие полного доменного имени IP-адресу. Создайте этот файл со следующим содержимым:
Рассмотрим ключевые строки этого файла:
- Запись SOA: авторитативный сервер имен для itproffi.ru – это ns1.itproffi.ru, адрес ответственного за зону DNS администратора – admin@itproffi.ru
- Записи NS: два сервера имен для зоны itproffi.ru – ns[1,2].itproffi.ru
- Запись MX: почтовый сервер для itproffi.ru. Число 10 означает уровень приоритета
- Записи A: A означает «адрес» (address). Другими словами, ns1 в зоне itproffi.ru будет иметь адрес 172.31.1.10
- Запись CNAME (Canonical Name – каноническое имя): привязывает одно доменное имя к другому (каноническому), например, устанавливает соответствие mail.itproffi.ru и itproffi.ru.
Настройка обратной зоны
На данном этапе DNS-сервер bind может выдать IP-адрес, связанный с узлом itproffi.ru. Теперь нам нужно научить наш сервер имен обратному процессу, то есть устанавливать соответствие имени IP-адресу. Для этого создадим еще один файл db.172.31.1 со следующим содержимым:
Запись PTR: DNS-запись, используемая для определения соответствия IP-адреса имени узла.
Настройка файла конфигурации bind
На данный момент у нас должно быть два файла:
Теперь требуется вставить имена обоих файлов зоны в файл конфигурации bind /etc/bind/named.conf.local . Для этого добавьте в файл следующие строки:
Последний момент перед проверкой конфигурации – внести в файл named.conf.options IP-адрес стабильного DNS-сервера. Он будет использоваться, если локальный DNS-сервер не будет знать ответ на запрос разрешения имени. Часто этот адрес предоставляется интернет-провайдером, но если вы поклонник Google, можно указать адрес 8.8.8.8 или 8.8.4.4.
Замените следующий блок текста в файле named.conf.options:
на блок текста с адресом стабильного DNS-сервера
Если вы планируйте что к вашему серверу будут подключаться другие компьютеры, то нужно разрешить в опциях внешние подключения. Для этого в основном файле конфигурации, в секции options добавьте или замените следующие правила
А лучше, для безопасности вместо any пропишите ваши сети с которых разрешено подключение
Если этого не сделать, то при попытке обращения к серверу с другого компьютера вы получите ошибку
Проверка файлов зоны и конфигурации
Прежде чем попытаться запустить сервер имен с новой зоной и конфигурацией, можно воспользоваться некоторыми инструментами, чтобы проверить, что конфигурация корректна и не содержит ошибок.
Для проверки файлов конфигурации выполните следующую команду:
С этой командой работает простое правило: отсутствие результата – это хороший результат. Если команда ничего не возвращает, значит ошибок в ваших файлах конфигурации не обнаружено.
Для проверки файлов зоны DNS можно воспользоваться командой named-checkzone:
Проверка обратной зоны
Запуск и перезапуск сервера bind
Теперь мы можем запускать сервер bind:
Если сервер уже был запущен, его можно перезапустить командой restart:
Для того что бы перечитать конфигурацию не перезапуская сервер, используйте команду
Тестирование сервера bind
Для тестирования новой конфигурации сервера имен bind нам пригодится команда dig из пакета dnsutils. Эту команду можно запустить на любом компьютере с сетевым доступом к вашему DNS-серверу, но лучше всего начать тестирование с локального узла. В рассматриваемом нами примере IP-адрес сервера имен 172.31.0.122. Сначала проверим прямое разрешение имени (получение IP-адреса по доменному имени):
dig @172.31.0.122 www.itproffi.ru
Теперь проверим обратную зону:
dig @172.31.0.122 -x 172.31.1.10
Если вы получили аналогичные результаты, то зона DNS настроена правильно. Вместо команды dig для тестирования можно также использовать команду nslookup.
nslookup 172.31.1.10 172.31.0.122
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Как установить и настроить DNS-сервер BIND на Linux CentOS
Что такое DNS, BIND, Linux и CentOS простыми словами. Версии используемого ПО — CentOS 7, BINВ 9.
Подготовка сервера
Устанавливаем все обновления:
Устанавливаем утилиту для синхронизации времени:
yum install chrony
Настраиваем временную зону:
timedatectl set-timezone Europe/Moscow
* в данном примере выбрано московское время.
Разрешаем и запускаем сервис для синхронизации времени:
systemctl enable chronyd —now
Открываем порт в firewall:
firewall-cmd —permanent —add-port=53/udp
И перечитываем настройки сетевого экрана:
Установка и запуск BIND
Устанавливаем DNS-сервер следующей командой:
yum install bind
systemctl enable named
Запускаем сервис имен:
systemctl start named
И проверяем, что он работает корректно:
systemctl status named
Базовая настройка DNS-сервера
Открываем на редактирование конфигурационный файл bind:
и редактируем следующее:
* где 192.168.166.155 — IP-адрес нашего NS-сервера, на котором он будет принимать запросы; allow-query разрешает выполнять запросы всем, но из соображений безопасности можно ограничить доступ для конкретной сети, например, вместо any написать 192.168.166.0/24.
Для применения настроек выполните команду:
systemctl restart named
Для проверки работоспособности сервера с другого компьютера сети (например, на Windows) выполняем команду:
> nslookup dmosk.ru 192.168.166.155
* данной командой мы пытаемся узнать IP-адреса сайта dmosk.ru через сервер 192.168.166.155.
Должно получиться, примерно, следующее:
Описание глобальных опций
Перечисленные ниже параметры являются глобальными по отношению к DNS и всем настроенным зонам. Они задаются в конфигурационном файле named.conf, директиве options <>.
Опции | Описания |
---|---|
directory | Указывает рабочий каталог сервера bind. Если не указан, /var/named |
forwarders | Перечисляет серверы, на которые будет переведен запрос, в случае, если наш сервер не сможет его обработать (нет соответствующей зоны.) |
forward | Переопределяет способ обработки запроса. Принимает два значения — ONLY или FIRST. Первое указывает на то, что сервер не будет пытаться искать совпадения среди локальных зон. Второе — сервер сначала будет перенаправлять запрос и если он не будет успешно обработан, искать соответствия во внутренней базе. |
listen-on | На каких интерфейсах будет слушать bind |
allow-transfer | Указание на список серверов на которые будут разрешены зонные передачи (репликация на вторичные NS) |
allow-query | Список узлов, с которых разрешено обращаться к серверу. Если не задана, разрешено всем. |
allow-notify | Перечисленным серверам разрешает отправку уведомлений об изменениях в настройках зоны. |
allow-recursion | Задает список хостов, для которых разрешены рекурсивные запросы, остальным — будут разрешены итеративные. Если не задана, для всех рекурсивно. |
Пример глобальных настроек
Зоны bind
Для возможности искать соответствия в собственной базе доменов, необходимо создать и настроить зоны. Существуют следующие типы зон:
- Первичная, она же master, она же локальная. База, которая пополняется и редактируется на текущем сервере. Подробнее как настроить первичную зону bind.
- Вторичная или slave. База копирует настройки с первичной зоны на другом сервере. Подробнее как настроить вторичную зону bind.
- Заглушка или stub. Хранит у себя только записи NS, по которым все запросы переводятся на соответствующие NS-серверы.
- Кэширующая или hint. Не хранит на сетбе никаких записей — только результаты уже обработанных запросов для ускорения ответов на повторные обращения.
Решение проблем с помощью log-файлов
По умолчанию, сервер Bind под CentOS хранит логи в файле /var/named/data/named.run.
Для его непрерывного просмотра вводим следующую команду:
tail -f /var/named/data/named.run
Степень детализации логов можно настроить в конфигурационном файле:
logging <
channel default_debug <
file «data/named.run»;
severity dynamic;
>;
>;
* где file — путь к log-файлу; severity — уровень чувствительности к возникающим событиям. Возможны следующие варианты для severity:
- critical — критические ошибки.
- error — ошибки и выше (critical).
- warning — предупреждения и выше. Предупреждения не говорят о наличии проблем в работе сервиса, однако это такие событтия, которые могут привести с ошибкам, поэтому не стоит их игнорировать.
- notice — уведомления и выше.
- info — информация.
- debug — отладка (подробный лог).
- dynamic — тот же debug.
Напротив, чтобы отключить ведение лога, в конфигурационном файле должна быть настройка:
После изменения конфигурационного файла перезапускаем сервис:
systemctl restart named
Лог запросов
Если мы хотим также видеть в логе все запросы, которые приходят на bind, в командной строке вводим:
Источник
Установка и настройка bind на Ubuntu
Для примера, используется Ubuntu Server 16.04 LTS. Инструкция во многом подойдет для дистрибутивов Linux, основанных на Debian.
Подготовка системы
Если в системе настроен брандмауэр, добавляем правило на разрешение входящих пакетов на 53 UDP-порт:
iptables -I INPUT 1 -p udp —dport 53 -j ACCEPT
* данной командой мы вставляем первое правило на разрешение 53 порта по протоколу UDP.
Установка и запуск
Устанавливаем DNS-сервер следующей командой:
apt-get install bind9 dnsutils
Добавляем сервис в автозапуск:
systemctl enable bind9
* или для старых систем, где нет systemd update-rc.d bind9 defaults.
systemctl start bind9
* или service bind9 start.
Проверяем, что сервис работает:
nslookup dmosk.ru 127.0.0.1
Получаем, что-то на подобие:
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: dmosk.ru
Address: 90.156.242.197
Базовая настройка
Основной конфигурационный файл находится по пути /etc/bind/named.conf. В последних версиях bind в нем ничего не настраивается, а используются подключаемые файлы.
По умолчанию, сервер разрешает только локальные запросы. Чтобы разрешить обращаться к серверу, открываем конфигурационный файл:
И добавляем строку:
* в данном примере будут разрешены запросы для всех клиентов (внутренних и внешних). Вместо any можно прописать конкретные сети или IP-адреса.
Если необходимо настроить сервер только для локальной сети, настройка будет следующей:
* где 192.168.0.0/24 — используемая локальная сеть.
Если необходимо перенаправлять запросы на определенный сервер DNS, добавляем строку:
* в данном примере запросы будут перенаправляться на сервер 77.88.8.8 и если они не будут обработаны — на 8.8.8.8.
systemctl restart bind9
* или service bind9 restart.
На этом базовая настройка закончена. Наш сервер готов принимать и отдавать запросы и работать, как кэширующий dns.
Проверить его работу можно с удаленного компьютера Windows или Linux командой:
nslookup ubuntu.com 192.168.0.15
* где 192.168.0.15 — адрес сервера в локальной сети.
Создание и настройка зон
Если необходимо, чтобы bind разрешал записи для собственного домена, необходимо создать соответствующую зону.
Источник
Установка и настройка DNS-сервера BIND на CentOS в chroot-окружении
В статье рассказывается, как настроить DNS-сервер BIND в CentOS. Сервис будет работать в изолированном chroot-окружении, использовать разные зоны для внутренних и внешних клиентов (view).
- зона example.com (обслуживают два сервера)
- master-сервер: ns1.example.com, внешний ip:62.220.58.71, внутренний ip:172.16.0.1
- slave-сервер: ns2.example.com, внешний ip:62.220.58.72, внутренний ip:172.16.0.2
- локальная сеть: 172.16.0.0/22
Вначале установим сам сервис и необходимые утилиты:
# yum install bind-chroot bind-utils
Подготовим chroot-каталог, запустив специальный скрипт:
# /usr/libexec/setup-named-chroot.sh /var/named/chroot on
Укажем параметр для использования chroot
Редактируем файл конфигурации /etc/named.conf:
Мы описали два «вида» (view) — в internal будут попадать запросы из внутренней сети: match-clients < "local-subnet"; >;
и для них будет подгружаться конфиг /etc/named/named.internal.conf, все остальные попадут в external:
для них отключена рекурсия и добавятся зоны из конфига /etc/named/named.external.conf.
Для удобства создадим символьную ссылку:
# ln -s /etc/named.conf /etc/named/named.conf
Дополнительные файлы конфигурации
Файл /etc/named/named.internal.conf:
Файл /etc/named/named.external.conf:
Описание зоны example.com на дополнительном (slave) сервере будет таким:
Создаем файлы зон на основном сервере
Для начала подготовим папки для храниения зон:
# mkdir /var/named/external && mkdir /var/named/internal # chown named:named /var/named/internal && chown named:named /var/named/external # chmod 770 /var/named/internal && chmod 770 /var/named/external # ln -s /var/named/internal /etc/named/internal && ln -s /var/named/external /etc/named/external
Внутренняя зона example.com
Зона для локальных клиентов храниться в файле /var/named/internal/example.com.zone:
Внешняя зона example.com
Зона example.com для внешних клиентов храниться в файле /var/named/external/example.com.zone:
TXT-запись в нашем случае имеет тип spf и определяет кто, может посылать письма от зоны example.com. Эта запись очень важна, крупные почтовые сервера типа GMail могут посчитать вашу почту спамом, из-за отсутствия данной записи.
Проверяем зоны на ошибки:
# named-checkzone example.com /var/named/external/example.com.zone # named-checkzone example.com /var/named/internal/example.com.zone
Добавляем сервер в автозагрузку и запускаем
# chkconfig named on # service named start
Укажем сервер в качестве основного DNS-сервера в сетевых настройках:
Добавляем правила в iptables
DNS-сервер работает на 53 порту UDP, а для передачи зон использует 53 порт TCP. Отвечать на запросы будет всем, но передавать зону только slave-серверу, по локальной сети.
# iptables -A INPUT -p udp —dport 53 -j ACCEPT -m comment —comment «dns-query» # iptables -A INPUT -s 172.16.0.2 -p tcp —dport 53 -j ACCEPT -m comment —comment «dns-transfer»
Источник