Интеграция FreeIPA DNS и BIND DNS

Сегодня расссмотрим настройку интеграции FreeIPA DNS сервера в качестве мастер-контроллера DNS и двух внешних Bind-серверов для обслуживания собственных доменных зон в сети интернет.

Регистрация собственных NS-серверов

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

Добрый день.

Мы с вами такое уже настраивали, давно правда. У меня есть два сервера настроенные как NS сервера для домена shiskitech.ru (приобретен у вас). А настроил описание зоны и настроил трансфер между серерами.

Конфигурация зоны:

$TTL 86400
@ IN SOA ns1.shiskitech.ru. admin.shiskitech.ru. (
2026190203 ; Serial (дата + номер ревизии)
3600 ; Refresh (1 час)
1800 ; Retry (30 минут)
1209600 ; Expire (14 дней)
86400 ; Minimum TTL (1 день)
)

; NS-записи (серверы имён домена)
@ IN NS ns1.shiskitech.ru.
@ IN NS ns2.shiskitech.ru.

; A-записи для NS-серверов
ns1.shiskitech.ru. IN A 185.135.81.157
ns2.shiskitech.ru. IN A 45.155.204.127

; A-запись для самого домена (опционально)
shiskitech.ru. IN A 185.135.81.157

; Дополнительные записи (по необходимости)
www.shiskitech.ru. IN A 185.135.81.157
test.shiskitech.ru. IN A 185.135.81.157

Мне надо, чтобы вы настроили на своей стороне разрешение зоны на мои DNS-сервера. В консоли управления зоной у вас такого функционала нет и в прошлый раз вы мне сами настраивали.

Заранее спасибо.

Настройка основного домена на базе DNS-сервера Bind

Файл конфигурации /etc/bind/named.conf.options.

options {
        directory "/var/cache/bind";

        //========================================================================
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //========================================================================

        dnssec-validation no;
        allow-query { localhost; any; };
        listen-on-v6 { any; };
};

logging {
    // Канал для общих запросов
    channel query_log {
        file "/var/log/bind/queries.log" versions 3 size 5m;
        severity info;
        print-time yes;
        print-category yes;
        print-severity yes;
    };

    // Канал для передачи зон (AXFR/IXFR)
    channel transfer_log {
        file "/var/log/bind/transfers.log" versions 3 size 5m;
        severity info;
        print-time yes;
        print-category yes;
        print-severity yes;
    };

    // Канал для ошибок и предупреждений
    channel error_log {
        file "/var/log/bind/errors.log" versions 5 size 10m;
        severity error;
        print-time yes;
    };

    // Назначение категорий каналам
    category queries { query_log; };
    #category transfers { transfer_log; };
    category xfer-in { transfer_log; };
    category xfer-out { transfer_log; };
    category config { error_log; };
    category security { error_log; };
    category general { error_log; };
};

Файл конфигурации /etc/bind/named.conf.local.

zone "shiskitech.ru" {
    type master;
    file "/var/lib/bind/db.shiskitech.ru";
    allow-transfer { 45.155.204.127; 127.0.0.1; };
    also-notify { 45.155.204.127; };
};

zone "rain.shiskitech.ru" {
    type slave;
    file "/var/lib/bind/db.rain.shiskitech.ru.slave";
    masters { 213.171.29.99; 10.101.5.14; 127.0.0.1;};
};

zone "rpz" {
    type master;
    allow-transfer { 45.155.204.127; 127.0.0.1;};
    also-notify { 45.155.204.127; };
    file "/var/lib/bind/db.rpz.local";
};

zone "anton-c.ru" {
    type slave;
    file "/var/lib/bind/db.anton-c.ru.slave";
    masters { 213.171.29.99; 10.101.5.14; 127.0.0.1;};
};

zone "bds.su" {
    type slave;
    file "/var/lib/bind/db.bds.su.slave";
    masters { 213.171.29.99; 10.101.5.14; 127.0.0.1;};
};

zone "interlan.xyz" {
    type slave;
    file "/var/lib/bind/db.interlan.xyz.slave";
    masters { 213.171.29.99; 10.101.5.14; };
};

