Настройка DNS сервера (BIND): различия между версиями

Материал из ARK-HOSTER.RU | Документация хостинга
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
 
Строка 6: Строка 6:
* Убедитесь, что у вас есть доступ к серверу через SSH или консоль.
* Убедитесь, что у вас есть доступ к серверу через SSH или консоль.


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


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


1. Обновите список пакетов:
1. Обновите список пакетов:
<code>sudo apt update</code>
<pre>sudo apt update</pre>


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


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


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


1. Проверьте статус сервиса:
1. Проверьте статус сервиса:
<code>sudo systemctl status bind9</code>
<pre>sudo systemctl status bind9</pre>


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


3. Проверьте версию BIND:
3. Проверьте версию BIND:
<code>named -v</code>
<pre>named -v</pre>


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


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


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


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


3. Настройте основные параметры:
3. Настройте основные параметры:
<code>// Основные настройки</code>
<pre>// Основные настройки</pre>
<code>options {</code>
<pre>options {</pre>
<code>directory "/var/cache/bind";</code>
<pre>directory "/var/cache/bind";</pre>
<code>recursion yes;</code>
<pre>recursion yes;</pre>
<code>allow-recursion { localnets; };</code>
<pre>allow-recursion { localnets; };</pre>
<code>listen-on { any; };</code>
<pre>listen-on { any; };</pre>
<code>listen-on-v6 { any; };</code>
<pre>listen-on-v6 { any; };</pre>
<code>allow-transfer { none; };</code>
<pre>allow-transfer { none; };</pre>
<code>allow-query { any; };</code>
<pre>allow-query { any; };</pre>
<code>forwarders {</code>
<pre>forwarders {</pre>
<code>8.8.8.8;</code>
<pre>8.8.8.8;</pre>
<code>8.8.4.4;</code>
<pre>8.8.4.4;</pre>
<code>};</code>
<pre>};</pre>
<code>dnssec-validation auto;</code>
<pre>dnssec-validation auto;</pre>
<code>auth-nxdomain no;</code>
<pre>auth-nxdomain no;</pre>
<code>listen-on port 53 { any; };</code>
<pre>listen-on port 53 { any; };</pre>
<code>};</code>
<pre>};</pre>


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


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


2. Добавьте конфигурацию зоны:
2. Добавьте конфигурацию зоны:
<code>// Прямая зона</code>
<pre>// Прямая зона</pre>
<code>zone "example.com" {</code>
<pre>zone "example.com" {</pre>
<code>type master;</code>
<pre>type master;</pre>
<code>file "/etc/bind/db.example.com";</code>
<pre>file "/etc/bind/db.example.com";</pre>
<code>allow-update { none; };</code>
<pre>allow-update { none; };</pre>
<code>};</code>
<pre>};</pre>
<code>// Обратная зона</code>
<pre>// Обратная зона</pre>
<code>zone "1.168.192.in-addr.arpa" {</code>
<pre>zone "1.168.192.in-addr.arpa" {</pre>
<code>type master;</code>
<pre>type master;</pre>
<code>file "/etc/bind/db.192.168.1";</code>
<pre>file "/etc/bind/db.192.168.1";</pre>
<code>allow-update { none; };</code>
<pre>allow-update { none; };</pre>
<code>};</code>
<pre>};</pre>


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


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


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


