Настройка DNS сервера (BIND) — различия между версиями
Admin (обсуждение | вклад) |
Admin (обсуждение | вклад) |
||
Строка 6: | Строка 6: | ||
* Убедитесь, что у вас есть доступ к серверу через SSH или консоль. | * Убедитесь, что у вас есть доступ к серверу через SSH или консоль. | ||
− | == 2. Установка BIND | + | == 2. Установка BIND == |
=== Установка пакета === | === Установка пакета === | ||
1. Обновите список пакетов: | 1. Обновите список пакетов: | ||
− | < | + | <pre>sudo apt update</pre> |
2. Установите BIND9: | 2. Установите BIND9: | ||
− | < | + | <pre>sudo apt install bind9 bind9utils bind9-doc</pre> |
3. Запустите и включите автозапуск BIND: | 3. Запустите и включите автозапуск BIND: | ||
− | < | + | <pre>sudo systemctl start bind9</pre> |
− | < | + | <pre>sudo systemctl enable bind9</pre> |
=== Проверка установки === | === Проверка установки === | ||
1. Проверьте статус сервиса: | 1. Проверьте статус сервиса: | ||
− | < | + | <pre>sudo systemctl status bind9</pre> |
2. Проверьте, что BIND слушает на порту 53: | 2. Проверьте, что BIND слушает на порту 53: | ||
− | < | + | <pre>sudo netstat -tlnp | grep :53</pre> |
3. Проверьте версию BIND: | 3. Проверьте версию BIND: | ||
− | < | + | <pre>named -v</pre> |
− | == 3. Базовая настройка BIND | + | == 3. Базовая настройка BIND == |
=== Основная конфигурация === | === Основная конфигурация === | ||
1. Создайте резервную копию конфигурации: | 1. Создайте резервную копию конфигурации: | ||
− | < | + | <pre>sudo cp /etc/bind/named.conf /etc/bind/named.conf.backup</pre> |
2. Отредактируйте основной файл конфигурации: | 2. Отредактируйте основной файл конфигурации: | ||
− | < | + | <pre>sudo nano /etc/bind/named.conf</pre> |
3. Настройте основные параметры: | 3. Настройте основные параметры: | ||
− | < | + | <pre>// Основные настройки</pre> |
− | < | + | <pre>options {</pre> |
− | < | + | <pre>directory "/var/cache/bind";</pre> |
− | < | + | <pre>recursion yes;</pre> |
− | < | + | <pre>allow-recursion { localnets; };</pre> |
− | < | + | <pre>listen-on { any; };</pre> |
− | < | + | <pre>listen-on-v6 { any; };</pre> |
− | < | + | <pre>allow-transfer { none; };</pre> |
− | < | + | <pre>allow-query { any; };</pre> |
− | < | + | <pre>forwarders {</pre> |
− | < | + | <pre>8.8.8.8;</pre> |
− | < | + | <pre>8.8.4.4;</pre> |
− | < | + | <pre>};</pre> |
− | < | + | <pre>dnssec-validation auto;</pre> |
− | < | + | <pre>auth-nxdomain no;</pre> |
− | < | + | <pre>listen-on port 53 { any; };</pre> |
− | < | + | <pre>};</pre> |
=== Настройка зон === | === Настройка зон === | ||
1. Создайте файл зоны: | 1. Создайте файл зоны: | ||
− | < | + | <pre>sudo nano /etc/bind/named.conf.local</pre> |
2. Добавьте конфигурацию зоны: | 2. Добавьте конфигурацию зоны: | ||
− | < | + | <pre>// Прямая зона</pre> |
− | < | + | <pre>zone "example.com" {</pre> |
− | < | + | <pre>type master;</pre> |
− | < | + | <pre>file "/etc/bind/db.example.com";</pre> |
− | < | + | <pre>allow-update { none; };</pre> |
− | < | + | <pre>};</pre> |
− | < | + | <pre>// Обратная зона</pre> |
− | < | + | <pre>zone "1.168.192.in-addr.arpa" {</pre> |
− | < | + | <pre>type master;</pre> |
− | < | + | <pre>file "/etc/bind/db.192.168.1";</pre> |
− | < | + | <pre>allow-update { none; };</pre> |
− | < | + | <pre>};</pre> |
− | == 4. Создание зон | + | == 4. Создание зон == |
=== Создание прямой зоны === | === Создание прямой зоны === | ||
1. Создайте файл зоны: | 1. Создайте файл зоны: | ||
− | < | + | <pre>sudo nano /etc/bind/db.example.com</pre> |
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
− | < | + | <pre>$TTL 604800</pre> |
− | < | + | <pre>@ IN SOA ns1.example.com. admin.example.com. (</pre> |
− | < | + | <pre>1 ; Serial</pre> |
− | < | + | <pre>604800 ; Refresh</pre> |
− | < | + | <pre>86400 ; Retry</pre> |
− | < | + | <pre>2419200 ; Expire</pre> |
− | < | + | <pre>604800 ) ; Negative Cache TTL</pre> |
− | < | + | <pre>;</pre> |
− | < | + | <pre>@ IN NS ns1.example.com.</pre> |
− | < | + | <pre>@ IN NS ns2.example.com.</pre> |
− | < | + | <pre>@ IN A 192.168.1.10</pre> |
− | < | + | <pre>ns1 IN A 192.168.1.10</pre> |
− | < | + | <pre>ns2 IN A 192.168.1.11</pre> |
− | < | + | <pre>www IN A 192.168.1.10</pre> |
− | < | + | <pre>mail IN A 192.168.1.10</pre> |
− | < | + | <pre>ftp IN A 192.168.1.10</pre> |
=== Создание обратной зоны === | === Создание обратной зоны === | ||
1. Создайте файл обратной зоны: | 1. Создайте файл обратной зоны: | ||
− | < | + | <pre>sudo nano /etc/bind/db.192.168.1</pre> |
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
− | < | + | <pre>$TTL 604800</pre> |
− | < | + | <pre>@ IN SOA ns1.example.com. admin.example.com. (</pre> |
− | < | + | <pre>1 ; Serial</pre> |
− | < | + | <pre>604800 ; Refresh</pre> |
− | < | + | <pre>86400 ; Retry</pre> |
− | < | + | <pre>2419200 ; Expire</pre> |
− | < | + | <pre>604800 ) ; Negative Cache TTL</pre> |
− | < | + | <pre>;</pre> |
− | < | + | <pre>@ IN NS ns1.example.com.</pre> |
− | < | + | <pre>@ IN NS ns2.example.com.</pre> |
− | < | + | <pre>10 IN PTR ns1.example.com.</pre> |
− | < | + | <pre>10 IN PTR www.example.com.</pre> |
− | < | + | <pre>10 IN PTR mail.example.com.</pre> |
− | < | + | <pre>10 IN PTR ftp.example.com.</pre> |
− | == 5. Настройка безопасности | + | == 5. Настройка безопасности == |
=== Настройка файрвола === | === Настройка файрвола === | ||
1. Разрешите DNS трафик: | 1. Разрешите DNS трафик: | ||
− | < | + | <pre>sudo ufw allow 53/tcp</pre> |
− | < | + | <pre>sudo ufw allow 53/udp</pre> |
2. Проверьте статус: | 2. Проверьте статус: | ||
− | < | + | <pre>sudo ufw status</pre> |
=== Настройка доступа === | === Настройка доступа === | ||
1. Отредактируйте конфигурацию: | 1. Отредактируйте конфигурацию: | ||
− | < | + | <pre>sudo nano /etc/bind/named.conf.options</pre> |
2. Добавьте настройки безопасности: | 2. Добавьте настройки безопасности: | ||
− | < | + | <pre>options {</pre> |
− | < | + | <pre>directory "/var/cache/bind";</pre> |
− | < | + | <pre>recursion yes;</pre> |
− | < | + | <pre>allow-recursion { 192.168.1.0/24; 10.0.0.0/8; };</pre> |
− | < | + | <pre>listen-on { 192.168.1.10; };</pre> |
− | < | + | <pre>allow-transfer { 192.168.1.11; };</pre> |
− | < | + | <pre>allow-query { 192.168.1.0/24; 10.0.0.0/8; };</pre> |
− | < | + | <pre>forwarders {</pre> |
− | < | + | <pre>8.8.8.8;</pre> |
− | < | + | <pre>8.8.4.4;</pre> |
− | < | + | <pre>};</pre> |
− | < | + | <pre>dnssec-validation auto;</pre> |
− | < | + | <pre>auth-nxdomain no;</pre> |
− | < | + | <pre>};</pre> |
− | == 6. Управление BIND | + | == 6. Управление BIND == |
=== Основные команды управления === | === Основные команды управления === | ||
* '''Запуск BIND''': | * '''Запуск BIND''': | ||
− | < | + | <pre>sudo systemctl start bind9</pre> |
* '''Остановка BIND''': | * '''Остановка BIND''': | ||
− | < | + | <pre>sudo systemctl stop bind9</pre> |
* '''Перезапуск BIND''': | * '''Перезапуск BIND''': | ||
− | < | + | <pre>sudo systemctl restart bind9</pre> |
* '''Проверка статуса''': | * '''Проверка статуса''': | ||
− | < | + | <pre>sudo systemctl status bind9</pre> |
* '''Проверка конфигурации''': | * '''Проверка конфигурации''': | ||
− | < | + | <pre>sudo named-checkconf</pre> |
* '''Проверка зоны''': | * '''Проверка зоны''': | ||
− | < | + | <pre>sudo named-checkzone example.com /etc/bind/db.example.com</pre> |
=== Перезагрузка зон === | === Перезагрузка зон === | ||
1. Перезагрузите зону: | 1. Перезагрузите зону: | ||
− | < | + | <pre>sudo rndc reload example.com</pre> |
2. Перезагрузите все зоны: | 2. Перезагрузите все зоны: | ||
− | < | + | <pre>sudo rndc reload</pre> |
3. Проверьте статус зон: | 3. Проверьте статус зон: | ||
− | < | + | <pre>sudo rndc status</pre> |
− | == 7. Мониторинг и логирование | + | == 7. Мониторинг и логирование == |
=== Настройка логирования === | === Настройка логирования === | ||
1. Отредактируйте конфигурацию: | 1. Отредактируйте конфигурацию: | ||
− | < | + | <pre>sudo nano /etc/bind/named.conf.local</pre> |
2. Добавьте настройки логирования: | 2. Добавьте настройки логирования: | ||
− | < | + | <pre>logging {</pre> |
− | < | + | <pre>channel default_log {</pre> |
− | < | + | <pre>file "/var/log/bind/named.log" versions 3 size 5m;</pre> |
− | < | + | <pre>severity info;</pre> |
− | < | + | <pre>print-time yes;</pre> |
− | < | + | <pre>print-severity yes;</pre> |
− | < | + | <pre>print-category yes;</pre> |
− | < | + | <pre>};</pre> |
− | < | + | <pre>category default { default_log; };</pre> |
− | < | + | <pre>category queries { default_log; };</pre> |
− | < | + | <pre>};</pre> |
3. Создайте директорию для логов: | 3. Создайте директорию для логов: | ||
− | < | + | <pre>sudo mkdir -p /var/log/bind</pre> |
− | < | + | <pre>sudo chown bind:bind /var/log/bind</pre> |
=== Просмотр логов === | === Просмотр логов === | ||
1. Просмотрите логи BIND: | 1. Просмотрите логи BIND: | ||
− | < | + | <pre>sudo tail -f /var/log/bind/named.log</pre> |
2. Просмотрите системные логи: | 2. Просмотрите системные логи: | ||
− | < | + | <pre>sudo journalctl -u bind9 -f</pre> |
3. Просмотрите логи запросов: | 3. Просмотрите логи запросов: | ||
− | < | + | <pre>sudo tail -f /var/log/bind/queries.log</pre> |
=== Создание скрипта мониторинга === | === Создание скрипта мониторинга === | ||
1. Создайте скрипт мониторинга: | 1. Создайте скрипт мониторинга: | ||
− | < | + | <pre>sudo nano /usr/local/bin/dns-monitor.sh</pre> |
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
− | < | + | <pre>if systemctl is-active --quiet bind9; then</pre> |
− | < | + | <pre>echo "BIND is running"</pre> |
− | < | + | <pre>QUERIES=$(sudo rndc stats && grep "queries" /var/cache/bind/named.stats | awk '{print $1}')</pre> |
− | < | + | <pre>echo "Total queries: $QUERIES"</pre> |
− | < | + | <pre>MEMORY=$(ps aux | grep named | grep -v grep | awk '{print $6}')</pre> |
− | < | + | <pre>echo "Memory usage: $MEMORY KB"</pre> |
− | < | + | <pre>else</pre> |
− | < | + | <pre>echo "BIND is not running"</pre> |
− | < | + | <pre>echo "BIND is down" | mail -s "DNS Alert" admin@example.com</pre> |
− | < | + | <pre>fi</pre> |
3. Сделайте скрипт исполняемым: | 3. Сделайте скрипт исполняемым: | ||
− | < | + | <pre>sudo chmod +x /usr/local/bin/dns-monitor.sh</pre> |
− | == 8. Настройка мастер-слейв | + | == 8. Настройка мастер-слейв == |
=== Настройка мастер сервера === | === Настройка мастер сервера === | ||
1. Отредактируйте конфигурацию зоны: | 1. Отредактируйте конфигурацию зоны: | ||
− | < | + | <pre>sudo nano /etc/bind/db.example.com</pre> |
2. Добавьте настройки для слейв сервера: | 2. Добавьте настройки для слейв сервера: | ||
− | < | + | <pre>$TTL 604800</pre> |
− | < | + | <pre>@ IN SOA ns1.example.com. admin.example.com. (</pre> |
− | < | + | <pre>1 ; Serial</pre> |
− | < | + | <pre>604800 ; Refresh</pre> |
− | < | + | <pre>86400 ; Retry</pre> |
− | < | + | <pre>2419200 ; Expire</pre> |
− | < | + | <pre>604800 ) ; Negative Cache TTL</pre> |
− | < | + | <pre>;</pre> |
− | < | + | <pre>@ IN NS ns1.example.com.</pre> |
− | < | + | <pre>@ IN NS ns2.example.com.</pre> |
− | < | + | <pre>ns1 IN A 192.168.1.10</pre> |
− | < | + | <pre>ns2 IN A 192.168.1.11</pre> |
=== Настройка слейв сервера === | === Настройка слейв сервера === | ||
1. На слейв сервере отредактируйте конфигурацию: | 1. На слейв сервере отредактируйте конфигурацию: | ||
− | < | + | <pre>sudo nano /etc/bind/named.conf.local</pre> |
2. Добавьте конфигурацию слейв зоны: | 2. Добавьте конфигурацию слейв зоны: | ||
− | < | + | <pre>zone "example.com" {</pre> |
− | < | + | <pre>type slave;</pre> |
− | < | + | <pre>masters { 192.168.1.10; };</pre> |
− | < | + | <pre>file "/var/cache/bind/db.example.com";</pre> |
− | < | + | <pre>};</pre> |
− | == 9. Настройка DNSSEC | + | == 9. Настройка DNSSEC == |
=== Генерация ключей === | === Генерация ключей === | ||
1. Создайте KSK ключ: | 1. Создайте KSK ключ: | ||
− | < | + | <pre>sudo dnssec-keygen -a RSASHA256 -b 2048 -n ZONE example.com</pre> |
2. Создайте ZSK ключ: | 2. Создайте ZSK ключ: | ||
− | < | + | <pre>sudo dnssec-keygen -a RSASHA256 -b 1024 -n ZONE example.com</pre> |
=== Подписание зоны === | === Подписание зоны === | ||
1. Подпишите зону: | 1. Подпишите зону: | ||
− | < | + | <pre>sudo dnssec-signzone -A -N INCREMENT -o example.com -t db.example.com</pre> |
2. Обновите конфигурацию: | 2. Обновите конфигурацию: | ||
− | < | + | <pre>sudo nano /etc/bind/named.conf.local</pre> |
3. Добавьте настройки DNSSEC: | 3. Добавьте настройки DNSSEC: | ||
− | < | + | <pre>zone "example.com" {</pre> |
− | < | + | <pre>type master;</pre> |
− | < | + | <pre>file "/etc/bind/db.example.com.signed";</pre> |
− | < | + | <pre>allow-update { none; };</pre> |
− | < | + | <pre>auto-dnssec maintain;</pre> |
− | < | + | <pre>inline-signing yes;</pre> |
− | < | + | <pre>};</pre> |
− | == 10. Устранение неполадок | + | == 10. Устранение неполадок == |
=== Частые проблемы === | === Частые проблемы === | ||
1. '''BIND не запускается''': | 1. '''BIND не запускается''': | ||
− | * Проверьте конфигурацию: < | + | * Проверьте конфигурацию: <pre>sudo named-checkconf</pre> |
− | * Проверьте логи: < | + | * Проверьте логи: <pre>sudo journalctl -u bind9</pre> |
− | * Проверьте права на файлы: < | + | * Проверьте права на файлы: <pre>ls -la /etc/bind/</pre> |
2. '''Зоны не загружаются''': | 2. '''Зоны не загружаются''': | ||
− | * Проверьте зоны: < | + | * Проверьте зоны: <pre>sudo named-checkzone example.com /etc/bind/db.example.com</pre> |
* Проверьте синтаксис файлов зон | * Проверьте синтаксис файлов зон | ||
* Проверьте права доступа к файлам | * Проверьте права доступа к файлам | ||
3. '''DNS запросы не работают''': | 3. '''DNS запросы не работают''': | ||
− | * Проверьте файрвол: < | + | * Проверьте файрвол: <pre>sudo ufw status</pre> |
− | * Проверьте порты: < | + | * Проверьте порты: <pre>sudo netstat -tlnp | grep :53</pre> |
* Проверьте настройки клиентов | * Проверьте настройки клиентов | ||
Строка 327: | Строка 327: | ||
1. Проверьте статус сервиса: | 1. Проверьте статус сервиса: | ||
− | < | + | <pre>sudo systemctl status bind9</pre> |
2. Проверьте конфигурацию: | 2. Проверьте конфигурацию: | ||
− | < | + | <pre>sudo named-checkconf</pre> |
3. Проверьте зоны: | 3. Проверьте зоны: | ||
− | < | + | <pre>sudo named-checkzone example.com /etc/bind/db.example.com</pre> |
4. Проверьте DNS запросы: | 4. Проверьте DNS запросы: | ||
− | < | + | <pre>dig @localhost example.com</pre> |
− | < | + | <pre>nslookup example.com localhost</pre> |
− | == 11. Дополнительные настройки | + | == 11. Дополнительные настройки == |
=== Настройка кэширования === | === Настройка кэширования === | ||
1. Отредактируйте конфигурацию: | 1. Отредактируйте конфигурацию: | ||
− | < | + | <pre>sudo nano /etc/bind/named.conf.options</pre> |
2. Добавьте настройки кэширования: | 2. Добавьте настройки кэширования: | ||
− | < | + | <pre>options {</pre> |
− | < | + | <pre>directory "/var/cache/bind";</pre> |
− | < | + | <pre>recursion yes;</pre> |
− | < | + | <pre>allow-recursion { localnets; };</pre> |
− | < | + | <pre>listen-on { any; };</pre> |
− | < | + | <pre>forwarders {</pre> |
− | < | + | <pre>8.8.8.8;</pre> |
− | < | + | <pre>8.8.4.4;</pre> |
− | < | + | <pre>};</pre> |
− | < | + | <pre>dnssec-validation auto;</pre> |
− | < | + | <pre>auth-nxdomain no;</pre> |
− | < | + | <pre>max-cache-size 256m;</pre> |
− | < | + | <pre>max-ncache-ttl 3600;</pre> |
− | < | + | <pre>};</pre> |
=== Настройка мониторинга === | === Настройка мониторинга === | ||
1. Добавьте задачу мониторинга в crontab: | 1. Добавьте задачу мониторинга в crontab: | ||
− | < | + | <pre>*/5 * * * * /usr/local/bin/dns-monitor.sh</pre> |
− | == 12. Оптимизация производительности | + | == 12. Оптимизация производительности == |
=== Настройки производительности === | === Настройки производительности === | ||
1. Отредактируйте конфигурацию: | 1. Отредактируйте конфигурацию: | ||
− | < | + | <pre>sudo nano /etc/bind/named.conf.options</pre> |
2. Добавьте настройки производительности: | 2. Добавьте настройки производительности: | ||
− | < | + | <pre>options {</pre> |
− | < | + | <pre>directory "/var/cache/bind";</pre> |
− | < | + | <pre>recursion yes;</pre> |
− | < | + | <pre>allow-recursion { localnets; };</pre> |
− | < | + | <pre>listen-on { any; };</pre> |
− | < | + | <pre>forwarders {</pre> |
− | < | + | <pre>8.8.8.8;</pre> |
− | < | + | <pre>8.8.4.4;</pre> |
− | < | + | <pre>};</pre> |
− | < | + | <pre>dnssec-validation auto;</pre> |
− | < | + | <pre>auth-nxdomain no;</pre> |
− | < | + | <pre>max-cache-size 512m;</pre> |
− | < | + | <pre>max-ncache-ttl 3600;</pre> |
− | < | + | <pre>cleaning-interval 60;</pre> |
− | < | + | <pre>interface-interval 0;</pre> |
− | < | + | <pre>statistics-interval 0;</pre> |
− | < | + | <pre>};</pre> |
=== Мониторинг производительности === | === Мониторинг производительности === | ||
1. Создайте скрипт мониторинга: | 1. Создайте скрипт мониторинга: | ||
− | < | + | <pre>sudo nano /usr/local/bin/dns-stats.sh</pre> |
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
− | < | + | <pre>echo "=== BIND DNS Server Statistics ==="</pre> |
− | < | + | <pre>echo "Server Status: $(systemctl is-active bind9)"</pre> |
− | < | + | <pre>echo "Uptime: $(systemctl show bind9 --property=ActiveEnterTimestamp --value)"</pre> |
− | < | + | <pre>echo "Memory Usage: $(ps aux | grep named | grep -v grep | awk '{print $4"%"}')"</pre> |
− | < | + | <pre>echo "CPU Usage: $(ps aux | grep named | grep -v grep | awk '{print $3"%"}')"</pre> |
− | < | + | <pre>echo "Active Connections: $(netstat -an | grep :53 | wc -l)"</pre> |
3. Сделайте скрипт исполняемым: | 3. Сделайте скрипт исполняемым: | ||
− | < | + | <pre>sudo chmod +x /usr/local/bin/dns-stats.sh</pre> |
== Заключение == | == Заключение == |
Текущая версия на 10:31, 15 октября 2025
Содержание
- 1 Настройка DNS сервера (BIND)
- 1.1 1. Подготовка системы
- 1.2 2. Установка BIND
- 1.3 3. Базовая настройка BIND
- 1.4 4. Создание зон
- 1.5 5. Настройка безопасности
- 1.6 6. Управление BIND
- 1.7 7. Мониторинг и логирование
- 1.8 8. Настройка мастер-слейв
- 1.9 9. Настройка DNSSEC
- 1.10 10. Устранение неполадок
- 1.11 11. Дополнительные настройки
- 1.12 12. Оптимизация производительности
- 1.13 Заключение
Настройка 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. Добавьте содержимое:
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:
*/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. Добавьте содержимое:
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):
- [Выделенные серверы](https://ark-hoster.ru/dedicated/) - для высоконагруженных DNS серверов
- [VPS/VDS серверы](https://ark-hoster.ru/vpsgame/) - для небольших и средних проектов
Наши специалисты помогут с настройкой DNS и обеспечением безопасности вашего сервера!