Описание конфигурации основного домена /var/lib/bind/db.shiskitech.ru.

$TTL 86400
@   IN  SOA ns1.shiskitech.ru. admin.shiskitech.ru. (
        2026190203  ; Serial (дата + номер ревизии)
        3600        ; Refresh (1 час)
        1800        ; Retry (30 минут)
        1209600     ; Expire (14 дней)
        86400       ; Minimum TTL (1 день)
    )

; NS-записи (серверы имён домена)
@       IN  NS  ns1.shiskitech.ru.
@       IN  NS  ns2.shiskitech.ru.

; A-записи для NS-серверов
ns1.shiskitech.ru.   IN  A   185.135.81.157
ns2.shiskitech.ru.   IN  A   45.155.204.127

; A-запись для самого домена (опционально)
shiskitech.ru.       IN  A   185.135.81.157

; Дополнительные записи (по необходимости)
www.shiskitech.ru.   IN  A   185.135.81.157
test.shiskitech.ru.   IN  A   185.135.81.157

Перезапускаем DNS-сервер Bind.

# systemctl restart bind9

Проверяем передачу зоны основного домена.

# dig @127.0.0.1 shiskitech.ru AXFR

; <<>> DiG 9.18.39-0ubuntu0.22.04.3-Ubuntu <<>> @127.0.0.1 shiskitech.ru AXFR
; (1 server found)
;; global options: +cmd
shiskitech.ru.          86400   IN      SOA     ns1.shiskitech.ru. admin.shiskitech.ru. 2026190203 3600 1800 1209600 86400
shiskitech.ru.          86400   IN      NS      ns1.shiskitech.ru.
shiskitech.ru.          86400   IN      NS      ns2.shiskitech.ru.
shiskitech.ru.          86400   IN      A       185.135.81.157
ns1.shiskitech.ru.      86400   IN      A       185.135.81.157
ns2.shiskitech.ru.      86400   IN      A       45.155.204.127
test.shiskitech.ru.     86400   IN      A       185.135.81.157
www.shiskitech.ru.      86400   IN      A       185.135.81.157
shiskitech.ru.          86400   IN      SOA     ns1.shiskitech.ru. admin.shiskitech.ru. 2026190203 3600 1800 1209600 86400
;; Query time: 4 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) (TCP)
;; WHEN: Wed May 13 11:35:07 +07 2026
;; XFR size: 9 records (messages 1, bytes 273)

Настраиваем резервный контроллер домена

Резервный контроллер домена создам аналогичным образом на базе DNS-сервера Bind.

Файл конфигурации /etc/bind/named.conf.options.

options {
        directory "/var/cache/bind";
        //========================================================================
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //========================================================================
        dnssec-validation no;
        allow-query { localhost; any; };
        listen-on-v6 { any; };

};

logging {
    // Канал для общих запросов
    channel query_log {
        file "/var/log/bind/queries.log" versions 3 size 5m;
        severity info;
        print-time yes;
        print-category yes;
        print-severity yes;
    };

    // Канал для передачи зон (AXFR/IXFR)
    channel transfer_log {
        file "/var/log/bind/transfers.log" versions 3 size 5m;
        severity info;
        print-time yes;
        print-category yes;
        print-severity yes;
    };

    // Канал для ошибок и предупреждений
    channel error_log {
        file "/var/log/bind/errors.log" versions 5 size 10m;
        severity error;
        print-time yes;
    };

    // Назначение категорий каналам
    category queries { query_log; };
    #category transfers { transfer_log; };
    category xfer-in { transfer_log; };
    category xfer-out { transfer_log; };
    category config { error_log; };
    category security { error_log; };
    category general { error_log; };
};

Файл конфигурации /etc/bind/named.conf.local.

zone "shiskitech.ru" {
    type slave;
    file "/var/lib/bind/db.shiskitech.ru.slave";
    masters { 213.171.29.99; 10.101.5.14; };
};