2. Добавьте содержимое:
2. Добавьте содержимое:
<code>$TTL    604800</code>
<pre>$TTL    604800</pre>
<code>@      IN      SOA    ns1.example.com. admin.example.com. (</code>
<pre>@      IN      SOA    ns1.example.com. admin.example.com. (</pre>
<code>1        ; Serial</code>
<pre>1        ; Serial</pre>
<code>604800        ; Refresh</code>
<pre>604800        ; Refresh</pre>
<code>86400        ; Retry</code>
<pre>86400        ; Retry</pre>
<code>2419200        ; Expire</code>
<pre>2419200        ; Expire</pre>
<code>604800 )      ; Negative Cache TTL</code>
<pre>604800 )      ; Negative Cache TTL</pre>
<code>;</code>
<pre>;</pre>
<code>@      IN      NS      ns1.example.com.</code>
<pre>@      IN      NS      ns1.example.com.</pre>
<code>@      IN      NS      ns2.example.com.</code>
<pre>@      IN      NS      ns2.example.com.</pre>
<code>@      IN      A      192.168.1.10</code>
<pre>@      IN      A      192.168.1.10</pre>
<code>ns1    IN      A      192.168.1.10</code>
<pre>ns1    IN      A      192.168.1.10</pre>
<code>ns2    IN      A      192.168.1.11</code>
<pre>ns2    IN      A      192.168.1.11</pre>
<code>www    IN      A      192.168.1.10</code>
<pre>www    IN      A      192.168.1.10</pre>
<code>mail    IN      A      192.168.1.10</code>
<pre>mail    IN      A      192.168.1.10</pre>
<code>ftp    IN      A      192.168.1.10</code>
<pre>ftp    IN      A      192.168.1.10</pre>


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


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


2. Добавьте содержимое:
2. Добавьте содержимое:
<code>$TTL    604800</code>
<pre>$TTL    604800</pre>
<code>@      IN      SOA    ns1.example.com. admin.example.com. (</code>
<pre>@      IN      SOA    ns1.example.com. admin.example.com. (</pre>
<code>1        ; Serial</code>
<pre>1        ; Serial</pre>
<code>604800        ; Refresh</code>
<pre>604800        ; Refresh</pre>
<code>86400        ; Retry</code>
<pre>86400        ; Retry</pre>
<code>2419200        ; Expire</code>
<pre>2419200        ; Expire</pre>
<code>604800 )      ; Negative Cache TTL</code>
<pre>604800 )      ; Negative Cache TTL</pre>
<code>;</code>
<pre>;</pre>
<code>@      IN      NS      ns1.example.com.</code>
<pre>@      IN      NS      ns1.example.com.</pre>
<code>@      IN      NS      ns2.example.com.</code>
<pre>@      IN      NS      ns2.example.com.</pre>
<code>10      IN      PTR    ns1.example.com.</code>
<pre>10      IN      PTR    ns1.example.com.</pre>
<code>10      IN      PTR    www.example.com.</code>
<pre>10      IN      PTR    www.example.com.</pre>
<code>10      IN      PTR    mail.example.com.</code>
<pre>10      IN      PTR    mail.example.com.</pre>
<code>10      IN      PTR    ftp.example.com.</code>
<pre>10      IN      PTR    ftp.example.com.</pre>


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


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


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


2. Проверьте статус:
2. Проверьте статус:
<code>sudo ufw status</code>
<pre>sudo ufw status</pre>


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


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


2. Добавьте настройки безопасности:
2. Добавьте настройки безопасности:
<code>options {</code>
<pre>options {</pre>
<code>directory "/var/cache/bind";</code>
<pre>directory "/var/cache/bind";</pre>
<code>recursion yes;</code>
<pre>recursion yes;</pre>
<code>allow-recursion { 192.168.1.0/24; 10.0.0.0/8; };</code>
<pre>allow-recursion { 192.168.1.0/24; 10.0.0.0/8; };</pre>
<code>listen-on { 192.168.1.10; };</code>
<pre>listen-on { 192.168.1.10; };</pre>
<code>allow-transfer { 192.168.1.11; };</code>
<pre>allow-transfer { 192.168.1.11; };</pre>
<code>allow-query { 192.168.1.0/24; 10.0.0.0/8; };</code>
<pre>allow-query { 192.168.1.0/24; 10.0.0.0/8; };</pre>
<code>forwarders {</code>
<pre>forwarders {</pre>
<code>8.8.8.8;</code>
<pre>8.8.8.8;</pre>
<code>8.8.4.4;</code>
<pre>8.8.4.4;</pre>
<code>};</code>
<pre>};</pre>
<code>dnssec-validation auto;</code>
<pre>dnssec-validation auto;</pre>
<code>auth-nxdomain no;</code>
<pre>auth-nxdomain no;</pre>
<code>};</code>
<pre>};</pre>


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


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


