В современных IT-инфраструктурах отказоустойчивость и непрерывность работы сервисов аутентификации и авторизации являются критическими факторами. Единый контроллер домена создаёт риск полной остановки доступа пользователей к ресурсам при его сбое или необходимости планового обслуживания. Решением этой проблемы является развёртывание дополнительного (вторичного) контроллера домена, который берёт на себя нагрузку при недоступности основного и обеспечивает балансировку запросов.
Рассмотрим процесс установки и настройки второго контроллера домена на базе Samba AD DC в операционной системе Debian 13. Предполагается, что у вас уже функционирует первичный контроллер (dc1) с параметрами, соответствующими нашей предыдущей инструкции.
💡 Присоединяйтесь к нашим сообществам!
Будьте в курсе новых статей, обновлений и полезных материалов:
Содержание
- Исходные данные
- Подготовка первичного контроллера (dc1)
- Подготовка вторичного контроллера (dc2)
- Присоединение к домену
- Настройка DNS-зон и PTR-записей
- Настройка синхронизации времени (NTP)
- Финальная настройка Kerberos
- Финальные проверки работоспособности
- Важные замечания
Исходные данные
| Параметр | dc1 (Primary) | dc2 (Secondary) |
|---|---|---|
| IP-адрес | 192.168.0.11 | 192.168.0.16 |
| Имя сервера | dc1.itsch.lan | dc2.itsch.lan |
| Домен | itsch.lan | itsch.lan |
| Шлюз | 192.168.0.1 | 192.168.0.1 |
| Подсеть | 192.168.0.0/24 | 192.168.0.0/24 |
| Роль | Первичный DC | Дополнительный DC |
Требования: чистая установка Debian 13 на сервере dc2; на dc1 уже развёрнут домен; оба сервера в одной подсети.
1. Подготовка первичного контроллера (dc1)
Выполняется на сервере 192.168.0.11.
1.1. Проверка и донастройка NTP-сервера
Отредактируем конфигурационный файл chrony:
mcedit /etc/chrony/chrony.conf
Добавляем строки:
allow 192.168.0.0/24
server pool.ntp.org iburst
Перезапусткаем chrony и проверяем источники:
systemctl restart chrony
chronyc sources -v
1.2. Настройка DNS-форвардера на dc1
Добавляем в /etc/samba/smb.conf (раздел [global]):
dns forwarder = 8.8.8.8 8.8.4.4
Перезапускаем Samba:
systemctl restart samba-ad-dc
Проверяем внешний резолвинг:
ping ya.ru -c 2
1.3. Добавление peer-связи для NTP (рекомендуется)
В файле /etc/chrony/chrony.conf на dc1 добавляем:
peer dc2.itsch.lan iburst
Перезапускаем chrony:
systemctl restart chrony
2. Подготовка вторичного контроллера (dc2)
Выполняется на сервере 192.168.0.16.
2.1. Базовая настройка системы
apt update && apt upgrade -y
apt install -y mc curl wget net-tools dnsutils chrony
hostnamectl set-hostname dc2.itsch.lan
echo "192.168.0.16 dc2.itsch.lan dc2" >> /etc/hosts
2.2. Настройка сети (временно указываем DNS на dc1)
Определяем имя интерфейса:
INTERFACE=$(ip link show | grep -E '^[0-9]:' | grep -v lo | awk -F': ' '{print $2}' | head -1)
Создаём /etc/network/interfaces:
mcedit /etc/network/interfaces
Содержимое:
auto lo
iface lo inet loopback
auto ${INTERFACE}
iface ${INTERFACE} inet static
address 192.168.0.16
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 192.168.0.11 127.0.0.1
dns-search itsch.lan
Применяем настройки:
systemctl restart networking
2.3. Фиксация резолвера для этапа присоединения
echo "nameserver 192.168.0.11" > /etc/resolv.conf
echo "search itsch.lan" >> /etc/resolv.conf
chattr +i /etc/resolv.conf
Проверяем связь с dc1:
ping dc1.itsch.lan
nslookup dc1.itsch.lan 192.168.0.11
3. Присоединение к домену
3.1. Установка пакетов Samba и Kerberos
apt install -y samba winbind krb5-user krb5-config
При установке Kerberos указываем:
- Realm:
ITSCH.LAN - Kerberos server:
dc1.itsch.lan - Administrative server:
dc1.itsch.lan
3.2. Остановка стандартных служб
systemctl stop smbd nmbd winbind
systemctl disable smbd nmbd winbind
mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
3.3. Вступление в домен как дополнительный DC
samba-tool domain join itsch.lan DC -U Administrator
Вводим пароль администратора домена. При успехе увидим: Joined domain ITSCH (SID ...) as a DC.
3.4. Копирование конфигурации Kerberos
cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
3.5. Окончательная настройка DNS на dc2
chattr -i /etc/resolv.conf
mcedit /etc/resolv.conf
Приведём к виду:
nameserver 127.0.0.1
nameserver 192.168.0.11
search itsch.lan
options timeout:1 attempts:1 rotate
chattr +i /etc/resolv.conf
3.6. Запуск службы Samba AD DC
systemctl unmask samba-ad-dc
systemctl enable samba-ad-dc
systemctl start samba-ad-dc
systemctl status samba-ad-dc
3.7. Первичная проверка репликации
samba-tool drs showrepl
Все inbound-соседи должны иметь статус success.
4. Настройка DNS-зон и PTR-записей
4.1. На dc2 создаём обратную зону и PTR-записи
samba-tool dns zonecreate dc2.itsch.lan 0.168.192.in-addr.arpa -U Administrator
samba-tool dns add dc2.itsch.lan 0.168.192.in-addr.arpa 16 PTR dc2.itsch.lan. -U Administrator
samba-tool dns add dc2.itsch.lan 0.168.192.in-addr.arpa 11 PTR dc1.itsch.lan. -U Administrator
4.2. На dc1 проверяем наличие зоны и добавляем PTR для dc2
Выполняем на dc1 (192.168.0.11):
samba-tool dns add dc1.itsch.lan 0.168.192.in-addr.arpa 16 PTR dc2.itsch.lan. -U Administrator
samba-tool dns add dc1.itsch.lan 0.168.192.in-addr.arpa 11 PTR dc1.itsch.lan. -U Administrator
4.3. Проверка обратного резолвинга
На dc2 выполняем:
nslookup 192.168.0.11 127.0.0.1
nslookup 192.168.0.16 127.0.0.1
5. Настройка синхронизации времени (NTP)
5.1. Настройка chrony на dc2
mcedit /etc/chrony/chrony.conf
Приводим к виду:
server dc1.itsch.lan iburst
pool 2.debian.pool.ntp.org iburst
allow 192.168.0.0/24
peer dc1.itsch.lan iburst
systemctl restart chrony
chronyc sources -v
Должен появиться источник ^* dc1.itsch.lan.
5.2. Проверка настройки на dc1
Убедимся, что в /etc/chrony/chrony.conf на dc1 есть строка peer dc2.itsch.lan iburst. Если нет – добавляем и перезапускаем chrony.
6. Финальная настройка Kerberos
На обоих контроллерах приведём /etc/krb5.conf к единому виду:
mcedit /etc/krb5.conf
[libdefaults]
default_realm = ITSCH.LAN
dns_lookup_realm = false
dns_lookup_kdc = true
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
[realms]
ITSCH.LAN = {
kdc = dc1.itsch.lan
kdc = dc2.itsch.lan
admin_server = dc1.itsch.lan
default_domain = itsch.lan
}
[domain_realm]
.itsch.lan = ITSCH.LAN
itsch.lan = ITSCH.LAN
Проверяем получение билета на dc2:
kinit administrator@ITSCH.LAN
klist
7. Финальные проверки работоспособности
7.1. Репликация
samba-tool drs showrepl
Все inbound-соседи должны быть успешны.
No NC replicated for Connection для исходящих соединений – нормально для свежего DC.7.2. Создание тестового пользователя
samba-tool user create testuser Test123! --given-name=Test --surname=User
Через минуту проверяем на dc1:
samba-tool user list | grep testuser
7.3. Проверка внешнего DNS через форвардер
Если ещё не настроили форвардер на dc2, добавляем в /etc/samba/smb.conf:
dns forwarder = 8.8.8.8 8.8.4.4
systemctl restart samba-ad-dc
ping ya.ru -c 2
7.4. Проверка отказоустойчивости
На клиенте прописываем оба DNS: 192.168.0.11 и 192.168.0.16. Останавливаем Samba на dc1:
systemctl stop samba-ad-dc
Убеждаемся, что клиент может резолвить имена и аутентифицироваться. Затем запускаем dc1 обратно:
systemctl start samba-ad-dc
7.5. Управление сроком действия пароля администратора
samba-tool user setexpiry administrator --noexpiry
Или можем сменить пароль:
samba-tool user setpassword administrator --newpassword="НовыйНадёжныйПароль123!"
Важные замечания
- Порядок DNS у клиентов: для быстрого переключения при отказе используем оба DNS-сервера (сначала 192.168.0.11, затем 192.168.0.16).
- Таймаут DNS настроен в
/etc/resolv.confпараметрамиtimeout:1 attempts:1 rotate. - При проблемах смотрим логи:
journalctl -u samba-ad-dc -f. - Необходимо периодически проверять репликацию и синхронизацию времени.