zone "rain.shiskitech.ru" {
    type slave;
    file "/var/lib/bind/db.rain.shiskitech.ru.slave";
    masters { 213.171.29.99; 10.101.5.14; };
};

zone "anton-c.ru" {
    type slave;
    file "/var/lib/bind/db.anton-c.ru.slave";
    masters { 213.171.29.99; 10.101.5.14; };
};

zone "bds.su" {
    type slave;
    file "/var/lib/bind/db.bds.su.slave";
    masters { 213.171.29.99; 10.101.5.14; };
};

zone "interlan.xyz" {
    type slave;
    file "/var/lib/bind/db.interlan.xyz.slave";
    masters { 213.171.29.99; 10.101.5.14; };
};


zone "rpz" {
    type slave;
    file "/var/lib/bind/db.rpz.slave";
    masters { 185.135.81.157; };
};

Настройка DNS-сервера на базе FreeIPA

Переходим в web-интерфейсе управления в раздел Сетевые службы -> DNS -> зоны DNS и создаем дополнительный домен.

Настройка домена в WEB-интерфейсе Free IPA

Можно не использовать web-интерфейс а проделать эти операции из консоли сервера.

Создаем домен.

# kinit admin
# ipa dnszone-add anton-c.ru --force --skip-overlap-check --admin-email=chernousov@anton-c.ru
  Zone name: anton-c.ru.
  Active zone: True
  Authoritative nameserver: srv-prod-rain-05.rain.shiskitech.ru.
  Administrator e-mail address: chernousov.anton-c.ru
  SOA serial: 1778651044
  SOA refresh: 3600
  SOA retry: 900
  SOA expire: 1209600
  SOA minimum: 3600
  BIND update policy: grant RAIN.SHISKITECH.RU krb5-self * A; grant RAIN.SHISKITECH.RU krb5-self * AAAA; grant RAIN.SHISKITECH.RU krb5-self * SSHFP;
  Dynamic update: False
  Allow query: any;
  Allow transfer: none;

Инструментов импорта существующих данных увы не предусмотрено, поэтому придется создавать записи вручную или написать скрипт конвертации. В моем случае было проще забить данные руками.

Разрешаем трансфер зоны.

# ipa dnszone-mod interlan.xyz --allow-transfer="10.101.5.9;10.101.5.7;45.155.204.127;185.135.81.157;"
  Zone name: interlan.xyz.
  Active zone: True
  Authoritative nameserver: srv-prod-rain-05.rain.shiskitech.ru.
  Administrator e-mail address: hostmaster
  SOA serial: 1778652125
  SOA refresh: 3600
  SOA retry: 900
  SOA expire: 1209600
  SOA minimum: 3600
  BIND update policy: grant RAIN.SHISKITECH.RU krb5-self * A; grant RAIN.SHISKITECH.RU krb5-self * AAAA; grant RAIN.SHISKITECH.RU krb5-self * SSHFP;
  Dynamic update: False
  Allow query: any;
  Allow transfer: 10.101.5.9;10.101.5.7;45.155.204.127;185.135.81.157;

Инициализируем трансфер зоны на резервных DNS-серверах.

# rndc reload interlan.xyz

Проверяем логи передачи зоны.

# cat /var/log/bind/transfers.log | tail -n 100

Проверяем, что передача зоны прошла успешно.

13-May-2026 09:04:10.851 xfer-in: info: transfer of 'interlan.xyz/IN' from 213.171.29.99#53: connected using 213.171.29.99#53
13-May-2026 09:04:10.859 xfer-in: info: zone interlan.xyz/IN: transferred serial 1778652125
13-May-2026 09:04:10.859 xfer-in: info: transfer of 'interlan.xyz/IN' from 213.171.29.99#53: Transfer status: success
13-May-2026 09:04:10.859 xfer-in: info: transfer of 'interlan.xyz/IN' from 213.171.29.99#53: Transfer completed: 1 messages, 12 records, 693 bytes, 0.004 secs (173250 bytes/sec) (serial 1778652125)

Запрашиваем данные.

# dig @127.0.0.1 interlan.xyz AXFR