* '''Запуск BIND''':
* '''Запуск BIND''':
<code>sudo systemctl start bind9</code>
<pre>sudo systemctl start bind9</pre>


* '''Остановка BIND''':
* '''Остановка BIND''':
<code>sudo systemctl stop bind9</code>
<pre>sudo systemctl stop bind9</pre>


* '''Перезапуск BIND''':
* '''Перезапуск BIND''':
<code>sudo systemctl restart bind9</code>
<pre>sudo systemctl restart bind9</pre>


* '''Проверка статуса''':
* '''Проверка статуса''':
<code>sudo systemctl status bind9</code>
<pre>sudo systemctl status bind9</pre>


* '''Проверка конфигурации''':
* '''Проверка конфигурации''':
<code>sudo named-checkconf</code>
<pre>sudo named-checkconf</pre>


* '''Проверка зоны''':
* '''Проверка зоны''':
<code>sudo named-checkzone example.com /etc/bind/db.example.com</code>
<pre>sudo named-checkzone example.com /etc/bind/db.example.com</pre>


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


1. Перезагрузите зону:
1. Перезагрузите зону:
<code>sudo rndc reload example.com</code>
<pre>sudo rndc reload example.com</pre>


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


3. Проверьте статус зон:
3. Проверьте статус зон:
<code>sudo rndc status</code>
<pre>sudo rndc status</pre>


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


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


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


2. Добавьте настройки логирования:
2. Добавьте настройки логирования:
<code>logging {</code>
<pre>logging {</pre>
<code>channel default_log {</code>
<pre>channel default_log {</pre>
<code>file "/var/log/bind/named.log" versions 3 size 5m;</code>
<pre>file "/var/log/bind/named.log" versions 3 size 5m;</pre>
<code>severity info;</code>
<pre>severity info;</pre>
<code>print-time yes;</code>
<pre>print-time yes;</pre>
<code>print-severity yes;</code>
<pre>print-severity yes;</pre>
<code>print-category yes;</code>
<pre>print-category yes;</pre>
<code>};</code>
<pre>};</pre>
<code>category default { default_log; };</code>
<pre>category default { default_log; };</pre>
<code>category queries { default_log; };</code>
<pre>category queries { default_log; };</pre>
<code>};</code>
<pre>};</pre>


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


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


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


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


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


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


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


2. Добавьте содержимое:
2. Добавьте содержимое:
<code>if systemctl is-active --quiet bind9; then</code>
<pre>if systemctl is-active --quiet bind9; then</pre>
<code>echo "BIND is running"</code>
<pre>echo "BIND is running"</pre>
<code>QUERIES=$(sudo rndc stats && grep "queries" /var/cache/bind/named.stats | awk '{print $1}')</code>
<pre>QUERIES=$(sudo rndc stats && grep "queries" /var/cache/bind/named.stats | awk '{print $1}')</pre>
<code>echo "Total queries: $QUERIES"</code>
<pre>echo "Total queries: $QUERIES"</pre>
<code>MEMORY=$(ps aux | grep named | grep -v grep | awk '{print $6}')</code>
<pre>MEMORY=$(ps aux | grep named | grep -v grep | awk '{print $6}')</pre>
<code>echo "Memory usage: $MEMORY KB"</code>
<pre>echo "Memory usage: $MEMORY KB"</pre>
<code>else</code>
<pre>else</pre>
<code>echo "BIND is not running"</code>
<pre>echo "BIND is not running"</pre>
<code>echo "BIND is down" | mail -s "DNS Alert" admin@example.com</code>
<pre>echo "BIND is down" | mail -s "DNS Alert" admin@example.com</pre>
<code>fi</code>
<pre>fi</pre>


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


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


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


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


