Быстро, доступно, безопасно!
Магазин готовых сайтов

Настройка bind (DNS) на AlmaLinux 8.10

Общая информация о настройке службы DNS на базе BIND 9.11 на сервере под управлением ОС AlmaLinux.

Настройка сервера на AlmaLinux 8.10 -> BIND 9.11

После того, как настроен веб-сервер и он открывается по IP-адресу необходимо настроить систему адресации, чтобы можно было заходить на него по имени домена.

Наш DNS сервер будет работать на IP-адресе 192.168.1.10.

Проверяем установлена ли служба: systemctl status named

Если нет - устанавливаем: dnf install bind

Проверить версию bind можно командами: named -v илиnamed -V

Редактируем конфигурацию: vim /etc/named.conf

Создаём именованный список IP-адресов — вторичных DNS-серверов, которым разрешён доступ: acl "allowed-ns" {
  192.0.2.2;
  192.0.2.3;
  192.0.2.4;
};

Меняем строку: listen-on port 53 { 127.0.0.1; };на listen-on port 53 { 127.0.0.1; 192.168.1.10; };

Разрешаем компьютерам из нашей подсети обращаться к DNS серверу, для этого меняем строку: allow-query { localhost; };на allow-query { localhost; 192.168.1.10/24; };чтобы разрешить запросы с любых серверов строка должна выглядеть так: allow-query { any; };

Запускаем службу DNS: systemctl start named

Для того, чтобы иметь возможность автоматически создавать список зон, а не добавлять каждый домен вручную, выносим информацию о них в отдельный файл: vim /var/named/zones.confв файл пишем: zone "example.com" IN {
    type master;
    file "/var/named/example.com.zone";
    allow-transfer { 1.1.1.1; };
};
где "1.1.1.1" - это IP-адрес вашего вторичного DNS сервера.

Чтобы данные о зонах загружались, добавляем в конец файла /etc/named.conf следующую строку: include "/var/named/zones.conf";

Создаем файлы зоны для нашего домена: vim /var/named/example.com.zoneв файл example.com.zone пишем: ; Zone file for example.com
$TTL 86400
@            86400   IN   SOA   ns1.example.com. web.example.com.   (
                                2023100501 ; Serial Number
                                7200   ; refresh
                                3600   ; retry
                                1209600   ; expire
                                86400   )
@            86400   IN   NS    ns1.example.com.
@            86400   IN   NS    ns2.example.com.
@            86400   IN   A     1.2.3.4
www          86400   IN   CNAME example.com.
mail         86400   IN   A     1.2.3.4
; Mail server MX record
example.com. 86400   MX   0     mail.example.com.
_dmarc.example.com.   86400 IN TXT "v=DMARC1; p=reject; sp=reject;"
example.com. 86400 IN TXT "v=spf1 a mx ip4:1.1.1.1 ~all"default._domainkey 86400 IN TXT "v=DKIM1; k=rsa; p=aBcDeFg ... XyZ"; ----- DKIM key default for example.com

Разрешаем брэндмауэру запросы к DNS: iptables -t filter -I INPUT 7 -p udp -m conntrack --ctstate NEW -m udp --dport 53 -j ACCEPT

После каждого редактирования файла зоны меняем серийный номер. Он должен состоять из даты в формате YYYYMMDD и счетчика, начинающегося с 01. Счетчик должен увеличиваться при каждом редактировании файла. Например: 2023072401 ; Serial Number

Перезагрузить файл конфигурации и зоны: systemctl reload namedперезагрузить службу: systemctl restart namedпосмотреть статус службы: systemctl status namedпроверить ответ NS сервера: nslookup example.com ns1.example.comпосмотреть версию bind: named -vболее подробная информация о bind: named -V


Настройка ns2, ns3 и т.д.

Согласно RFC 1034 (раздел 4.1), каждая DNS-зона должна иметь как минимум два авторитетных сервера, чтобы обеспечить отказоустойчивость и доступность — при недоступности NS1 остальные NS продолжают обслуживать зону.

Для каждого DNS-сервера надо сгенерировать TSIG-ключ, который используется для защищённой передачи зоны (AXFR) между master и slave DNS-серверами: tsig-keygen -a hmac-sha256 nsd-transfer-keyВместо "nsd-transfer-key" можно указать любое уникальное имя ключа, по которому мы будем ссылаться в nsd.conf и "/etc/named.conf". В результате команды мы должны получить ответ в виде (nsd-transfer-key заменено на более информативное ns2-example-2025): key "ns2-example-2025" {
    algorithm hmac-sha256;
    secret "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFG=";
};


Подстановочный SSL сертификат

Для использования в поддоменах www, mail, cpanel и т.п. требуется подстановочный (wildcard) SSL сертификат.

Создаём каталог для ключей /etc/named/keys с правами 750 (чтение/запись/выполнение для root, чтение/выполнение для группы named, остальным — запрет) и назначаем владельца root, группу named: install -d -m 750 -o root -g named /etc/named/keys Это защищённое место для TSIG-ключей.

Генерируем TSIG-ключ (алгоритм HMAC-SHA256, длина 256 бит) с именем acme-key.example.ru: dnssec-keygen -a HMAC-SHA256 -b 256 -n HOST acme-key.example.ruKacme-key.example.ru.+*.key - публичная часть;
Kacme-key.example.ru.+*.private - приватная часть; строка Key: в этом файле - секрет (base64) для named.conf и для Certbot RFC2136.

В файл /etc/named.conf перед строками "include" добавляем текст: /* TSIG для ACME */
key "acme-key.example.ru" {
      algorithm hmac-sha256;
      secret "qwertyuiopasdfghjklzxcvbnmqwertyui/qwertyui="; // значение из файла *.private (строка Key:)
}

В конец файла /etc/named.rfc1912.zones добавляем следующий текст: zone "example.ru" IN {
      type master;
      file "example.ru.zone";
      update-policy { grant acme-key.example.ru. name _acme-challenge.example.ru. TXT; };
};

Создаем ключ RNDC необходимый для аутентифицированного управления BIND через утилиту rndc: rndc-confgen -a -r /dev/urandomи присваиваем необходимые права и разрешения: chmod 640 /etc/rndc.key && chown root:named /etc/rndc.key

Подключаем RNDC в BIND - добавляем в файл /etc/named.conf перед include'ами следующий текст: include "/etc/rndc.key";
controls {
      inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; };
};

Бывают случаи, когда в системе уже работает один DNS-сервер, например NSD и порт 53 уже занят. Тогда, при необходимости, меняем в файле /etc/named.conf порт 53 на другой, например, 5353:       listen-on port 5353 { 127.0.0.1; };
      listen-on-v6 port 5353 { ::1; };

Метки: bind

Опрос

Адаптирован ли ваш сайт для смартфонов и планшетов? (голосов: 35)

  • Да - 4 (11%)
  • Нет - 2 (6%)
  • Не знаю - 1 (3%)
  • Нет сайта - 28 (80%)