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

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

Версия 19:58, 14 октября 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 и обеспечением безопасности вашего сервера!