2. Добавьте настройки для слейв сервера:
2. Добавьте настройки для слейв сервера:
<code>$TTL    604800</code>
<pre>$TTL    604800</pre>
<code>@      IN      SOA    ns1.example.com. admin.example.com. (</code>
<pre>@      IN      SOA    ns1.example.com. admin.example.com. (</pre>
<code>1        ; Serial</code>
<pre>1        ; Serial</pre>
<code>604800        ; Refresh</code>
<pre>604800        ; Refresh</pre>
<code>86400        ; Retry</code>
<pre>86400        ; Retry</pre>
<code>2419200        ; Expire</code>
<pre>2419200        ; Expire</pre>
<code>604800 )      ; Negative Cache TTL</code>
<pre>604800 )      ; Negative Cache TTL</pre>
<code>;</code>
<pre>;</pre>
<code>@      IN      NS      ns1.example.com.</code>
<pre>@      IN      NS      ns1.example.com.</pre>
<code>@      IN      NS      ns2.example.com.</code>
<pre>@      IN      NS      ns2.example.com.</pre>
<code>ns1    IN      A      192.168.1.10</code>
<pre>ns1    IN      A      192.168.1.10</pre>
<code>ns2    IN      A      192.168.1.11</code>
<pre>ns2    IN      A      192.168.1.11</pre>


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


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


2. Добавьте конфигурацию слейв зоны:
2. Добавьте конфигурацию слейв зоны:
<code>zone "example.com" {</code>
<pre>zone "example.com" {</pre>
<code>type slave;</code>
<pre>type slave;</pre>
<code>masters { 192.168.1.10; };</code>
<pre>masters { 192.168.1.10; };</pre>
<code>file "/var/cache/bind/db.example.com";</code>
<pre>file "/var/cache/bind/db.example.com";</pre>
<code>};</code>
<pre>};</pre>


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


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


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


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


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


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


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


3. Добавьте настройки DNSSEC:
3. Добавьте настройки DNSSEC:
<code>zone "example.com" {</code>
<pre>zone "example.com" {</pre>
<code>type master;</code>
<pre>type master;</pre>
<code>file "/etc/bind/db.example.com.signed";</code>
<pre>file "/etc/bind/db.example.com.signed";</pre>
<code>allow-update { none; };</code>
<pre>allow-update { none; };</pre>
<code>auto-dnssec maintain;</code>
<pre>auto-dnssec maintain;</pre>
<code>inline-signing yes;</code>
<pre>inline-signing yes;</pre>
<code>};</code>
<pre>};</pre>


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


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


1. '''BIND не запускается''':
1. '''BIND не запускается''':
* Проверьте конфигурацию: <code>sudo named-checkconf</code>
* Проверьте конфигурацию: <pre>sudo named-checkconf</pre>
* Проверьте логи: <code>sudo journalctl -u bind9</code>
* Проверьте логи: <pre>sudo journalctl -u bind9</pre>
* Проверьте права на файлы: <code>ls -la /etc/bind/</code>
* Проверьте права на файлы: <pre>ls -la /etc/bind/</pre>


2. '''Зоны не загружаются''':
2. '''Зоны не загружаются''':
* Проверьте зоны: <code>sudo named-checkzone example.com /etc/bind/db.example.com</code>
* Проверьте зоны: <pre>sudo named-checkzone example.com /etc/bind/db.example.com</pre>
* Проверьте синтаксис файлов зон
* Проверьте синтаксис файлов зон
* Проверьте права доступа к файлам
* Проверьте права доступа к файлам


3. '''DNS запросы не работают''':
3. '''DNS запросы не работают''':
* Проверьте файрвол: <code>sudo ufw status</code>
* Проверьте файрвол: <pre>sudo ufw status</pre>
* Проверьте порты: <code>sudo netstat -tlnp | grep :53</code>
* Проверьте порты: <pre>sudo netstat -tlnp | grep :53</pre>
* Проверьте настройки клиентов
* Проверьте настройки клиентов


Строка 327: Строка 327:


1. Проверьте статус сервиса:
1. Проверьте статус сервиса:
<code>sudo systemctl status bind9</code>
<pre>sudo systemctl status bind9</pre>


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


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


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


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


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


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


