Настройка DNS сервера (BIND)

Материал из ARK-HOSTER.RU | Документация хостинга
Версия от 19:47, 14 октября 2025; Admin (обсуждение | вклад) (Новая страница: «= Настройка DNS сервера (BIND) = == 1. Подготовка системы == * Войдите в систему под учетной запи…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Содержание

Настройка DNS сервера (BIND)

1. Подготовка системы

  • Войдите в систему под учетной записью с правами root или пользователя с правами sudo.
  • Убедитесь, что у вас есть доступ к серверу через SSH или консоль.

2. Установка BIND =

Установка пакета

1. Обновите список пакетов: sudo apt update

2. Установите BIND9: sudo apt install bind9 bind9utils bind9-doc

3. Запустите и включите автозапуск BIND: sudo systemctl start bind9 sudo systemctl enable bind9

Проверка установки

1. Проверьте статус сервиса: sudo systemctl status bind9

2. Проверьте, что BIND слушает на порту 53: sudo netstat -tlnp | grep :53

3. Проверьте версию BIND: named -v

3. Базовая настройка BIND =

Основная конфигурация

1. Создайте резервную копию конфигурации: sudo cp /etc/bind/named.conf /etc/bind/named.conf.backup

2. Отредактируйте основной файл конфигурации: sudo nano /etc/bind/named.conf

3. Настройте основные параметры: // Основные настройки options {

   directory "/var/cache/bind";
   recursion yes;
   allow-recursion { localnets; };
   listen-on { any; };
   listen-on-v6 { any; };
   allow-transfer { none; };
   allow-query { any; };
   forwarders {
       8.8.8.8;
       8.8.4.4;
   };
   dnssec-validation auto;
   auth-nxdomain no;
   listen-on port 53 { any; };

};

Настройка зон

1. Создайте файл зоны: sudo nano /etc/bind/named.conf.local

2. Добавьте конфигурацию зоны: // Прямая зона zone "example.com" {

   type master;
   file "/etc/bind/db.example.com";
   allow-update { none; };

};

// Обратная зона zone "1.168.192.in-addr.arpa" {

   type master;
   file "/etc/bind/db.192.168.1";
   allow-update { none; };

};

4. Создание зон =

Создание прямой зоны

1. Создайте файл зоны: sudo nano /etc/bind/db.example.com

2. Добавьте содержимое: $TTL 604800 @ IN SOA ns1.example.com. admin.example.com. (

                             1         ; Serial
                        604800         ; Refresh
                         86400         ; Retry
                       2419200         ; Expire
                        604800 )       ; Negative Cache TTL

@ IN NS ns1.example.com. @ IN NS ns2.example.com. @ IN A 192.168.1.10 ns1 IN A 192.168.1.10 ns2 IN A 192.168.1.11 www IN A 192.168.1.10 mail IN A 192.168.1.10 ftp IN A 192.168.1.10

Создание обратной зоны

1. Создайте файл обратной зоны: sudo nano /etc/bind/db.192.168.1

2. Добавьте содержимое: $TTL 604800 @ IN SOA ns1.example.com. admin.example.com. (

                             1         ; Serial
                        604800         ; Refresh
                         86400         ; Retry
                       2419200         ; Expire
                        604800 )       ; Negative Cache TTL

@ IN NS ns1.example.com. @ IN NS ns2.example.com. 10 IN PTR ns1.example.com. 10 IN PTR www.example.com. 10 IN PTR mail.example.com. 10 IN PTR ftp.example.com.

5. Настройка безопасности =

Настройка файрвола

1. Разрешите DNS трафик: sudo ufw allow 53/tcp sudo ufw allow 53/udp

2. Проверьте статус: sudo ufw status

Настройка доступа

1. Отредактируйте конфигурацию: sudo nano /etc/bind/named.conf.options

