Резервный DHCP сервер Linux AD-DC Ubuntu 18.04

101 прочитал
Часть 2.10 - Резервный DHCP сервер Linux AD-DC Ubuntu 18.04
Часть 2.10 - Резервный DHCP сервер Linux AD-DC Ubuntu 18.04

Резервный DHCP сервер Linux AD-DC всегда должен быть готов в максимально короткие сроки принять на себя функционал основного DHCP сервера. Для этого резервный DHCP сервер должен быть проинтегрирован с DHCP сервером контроллера домена Linux AD-DC. После интеграции он будет находиться в режиме ожидания. Всегда готовый автоматически принять на себя роль DHCP сервера в случае падения олимпа. А в случае восстановления основного контроллера домена, резервный DHCP сервер вернёт главенствующую роль его DHCP серверу.

Резервный DHCP сервер Linux AD-DC

Настраиваем DHCP сервер

Начинаем конечно же с установки.

sudo apt-get install isc-dhcp-server

Экспортируем данные необходимые для интеграции dhcp и dns сервера

sudo samba-tool domain exportkeytab --principal=dhcpduser@ADMINGUIDE.LAN /etc/dhcpduser.keytab
sudo chown dhcpd:dhcpd /etc/dhcpduser.keytab
sudo chmod 400 /etc/dhcpduser.keytab

Создаём скрипт ответственный за обновления локальной DNS зона

sudo nano /usr/local/bin/dhcp-dyndns.sh

Копируем в него следующее содержимое:

Устанавливаем права на скрипт:

sudo chmod 755 /usr/local/bin/dhcp-dyndns.sh

Настраиваем dhcp сервер, предварительно забекапив старый конфиг

sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.original
sudo nano /etc/dhcp/dhcpd.conf

Вставляем следующее содержимое:

Настройка ag-dc-1.adminguide.lan

Теперь переходим к текущему владельцу FSMO ролей, серверу ag-dc-1

Открываем конфиг dhcpd

sudo nano /etc/dhcp/dhcpd.conf

Вставляем следующее содержимое:

Генерируем на ag-dc-1 случайный OMAPI ключ и отображаем его с помощью команды

sudo dnssec-keygen -a HMAC-MD5 -b 512 -n USER DHCP_OMAPI
sudo cat Kdhcp_omapi.+*.private |grep ^Key|cut -d ' ' -f2-

У меня ключ следующий:

08bfJKl4Sg++xTfRnDlTbCT9PhxOAf9QSyULgppI77Hv2Wc8iD4tvl4NU8BZhPU62WjQNVt08VBhEpeZa+0Mvw==

Его то мне и нужно подставить dhcpd.conf в блок key, чтобы в конфигах обоих серверов получилось вот так:

key omapi_key {
algorithm hmac-md5;
secret "08bfJKl4Sg++xTfRnDlTbCT9PhxOAf9QSyULgppI77Hv2Wc8iD4tvl4NU8BZhPU62WjQNVt08VBhEpeZa+0Mvw==";
}

Перезапускаем DHCP сервер на обоих серверах:

sudo service isc-dhcp-server stop && sudo service isc-dhcp-server start

Если всё сделано правильно, то за считанные секунды DHCP сервера придут к соответствию. DHCP сервер ag-dc-1 передаст на DHCP сервер ag-dc-2 всю имеющуюся у себя инфу по лизам и в сислогах обоих контроллеров доменов появится следующая строчка:

Jan 1 21:09:38 ag-dc-1 dhcpd[5071]: failover peer adminguide-dhcp-failover: Both servers normal

Пришла пора к донастройке DHCP сервера ag-dc-2. А именно к дообучению его аппармора (в случае если он у вас не отключен)

Резервный DHCP сервер Linux AD-DC – Проверяем

Выключаем ISC-DHCP на ag-dc-1 командой

sudo service isc-dhcp-server stop

В сислоге на ag-dc-2 вы увидите:

Jan 1 21:14:28 ag-dc-2 dhcpd[25150]: peer adminguide-dhcp-failover: disconnected
Jan 1 21:14:28 ag-dc-2 dhcpd[25150]: failover peer adminguide-dhcp-failover: I move from normal to communications-interrupted

