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