; <<>> DiG 9.18.39-0ubuntu0.22.04.3-Ubuntu <<>> @127.0.0.1 interlan.xyz AXFR
; (1 server found)
;; global options: +cmd
interlan.xyz.           86400   IN      SOA     srv-prod-rain-05.rain.shiskitech.ru. hostmaster.interlan.xyz. 1778652125 3600 900 1209600 3600
interlan.xyz.           86400   IN      NS      ns1.shiskitech.ru.
interlan.xyz.           86400   IN      NS      ns2.shiskitech.ru.
interlan.xyz.           86400   IN      NS      srv-prod-rain-05.rain.shiskitech.ru.
interlan.xyz.           86400   IN      MX      10 mx.yandex.net.
interlan.xyz.           86400   IN      A       45.155.204.127
094bdd5a762914a2b517921943f9e1fa.interlan.xyz. 86400 IN CNAME verify.bing.com.
mail._domainkey.interlan.xyz. 86400 IN  TXT     "v=DKIM1;" "k=rsa;" "t=s;" "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDgvZbsH4Aqi9hypaSakTw1S8fy3Wf2+RmUTHQnck0oQswbbopuG7yXHTZYzvN04w7/YOX5Su7w+HOBbdAvFUjWbNkoSuihngGNXDIp0A/HVSbBzxOMw/rBMykT+4IWQ6JNBl0/3pleSkmToa8uLNoZGQT0dOagu3bXlkOTSe09EQIDAQAB," "v=spf1" "redirect=_spf.yandex.net"
cloud.interlan.xyz.     86400   IN      A       213.171.29.99
git.interlan.xyz.       86400   IN      A       45.155.204.127
www.interlan.xyz.       86400   IN      A       45.155.204.127
interlan.xyz.           86400   IN      SOA     srv-prod-rain-05.rain.shiskitech.ru. hostmaster.interlan.xyz. 1778652125 3600 900 1209600 3600
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) (TCP)
;; WHEN: Wed May 13 09:10:39 MSK 2026
;; XFR size: 12 records (messages 1, bytes 732)

Сверяемся с WEB-интерфейсом.

Все работает.

Все отработало и можем мигрировать оставшиеся домены.

Похожие записи

Интеграция Nextcloud с Keycloak через OpenID Connect: пошаговое руководство по настройке SSO

Nextcloud — отличное решение для хранения файлов, но управление пользователями вручную становится головной болью при масштабировании. Keycloak позволяет централизовать аутентификацию, обеспечивая безопасность, поддержку MFA (двухфакторной аутентификации) и удобный вход через…

Установка и оптимизация WordPress на Ubuntu 24.04 (LEMP + Redis) на VPS с ограниченным объёмом RAM

Пакеты в Ubuntu по умолчанию настроены на работу с серверами, имеющими довольно много оперативной памяти. Нам нужно жёстко ограничить потребление памяти для работы на Mikro VPS. Запускать будем мой блог…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читать еще статьи

Интеграция Nextcloud с Keycloak через OpenID Connect: пошаговое руководство по настройке SSO

Интеграция Nextcloud с Keycloak через OpenID Connect: пошаговое руководство по настройке SSO

Установка и оптимизация WordPress на Ubuntu 24.04 (LEMP + Redis) на VPS с ограниченным объёмом RAM

Установка и оптимизация WordPress на Ubuntu 24.04 (LEMP + Redis) на VPS с ограниченным объёмом RAM

Интеграция Gitea и Keycloak: пошаговое руководство

Интеграция Gitea и Keycloak: пошаговое руководство

Настройка VS Code AI Chat для работы со сторонним OpenAI провайдером.

Настройка VS Code AI Chat для работы со сторонним OpenAI провайдером.

ProxyChains специфическая работа с прокси-серверами в UNIX/Linux-системах

ProxyChains специфическая работа с прокси-серверами в UNIX/Linux-системах

Полное руководство по установке и настройке мониторинга с Grafana и Prometheus: от установки до первого дашборда

Полное руководство по установке и настройке мониторинга с Grafana и Prometheus: от установки до первого дашборда