Настройка DNS сервера (BIND): различия между версиями
Admin (обсуждение | вклад) Новая страница: «= Настройка DNS сервера (BIND) = == 1. Подготовка системы == * Войдите в систему под учетной запи…» |
Admin (обсуждение | вклад) Нет описания правки |
||
| (не показана 1 промежуточная версия этого же участника) | |||
| Строка 6: | Строка 6: | ||
* Убедитесь, что у вас есть доступ к серверу через SSH или консоль. | * Убедитесь, что у вас есть доступ к серверу через SSH или консоль. | ||
== 2. Установка BIND | == 2. Установка BIND == | ||
=== Установка пакета === | === Установка пакета === | ||
1. Обновите список пакетов: | 1. Обновите список пакетов: | ||
< | <pre>sudo apt update</pre> | ||
sudo apt update | |||
</ | |||
2. Установите BIND9: | 2. Установите BIND9: | ||
< | <pre>sudo apt install bind9 bind9utils bind9-doc</pre> | ||
sudo apt install bind9 bind9utils bind9-doc | |||
</ | |||
3. Запустите и включите автозапуск BIND: | 3. Запустите и включите автозапуск BIND: | ||
< | <pre>sudo systemctl start bind9</pre> | ||
sudo systemctl start bind9 | <pre>sudo systemctl enable bind9</pre> | ||
sudo systemctl enable bind9 | |||
</ | |||
=== Проверка установки === | === Проверка установки === | ||
1. Проверьте статус сервиса: | 1. Проверьте статус сервиса: | ||
< | <pre>sudo systemctl status bind9</pre> | ||
sudo systemctl status bind9 | |||
</ | |||
2. Проверьте, что BIND слушает на порту 53: | 2. Проверьте, что BIND слушает на порту 53: | ||
< | <pre>sudo netstat -tlnp | grep :53</pre> | ||
sudo netstat -tlnp | grep :53 | |||
</ | |||
3. Проверьте версию BIND: | 3. Проверьте версию BIND: | ||
< | <pre>named -v</pre> | ||
named -v | |||
</ | |||
== 3. Базовая настройка BIND | == 3. Базовая настройка BIND == | ||
=== Основная конфигурация === | === Основная конфигурация === | ||
1. Создайте резервную копию конфигурации: | 1. Создайте резервную копию конфигурации: | ||
< | <pre>sudo cp /etc/bind/named.conf /etc/bind/named.conf.backup</pre> | ||
sudo cp /etc/bind/named.conf /etc/bind/named.conf.backup | |||
</ | |||
2. Отредактируйте основной файл конфигурации: | 2. Отредактируйте основной файл конфигурации: | ||
< | <pre>sudo nano /etc/bind/named.conf</pre> | ||
sudo nano /etc/bind/named.conf | |||
</ | |||
3. Настройте основные параметры: | 3. Настройте основные параметры: | ||
< | <pre>// Основные настройки</pre> | ||
// Основные настройки | <pre>options {</pre> | ||
options { | <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> | ||
sudo nano /etc/bind/named.conf.local | |||
</ | |||
2. Добавьте конфигурацию зоны: | 2. Добавьте конфигурацию зоны: | ||
< | <pre>// Прямая зона</pre> | ||
// Прямая зона | <pre>zone "example.com" {</pre> | ||
zone "example.com" { | <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> | ||
sudo nano /etc/bind/db.example.com | |||
</ | |||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
< | <pre>$TTL 604800</pre> | ||
$TTL 604800 | <pre>@ IN SOA ns1.example.com. admin.example.com. (</pre> | ||
@ IN SOA ns1.example.com. admin.example.com. ( | <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> | ||
@ IN NS ns1.example.com. | <pre>@ IN NS ns2.example.com.</pre> | ||
@ IN NS ns2.example.com. | <pre>@ IN A 192.168.1.10</pre> | ||
@ IN A 192.168.1.10 | <pre>ns1 IN A 192.168.1.10</pre> | ||
ns1 IN A 192.168.1.10 | <pre>ns2 IN A 192.168.1.11</pre> | ||
ns2 IN A 192.168.1.11 | <pre>www IN A 192.168.1.10</pre> | ||
www IN A 192.168.1.10 | <pre>mail IN A 192.168.1.10</pre> | ||
mail IN A 192.168.1.10 | <pre>ftp IN A 192.168.1.10</pre> | ||
ftp IN A 192.168.1.10 | |||
</ | |||
=== Создание обратной зоны === | === Создание обратной зоны === | ||
1. Создайте файл обратной зоны: | 1. Создайте файл обратной зоны: | ||
< | <pre>sudo nano /etc/bind/db.192.168.1</pre> | ||
sudo nano /etc/bind/db.192.168.1 | |||
</ | |||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
< | <pre>$TTL 604800</pre> | ||
$TTL 604800 | <pre>@ IN SOA ns1.example.com. admin.example.com. (</pre> | ||
@ IN SOA ns1.example.com. admin.example.com. ( | <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> | ||
@ IN NS ns1.example.com. | <pre>@ IN NS ns2.example.com.</pre> | ||
@ IN NS ns2.example.com. | <pre>10 IN PTR ns1.example.com.</pre> | ||
10 IN PTR ns1.example.com. | <pre>10 IN PTR www.example.com.</pre> | ||
10 IN PTR www.example.com. | <pre>10 IN PTR mail.example.com.</pre> | ||
10 IN PTR mail.example.com. | <pre>10 IN PTR ftp.example.com.</pre> | ||
10 IN PTR ftp.example.com. | |||
</ | |||
== 5. Настройка безопасности | == 5. Настройка безопасности == | ||
=== Настройка файрвола === | === Настройка файрвола === | ||
1. Разрешите DNS трафик: | 1. Разрешите DNS трафик: | ||
< | <pre>sudo ufw allow 53/tcp</pre> | ||
sudo ufw allow 53/tcp | <pre>sudo ufw allow 53/udp</pre> | ||
sudo ufw allow 53/udp | |||
</ | |||
2. Проверьте статус: | 2. Проверьте статус: | ||
< | <pre>sudo ufw status</pre> | ||
sudo ufw status | |||
</ | |||
=== Настройка доступа === | === Настройка доступа === | ||
1. Отредактируйте конфигурацию: | 1. Отредактируйте конфигурацию: | ||
< | <pre>sudo nano /etc/bind/named.conf.options</pre> | ||
sudo nano /etc/bind/named.conf.options | |||
</ | |||
2. Добавьте настройки безопасности: | 2. Добавьте настройки безопасности: | ||
< | <pre>options {</pre> | ||
options { | <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> | ||
sudo systemctl start bind9 | |||
</ | |||
* '''Остановка BIND''': | * '''Остановка BIND''': | ||
< | <pre>sudo systemctl stop bind9</pre> | ||
sudo systemctl stop bind9 | |||
</ | |||
* '''Перезапуск BIND''': | * '''Перезапуск BIND''': | ||
< | <pre>sudo systemctl restart bind9</pre> | ||
sudo systemctl restart bind9 | |||
</ | |||
* '''Проверка статуса''': | * '''Проверка статуса''': | ||
< | <pre>sudo systemctl status bind9</pre> | ||
sudo systemctl status bind9 | |||
</ | |||
* '''Проверка конфигурации''': | * '''Проверка конфигурации''': | ||
< | <pre>sudo named-checkconf</pre> | ||
sudo named-checkconf | |||
</ | |||
* '''Проверка зоны''': | * '''Проверка зоны''': | ||
< | <pre>sudo named-checkzone example.com /etc/bind/db.example.com</pre> | ||
sudo named-checkzone example.com /etc/bind/db.example.com | |||
</ | |||
=== Перезагрузка зон === | === Перезагрузка зон === | ||
1. Перезагрузите зону: | 1. Перезагрузите зону: | ||
< | <pre>sudo rndc reload example.com</pre> | ||
sudo rndc reload example.com | |||
</ | |||
2. Перезагрузите все зоны: | 2. Перезагрузите все зоны: | ||
< | <pre>sudo rndc reload</pre> | ||
sudo rndc reload | |||
</ | |||
3. Проверьте статус зон: | 3. Проверьте статус зон: | ||
< | <pre>sudo rndc status</pre> | ||
sudo rndc status | |||
</ | |||
== 7. Мониторинг и логирование | == 7. Мониторинг и логирование == | ||
=== Настройка логирования === | === Настройка логирования === | ||
1. Отредактируйте конфигурацию: | 1. Отредактируйте конфигурацию: | ||
< | <pre>sudo nano /etc/bind/named.conf.local</pre> | ||
sudo nano /etc/bind/named.conf.local | |||
</ | |||
2. Добавьте настройки логирования: | 2. Добавьте настройки логирования: | ||
< | <pre>logging {</pre> | ||
logging { | <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> | ||
sudo mkdir -p /var/log/bind | <pre>sudo chown bind:bind /var/log/bind</pre> | ||
sudo chown bind:bind /var/log/bind | |||
</ | |||
=== Просмотр логов === | === Просмотр логов === | ||
1. Просмотрите логи BIND: | 1. Просмотрите логи BIND: | ||
< | <pre>sudo tail -f /var/log/bind/named.log</pre> | ||
sudo tail -f /var/log/bind/named.log | |||
</ | |||
2. Просмотрите системные логи: | 2. Просмотрите системные логи: | ||
< | <pre>sudo journalctl -u bind9 -f</pre> | ||
sudo journalctl -u bind9 -f | |||
</ | |||
3. Просмотрите логи запросов: | 3. Просмотрите логи запросов: | ||
< | <pre>sudo tail -f /var/log/bind/queries.log</pre> | ||
sudo tail -f /var/log/bind/queries.log | |||
</ | |||
=== Создание скрипта мониторинга === | === Создание скрипта мониторинга === | ||
1. Создайте скрипт мониторинга: | 1. Создайте скрипт мониторинга: | ||
< | <pre>sudo nano /usr/local/bin/dns-monitor.sh</pre> | ||
sudo nano /usr/local/bin/dns-monitor.sh | |||
</ | |||
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> | |||
if systemctl is-active --quiet bind9; then | <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> | |||
else | |||
fi | |||
</ | |||
3. Сделайте скрипт исполняемым: | 3. Сделайте скрипт исполняемым: | ||
< | <pre>sudo chmod +x /usr/local/bin/dns-monitor.sh</pre> | ||
sudo chmod +x /usr/local/bin/dns-monitor.sh | |||
</ | |||
== 8. Настройка мастер-слейв | == 8. Настройка мастер-слейв == | ||
=== Настройка мастер сервера === | === Настройка мастер сервера === | ||
1. Отредактируйте конфигурацию зоны: | 1. Отредактируйте конфигурацию зоны: | ||
< | <pre>sudo nano /etc/bind/db.example.com</pre> | ||
sudo nano /etc/bind/db.example.com | |||
</ | |||
2. Добавьте настройки для слейв сервера: | 2. Добавьте настройки для слейв сервера: | ||
< | <pre>$TTL 604800</pre> | ||
$TTL 604800 | <pre>@ IN SOA ns1.example.com. admin.example.com. (</pre> | ||
@ IN SOA ns1.example.com. admin.example.com. ( | <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> | ||
@ IN NS ns1.example.com. | <pre>@ IN NS ns2.example.com.</pre> | ||
@ IN NS ns2.example.com. | <pre>ns1 IN A 192.168.1.10</pre> | ||
ns1 IN A 192.168.1.10 | <pre>ns2 IN A 192.168.1.11</pre> | ||
ns2 IN A 192.168.1.11 | |||
</ | |||
=== Настройка слейв сервера === | === Настройка слейв сервера === | ||
1. На слейв сервере отредактируйте конфигурацию: | 1. На слейв сервере отредактируйте конфигурацию: | ||
< | <pre>sudo nano /etc/bind/named.conf.local</pre> | ||
sudo nano /etc/bind/named.conf.local | |||
</ | |||
2. Добавьте конфигурацию слейв зоны: | 2. Добавьте конфигурацию слейв зоны: | ||
< | <pre>zone "example.com" {</pre> | ||
zone "example.com" { | <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> | ||
sudo dnssec-keygen -a RSASHA256 -b 2048 -n ZONE example.com | |||
</ | |||
2. Создайте ZSK ключ: | 2. Создайте ZSK ключ: | ||
< | <pre>sudo dnssec-keygen -a RSASHA256 -b 1024 -n ZONE example.com</pre> | ||
sudo dnssec-keygen -a RSASHA256 -b 1024 -n ZONE example.com | |||
</ | |||
=== Подписание зоны === | === Подписание зоны === | ||
1. Подпишите зону: | 1. Подпишите зону: | ||
< | <pre>sudo dnssec-signzone -A -N INCREMENT -o example.com -t db.example.com</pre> | ||
sudo dnssec-signzone -A -N INCREMENT -o example.com -t db.example.com | |||
</ | |||
2. Обновите конфигурацию: | 2. Обновите конфигурацию: | ||
< | <pre>sudo nano /etc/bind/named.conf.local</pre> | ||
sudo nano /etc/bind/named.conf.local | |||
</ | |||
3. Добавьте настройки DNSSEC: | 3. Добавьте настройки DNSSEC: | ||
< | <pre>zone "example.com" {</pre> | ||
zone "example.com" { | <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> | ||
* Проверьте настройки клиентов | * Проверьте настройки клиентов | ||
| Строка 429: | Строка 327: | ||
1. Проверьте статус сервиса: | 1. Проверьте статус сервиса: | ||
< | <pre>sudo systemctl status bind9</pre> | ||
sudo systemctl status bind9 | |||
</ | |||
2. Проверьте конфигурацию: | 2. Проверьте конфигурацию: | ||
< | <pre>sudo named-checkconf</pre> | ||
sudo named-checkconf | |||
</ | |||
3. Проверьте зоны: | 3. Проверьте зоны: | ||
< | <pre>sudo named-checkzone example.com /etc/bind/db.example.com</pre> | ||
sudo named-checkzone example.com /etc/bind/db.example.com | |||
</ | |||
4. Проверьте DNS запросы: | 4. Проверьте DNS запросы: | ||
< | <pre>dig @localhost example.com</pre> | ||
dig @localhost example.com | <pre>nslookup example.com localhost</pre> | ||
nslookup example.com localhost | |||
</ | |||
== 11. Дополнительные настройки | == 11. Дополнительные настройки == | ||
=== Настройка кэширования === | === Настройка кэширования === | ||
1. Отредактируйте конфигурацию: | 1. Отредактируйте конфигурацию: | ||
< | <pre>sudo nano /etc/bind/named.conf.options</pre> | ||
sudo nano /etc/bind/named.conf.options | |||
</ | |||
2. Добавьте настройки кэширования: | 2. Добавьте настройки кэширования: | ||
< | <pre>options {</pre> | ||
options { | <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> | ||
*/5 * * * * /usr/local/bin/dns-monitor.sh | |||
</ | |||
== 12. Оптимизация производительности | == 12. Оптимизация производительности == | ||
=== Настройки производительности === | === Настройки производительности === | ||
1. Отредактируйте конфигурацию: | 1. Отредактируйте конфигурацию: | ||
< | <pre>sudo nano /etc/bind/named.conf.options</pre> | ||
sudo nano /etc/bind/named.conf.options | |||
</ | |||
2. Добавьте настройки производительности: | 2. Добавьте настройки производительности: | ||
< | <pre>options {</pre> | ||
options { | <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> | ||
sudo nano /usr/local/bin/dns-stats.sh | |||
</ | |||
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> | |||
echo "=== BIND DNS Server Statistics ===" | <pre>echo "Memory Usage: $(ps aux | grep named | grep -v grep | awk '{print $4"%"}')"</pre> | ||
echo "Server Status: $(systemctl is-active bind9)" | <pre>echo "CPU Usage: $(ps aux | grep named | grep -v grep | awk '{print $3"%"}')"</pre> | ||
echo "Uptime: $(systemctl show bind9 --property=ActiveEnterTimestamp --value)" | <pre>echo "Active Connections: $(netstat -an | grep :53 | wc -l)"</pre> | ||
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. Сделайте скрипт исполняемым: | 3. Сделайте скрипт исполняемым: | ||
< | <pre>sudo chmod +x /usr/local/bin/dns-stats.sh</pre> | ||
sudo chmod +x /usr/local/bin/dns-stats.sh | |||
</ | |||
== Заключение == | == Заключение == | ||
Текущая версия от 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):
- [Выделенные серверы](https://ark-hoster.ru/dedicated/) - для высоконагруженных DNS серверов
- [VPS/VDS серверы](https://ark-hoster.ru/vpsgame/) - для небольших и средних проектов
Наши специалисты помогут с настройкой DNS и обеспечением безопасности вашего сервера!