2. Добавьте настройки безопасности: options {

   directory "/var/cache/bind";
   recursion yes;
   allow-recursion { 192.168.1.0/24; 10.0.0.0/8; };
   listen-on { 192.168.1.10; };
   allow-transfer { 192.168.1.11; };
   allow-query { 192.168.1.0/24; 10.0.0.0/8; };
   forwarders {
       8.8.8.8;
       8.8.4.4;
   };
   dnssec-validation auto;
   auth-nxdomain no;

};

6. Управление BIND =

Основные команды управления

  • Запуск BIND:

sudo systemctl start bind9

  • Остановка BIND:

sudo systemctl stop bind9

  • Перезапуск BIND:

sudo systemctl restart bind9

  • Проверка статуса:

sudo systemctl status bind9

  • Проверка конфигурации:

sudo named-checkconf

  • Проверка зоны:

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

Перезагрузка зон

1. Перезагрузите зону: sudo rndc reload example.com

2. Перезагрузите все зоны: sudo rndc reload

3. Проверьте статус зон: sudo rndc status

7. Мониторинг и логирование =

Настройка логирования

1. Отредактируйте конфигурацию: sudo nano /etc/bind/named.conf.local

2. Добавьте настройки логирования: logging {

   channel default_log {
       file "/var/log/bind/named.log" versions 3 size 5m;
       severity info;
       print-time yes;
       print-severity yes;
       print-category yes;
   };
   category default { default_log; };
   category queries { default_log; };

};

3. Создайте директорию для логов: sudo mkdir -p /var/log/bind sudo chown bind:bind /var/log/bind

Просмотр логов

1. Просмотрите логи BIND: sudo tail -f /var/log/bind/named.log

2. Просмотрите системные логи: sudo journalctl -u bind9 -f

3. Просмотрите логи запросов: sudo tail -f /var/log/bind/queries.log

Создание скрипта мониторинга

1. Создайте скрипт мониторинга: sudo nano /usr/local/bin/dns-monitor.sh

2. Добавьте содержимое:

  1. !/bin/bash
  1. Проверка статуса BIND

if systemctl is-active --quiet bind9; then

   echo "BIND is running"
   
   # Проверка запросов
   QUERIES=$(sudo rndc stats && grep "queries" /var/cache/bind/named.stats | awk '{print $1}')
   echo "Total queries: $QUERIES"
   
   # Проверка использования памяти
   MEMORY=$(ps aux | grep named | grep -v grep | awk '{print $6}')
   echo "Memory usage: $MEMORY KB"
   

else

   echo "BIND is not running"
   # Отправка уведомления
   echo "BIND is down" | mail -s "DNS Alert" admin@example.com

fi

3. Сделайте скрипт исполняемым: sudo chmod +x /usr/local/bin/dns-monitor.sh

8. Настройка мастер-слейв =

Настройка мастер сервера

1. Отредактируйте конфигурацию зоны: sudo nano /etc/bind/db.example.com

2. Добавьте настройки для слейв сервера: $TTL 604800 @ IN SOA ns1.example.com. admin.example.com. (

                             1         ; Serial
                        604800         ; Refresh
                         86400         ; Retry
                       2419200         ; Expire
                        604800 )       ; Negative Cache TTL

@ IN NS ns1.example.com. @ IN NS ns2.example.com. ns1 IN A 192.168.1.10 ns2 IN A 192.168.1.11

Настройка слейв сервера

1. На слейв сервере отредактируйте конфигурацию: sudo nano /etc/bind/named.conf.local

2. Добавьте конфигурацию слейв зоны: zone "example.com" {

   type slave;
   masters { 192.168.1.10; };
   file "/var/cache/bind/db.example.com";

};

9. Настройка DNSSEC =

Генерация ключей

1. Создайте KSK ключ: sudo dnssec-keygen -a RSASHA256 -b 2048 -n ZONE example.com

2. Создайте ZSK ключ: sudo dnssec-keygen -a RSASHA256 -b 1024 -n ZONE example.com

