From ecd364a8b431a8eea353f60fb83c563fbefc61a0 Mon Sep 17 00:00:00 2001 From: sagitov 3b Date: Fri, 13 Feb 2026 15:24:28 +0000 Subject: [PATCH] abu --- DNS server | 175 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 DNS server diff --git a/DNS server b/DNS server new file mode 100644 index 0000000..cc17401 --- /dev/null +++ b/DNS server @@ -0,0 +1,175 @@ +#!/bin/bash +# ============================================================================ +# Скрипт базовой настройки DNS-сервера BIND +# Требует прав root. Работает на RHEL/CentOS/Fedora (проверено на RHEL 8/9) +# ============================================================================ +set -euo pipefail + +# === КОНФИГУРАЦИЯ (измените значения под вашу среду) === +DNS_SERVER_IP="192.168.0.1" # IP-адрес сервера для прослушивания +DOMAIN="example.org" # Имя локальной зоны +ALLOW_QUERY="any" # Сеть для запросов (пример: 192.168.0.0/24) +FORWARDERS="8.8.8.8; 8.8.4.4;" # Адреса внешних DNS-серверов +REVERSE_ZONE="10.168.192.in-addr.arpa" # Обратная зона для сети 192.168.10.0/24 +# ======================================================= + +# Проверка прав root +if [[ $EUID -ne 0 ]]; then + echo "❌ Ошибка: Скрипт должен запускаться от имени root (sudo)" + exit 1 +fi + +# Проверка установки BIND +if ! rpm -q bind &>/dev/null; then + echo "⚠️ BIND не установлен. Установка..." + dnf install -y bind bind-utils || yum install -y bind bind-utils +fi + +# Резервная копия конфигурации +NAMED_CONF="/etc/named.conf" +BACKUP_FILE="${NAMED_CONF}.backup.$(date +%Y%m%d_%H%M%S)" +cp -f "$NAMED_CONF" "$BACKUP_FILE" +echo "✅ Создана резервная копия: $BACKUP_FILE" + +# Создание директории для зон +ZONE_MASTER_DIR="/var/named/master" +mkdir -p "$ZONE_MASTER_DIR" + +# === Настройка прямой зоны === +ZONE_FILE_FORWARD="${ZONE_MASTER_DIR}/${DOMAIN}" +cat > "$ZONE_FILE_FORWARD" < "$ZONE_FILE_REVERSE" < "$NAMED_CONF" </dev/null; then + echo "❌ Ошибка синтаксиса в конфигурации! Восстанавливаем резервную копию..." + cp -f "$BACKUP_FILE" "$NAMED_CONF" + exit 1 +fi + +# Перезапуск службы +systemctl restart named +systemctl enable named --now + +# Проверка статуса +if systemctl is-active --quiet named; then + echo -e "\n✅ DNS-сервер успешно запущен!" + echo -e "\n🔍 Проверка работоспособности:" + echo " nslookup test.${DOMAIN} ${DNS_SERVER_IP}" + echo " dig @${DNS_SERVER_IP} _ldap._tcp.${DOMAIN} SRV" + echo " nslookup 192.168.10.50 ${DNS_SERVER_IP}" + echo -e "\n📄 Логи:" + echo " tail -f /var/log/bind/query.log" +else + echo "❌ Не удалось запустить службу named. Проверьте логи:" + journalctl -u named -n 50 --no-pager + exit 1 +fi \ No newline at end of file