И очень вскоре ISC-DHCP на ag-dc-2 начнёт переобуваться и приступать к выполнению роли основного DHCP сервера сети. Если не начнёт пишите, будем разбираться. Но в процессе ему в этом активно будет мешать apparmor. Потому нам необходимо дообучить apparmor, чтобы он перестал блокировать попытки обновить новым DHCP сервером локальную ДНС зону домена.

Наиболее простой способ это утилита aa-logprof и любой dhcp клиент имеющийся в сети и не являющийся членом домена. У меня для подобных тестов есть отдельная линуксовая машина. Если утилита aa-logprof не стоит, она входит в комплект утилит apparmor-utils. Потому установим весь комплект командой

sudo apt install apparmor-utils

На ag-dc-2 я запускаю aa-logprof

sudo aa-logprof

Если я вижу что-то кроме

Reading log entries from /var/log/syslog.
Updating AppArmor profiles in /etc/apparmor.d.
Enforce-mode changes:

Я всячески соглашаюсь с тем что запрашивает apparmor, нажимая (A)llow, (I)nherit, (S)ave Changes

Потом иду на линуксовую машину, сбрасываю текущий полученный от DHCP сервера адрес, и запрашиваю новый с помощью команды:

sudo dhclient -r && sudo dhclient

Ииии снова запускаю sudo aa-logprof на ag-dc-2. Занимаюсь я этим до тех пор, пока aa-logprof не выведет мне долгожданные 3 строки и ничего более:

Reading log entries from /var/log/syslog.
Updating AppArmor profiles in /etc/apparmor.d.
Enforce-mode changes:

После того как apparmor перестал реагировать на перезапрос клиентом информации у DHCP сервера, вы увидите в сислоге привычную картину валидно работающего автообновления DNS зоны.

Теперь обратно включаем isc-dhcp сервер на ag-dc-1. Для этого используем команду:

sudo service isc-dhcp-server start

Если сразу глянуть сислог на ag-dc-2 вы увидите

Jan 2 11:46:10 ag-dc-2 dhcpd[8344]: failover peer adminguide-dhcp-failover: I move from communications-interrupted to normal

dhcp сервер резервного контроллера домена начал разоружаться.

Подождав несколько секунд, и снова дёрнув dhcp клиент, вы увидите что ag-dc-2 – видит запросы, но не реагирует на них.

Jan 2 11:50:49 ag-dc-2 dhcpd[8344]: DHCPDISCOVER from 00:0c:29:20:ce:dc via ens160: load balance to peer adminguide-dhcp-failover
Jan 2 11:50:49 ag-dc-2 dhcpd[8344]: DHCPDISCOVER from 00:0c:29:20:ce:d2 via ens160: load balance to peer adminguide-dhcp-failover
Jan 2 11:50:50 ag-dc-2 dhcpd[8344]: DHCPREQUEST for 192.168.1.111 (192.168.1.100) from 00:0c:29:20:ce:dc via ens160: lease owned by peer
Jan 2 11:50:50 ag-dc-2 dhcpd[8344]: DHCPREQUEST for 192.168.1.112 (192.168.1.100) from 00:0c:29:20:ce:d2 via ens160: lease owned by peer

В то время как ag-dc-1 полноценно отрабатывает каждую полученную запись.

Заключение

Собственно на этом данная серия статей объявляется завершённой. Далее будут только правки и уточнения. Так же возможны небольшие статьи дополнения. Потому следите за обновлениями :). Освещение последующих вопросов, таких как кроссплатформенная интеграция контроллеров домена, всевозможные миграции и многое другое вы сможете прочитать в будущем (конец 2021 – начало 2022 года). Подписывайтесь чтобы быть в курсе событий :).

Ещё больше интересного контента в моём блоге в Zen и на моём канале YouTube. Особенно если вас интересуют видеоуроки. Подписывайтесь на каналы, ставьте лайки, делайте репосты, это поможет развитию контента проекта AdminGuide.Ru