Подписание зоны

1. Подпишите зону: sudo dnssec-signzone -A -N INCREMENT -o example.com -t db.example.com

2. Обновите конфигурацию: sudo nano /etc/bind/named.conf.local

3. Добавьте настройки DNSSEC: zone "example.com" {

   type master;
   file "/etc/bind/db.example.com.signed";
   allow-update { none; };
   auto-dnssec maintain;
   inline-signing yes;

};

10. Устранение неполадок =

Частые проблемы

1. BIND не запускается:

  • Проверьте конфигурацию: sudo named-checkconf
  • Проверьте логи: sudo journalctl -u bind9
  • Проверьте права на файлы: ls -la /etc/bind/

2. Зоны не загружаются:

  • Проверьте зоны: sudo named-checkzone example.com /etc/bind/db.example.com
  • Проверьте синтаксис файлов зон
  • Проверьте права доступа к файлам

3. DNS запросы не работают:

  • Проверьте файрвол: sudo ufw status
  • Проверьте порты: sudo netstat -tlnp | grep :53
  • Проверьте настройки клиентов

Диагностика

1. Проверьте статус сервиса: sudo systemctl status bind9

2. Проверьте конфигурацию: sudo named-checkconf

3. Проверьте зоны: sudo named-checkzone example.com /etc/bind/db.example.com

4. Проверьте DNS запросы: dig @localhost example.com nslookup example.com localhost

11. Дополнительные настройки =

Настройка кэширования

1. Отредактируйте конфигурацию: sudo nano /etc/bind/named.conf.options

2. Добавьте настройки кэширования: options {

   directory "/var/cache/bind";
   recursion yes;
   allow-recursion { localnets; };
   listen-on { any; };
   forwarders {
       8.8.8.8;
       8.8.4.4;
   };
   dnssec-validation auto;
   auth-nxdomain no;
   max-cache-size 256m;
   max-ncache-ttl 3600;

};

Настройка мониторинга

1. Добавьте задачу мониторинга в crontab:

  1. Проверка DNS каждые 5 минут
  • /5 * * * * /usr/local/bin/dns-monitor.sh

12. Оптимизация производительности =

Настройки производительности

1. Отредактируйте конфигурацию: sudo nano /etc/bind/named.conf.options

2. Добавьте настройки производительности: options {

   directory "/var/cache/bind";
   recursion yes;
   allow-recursion { localnets; };
   listen-on { any; };
   forwarders {
       8.8.8.8;
       8.8.4.4;
   };
   dnssec-validation auto;
   auth-nxdomain no;
   max-cache-size 512m;
   max-ncache-ttl 3600;
   cleaning-interval 60;
   interface-interval 0;
   statistics-interval 0;

};

Мониторинг производительности

1. Создайте скрипт мониторинга: sudo nano /usr/local/bin/dns-stats.sh

2. Добавьте содержимое:

  1. !/bin/bash

echo "=== BIND DNS Server Statistics ===" echo "Server Status: $(systemctl is-active bind9)" echo "Uptime: $(systemctl show bind9 --property=ActiveEnterTimestamp --value)" echo "Memory Usage: $(ps aux | grep named | grep -v grep | awk '{print $4"%"}')" echo "CPU Usage: $(ps aux | grep named | grep -v grep | awk '{print $3"%"}')" echo "Active Connections: $(netstat -an | grep :53 | wc -l)"

3. Сделайте скрипт исполняемым: sudo chmod +x /usr/local/bin/dns-stats.sh

Заключение

DNS сервер BIND успешно установлен и настроен! Теперь вы можете предоставлять DNS услуги.

Для размещения ваших DNS серверов на надежном хостинге рекомендуем воспользоваться услугами [ARK-HOSTER.RU](https://ark-hoster.ru):

Наши специалисты помогут с настройкой DNS и обеспечением безопасности вашего сервера!