2. Добавьте настройки кэширования:
2. Добавьте настройки кэширования:
<code>options {</code>
<pre>options {</pre>
<code>directory "/var/cache/bind";</code>
<pre>directory "/var/cache/bind";</pre>
<code>recursion yes;</code>
<pre>recursion yes;</pre>
<code>allow-recursion { localnets; };</code>
<pre>allow-recursion { localnets; };</pre>
<code>listen-on { any; };</code>
<pre>listen-on { any; };</pre>
<code>forwarders {</code>
<pre>forwarders {</pre>
<code>8.8.8.8;</code>
<pre>8.8.8.8;</pre>
<code>8.8.4.4;</code>
<pre>8.8.4.4;</pre>
<code>};</code>
<pre>};</pre>
<code>dnssec-validation auto;</code>
<pre>dnssec-validation auto;</pre>
<code>auth-nxdomain no;</code>
<pre>auth-nxdomain no;</pre>
<code>max-cache-size 256m;</code>
<pre>max-cache-size 256m;</pre>
<code>max-ncache-ttl 3600;</code>
<pre>max-ncache-ttl 3600;</pre>
<code>};</code>
<pre>};</pre>


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


1. Добавьте задачу мониторинга в crontab:
1. Добавьте задачу мониторинга в crontab:
<code>*/5 * * * * /usr/local/bin/dns-monitor.sh</code>
<pre>*/5 * * * * /usr/local/bin/dns-monitor.sh</pre>


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


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


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


2. Добавьте настройки производительности:
2. Добавьте настройки производительности:
<code>options {</code>
<pre>options {</pre>
<code>directory "/var/cache/bind";</code>
<pre>directory "/var/cache/bind";</pre>
<code>recursion yes;</code>
<pre>recursion yes;</pre>
<code>allow-recursion { localnets; };</code>
<pre>allow-recursion { localnets; };</pre>
<code>listen-on { any; };</code>
<pre>listen-on { any; };</pre>
<code>forwarders {</code>
<pre>forwarders {</pre>
<code>8.8.8.8;</code>
<pre>8.8.8.8;</pre>
<code>8.8.4.4;</code>
<pre>8.8.4.4;</pre>
<code>};</code>
<pre>};</pre>
<code>dnssec-validation auto;</code>
<pre>dnssec-validation auto;</pre>
<code>auth-nxdomain no;</code>
<pre>auth-nxdomain no;</pre>
<code>max-cache-size 512m;</code>
<pre>max-cache-size 512m;</pre>
<code>max-ncache-ttl 3600;</code>
<pre>max-ncache-ttl 3600;</pre>
<code>cleaning-interval 60;</code>
<pre>cleaning-interval 60;</pre>
<code>interface-interval 0;</code>
<pre>interface-interval 0;</pre>
<code>statistics-interval 0;</code>
<pre>statistics-interval 0;</pre>
<code>};</code>
<pre>};</pre>


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


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


2. Добавьте содержимое:
2. Добавьте содержимое:
<code>echo "=== BIND DNS Server Statistics ==="</code>
<pre>echo "=== BIND DNS Server Statistics ==="</pre>
<code>echo "Server Status: $(systemctl is-active bind9)"</code>
<pre>echo "Server Status: $(systemctl is-active bind9)"</pre>
<code>echo "Uptime: $(systemctl show bind9 --property=ActiveEnterTimestamp --value)"</code>
<pre>echo "Uptime: $(systemctl show bind9 --property=ActiveEnterTimestamp --value)"</pre>
<code>echo "Memory Usage: $(ps aux | grep named | grep -v grep | awk '{print $4"%"}')"</code>
<pre>echo "Memory Usage: $(ps aux | grep named | grep -v grep | awk '{print $4"%"}')"</pre>
<code>echo "CPU Usage: $(ps aux | grep named | grep -v grep | awk '{print $3"%"}')"</code>
<pre>echo "CPU Usage: $(ps aux | grep named | grep -v grep | awk '{print $3"%"}')"</pre>
<code>echo "Active Connections: $(netstat -an | grep :53 | wc -l)"</code>
<pre>echo "Active Connections: $(netstat -an | grep :53 | wc -l)"</pre>


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


== Заключение ==
== Заключение ==

Текущая версия от 10:31, 15 октября 2025

Настройка 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):

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