Linux резервный dhcp сервер

DHCP/Failover

В этой статье мы рассмотрим настройку отказоустойчивого DHCP-сервера, состоящего из двух серверов ISC DHCPd с распределением нагрузки. На обоих серверах должна быть установлена одна и та же версия DHCP-сервера, так как разные версию могут реализовывать отказоустойчивость по разному.
Тестовый стенд:

  • DHCP-Server01 — IP 192.168.135.121 с установленным ISC DHCP server
  • DHCP-Server02 — IP 192.168.135.122 с установленным ISC DHCP server
  • 192.168.135.50 — 192.168.135.70 диапазон раздаваемых адресов
  • 192.168.135.251 — адрес шлюза
  • 192.168.135.252 — адрес DNS-сервера

Настройка

1. Выберите какой из серверов будет главным (Primary), а какой подчиненным(Secondary).
2. Убедитесь, что время между серверами синхронизировано, так как DHCP протокол чувствителен к рассинхронизации времени.
3. Определите какие сети и пулы адресов будут обслуживаться.
4. Добавьте следующие блоки, описывающие отказоустойчивую группу, в файл /etc/dhcp/dhcpd.conf :
Для Primary сервера:

failover peer «failover-partner»
failover peer «failover-partner»

5. Добавьте на обоих серверах ссылку на отказоустойчивую группу в каждый пул подсети:

subnet 192.168.135.0 netmask 255.255.255.0 < option routers 192.168.135.251; option subnet-mask 255.255.255.0; option nis-domain "domain.org"; option domain-name "domain.org"; option domain-name-servers 192.168.135.252; default-lease-time 21600; max-lease-time 43200; pool < failover peer "failover-partner"; range 192.168.135.50 192.168.135.70; >>

6. Добавьте на каждом сервере настройки OMAPI и секретный ключ:

omapi-port 7911; omapi-key omapi_key; key omapi_key < algorithm hmac-md5; secret tMvk90x7s+/kCt+6syEMeLlVLUF9+Jg3VNUfMC1JLzz52+VwpMPiGXkA JtEaI9/wgAUQAm6C4Q8Ao9f4UEBOUQ==; >

Для генерации ключа можно воспользоваться утилитой dnssec-keygen, которая поставляется вместе с DNS-сервером BIND:

# dnssec-keygen -a HMAC-MD5 -b 512 -n USER DHCP_OMAPI Kdhcp_omapi.+157+17748 # cat Kdhcp_omapi.+157+17748.key DHCP_OMAPI. IN KEY 0 3 157 tMvk90x7s+/kCt+6syEMeLlVLUF9+Jg3VNUfMC1JLzz52+VwpMPiGXkA JtEaI9/wgAUQAm6C4Q8Ao9f4UEBOUQ==

7. Перезагрузите оба сервера.
8. Проверьте отказоустойчивость поочередно выключая серверы.

Источник

Записки IT специалиста

Настраиваем отказоустойчивый DHCP-сервер на базе ISC DHCP

DHCP-сервер является одним из ключевых элементов сетевой инфраструктуры любого размера и его нормальное функционирование является залогом стабильной работы сети. Одним из способов это обеспечить является создание отказоустойчивой структуры из двух серверов, которые в нормальном режиме балансируют нагрузку, а в случае недоступности одного из серверов обслуживание всех его клиентов переходит к партнеру. В данной статье мы расскажем, как настроить такой сервер на базе ISC DHCP на платформе Linux.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

ISC DHCP — один из самых популярных пакетов DHCP-сервера для Linux и Unix-like систем, при этом он прост в настройке и нетребователен к ресурсам. В данной статье мы будем выполнять все действия в среде Debian, и инструкция подойдет для любой современной системы основанной на Debian или Ubuntu, а с поправкой на работу пакетного менеджера — для любых иных Linux дистрибутивов.

Читайте также:  Чем открыть образ линукса

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

isc-dhcp-failover-001.png

Если не указано иного, все команды выполняются от имени суперпользователя или через sudo.

Получение OMAPI-ключа

Для взаимодействия серверов между собой в составе отказоустойчивой структуры используется специальный интерфейс Object Management API (OMAPI), который позволяет получать доступ к объектам, расположенным в базе DHCP-сервера (данные об аренде, узлах, группах). в целях безопасности сервера производят взаимную аутентификацию и для этого нам понадобится специальный ключ.

Генерация ключа производится при помощи утилиты tsig-keygen, которая входит в состав DNS-сервера bind, но не будем же мы его ставить ради единственной, по сути, одноразовой операции. Кстати, если у вас есть установленный bind, то вы можете выполнить генерацию ключа на нем. Но мы пойдем другим путем. Создадим в домашней директории суперпользователя временную папку и перейдем в нее:

Теперь скачаем и распакуем содержимое пакета bind9, чтобы не вводить полное имя пакета во второй команде воспользуйтесь автоматической подстановкой по клавише Tab :

apt download bind9
dpkg-deb -xv bind9_1%3a9.16.27-1~deb11u1_amd64.deb /root/tmp

Перейдем в каталог с нужными бинарниками:

И выполним генерацию ключа:

./tsig-keygen DHCP.OMAPI > /root/dhсp_omapi.key

После чего временную папку со всем содержимым можно удалить, она нам больше не понадобится:

Посмотреть содержимое ключа можно командой:

В выводе вы должны увидеть следующее:

key "DHCP_OMAPI" algorithm hmac-sha256; 
secret "3Vx8hd3OWNWudoJlq3bvvnnwv0H8n44ZdwCoTkFVPHo авторитетность" сервера, в этом случае получив запрос на адрес, не принадлежащий текущей сети, сервер ответит сообщением DHCPNAK, которое предлагает клиенту отказаться от адреса и запросить новый. Это позволяет быстрее получать адреса мобильным клиентам, которые до этого были подключены к другой сети.

Затем в самый конец файла добавляем:

omapi-port 7911;
omapi-key omapi_key;
key omapi_key algorithm hmac-sha256;
secret 3Vx8hd3OWNWudoJlq3bvvnnwv0H8n44ZdwCoTkFVPHo=;
>

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

Также подключим внешние файлы конфигурации, мы разделили их на три части: конфигурация отказоустойчивости, настройки зоны и записи о резервировании. Хранить мы их будем в отдельной директории. Добавляем в конец файла еще три строки:

include "/etc/dhcp/dhcpd.d/failover.conf";
include "/etc/dhcp/dhcpd.d/subnet.conf";
include "/etc/dhcp/dhcpd.d/static.conf";

Сохраняем файл и перейдем к созданию внешних файлов и директорий:

mkdir /etc/dhcp/dhcpd.d
cd /etc/dhcp/dhcpd.d
touch failover.conf subnet.conf static.conf

Начнем с /etc/dhcp/dhcpd.d/failover.conf, в котором мы будем хранить конфигурацию отказоустойчивой группы, внесем в него следующий текст:

failover peer "failover-dhcp" primary; 
address 192.168.72.11;
port 647;
peer address 192.168.72.12;
peer port 647;
max-response-delay 60;
max-unacked-updates 10;
mclt 3600;
split 128;
load balance max seconds 3;
>

Самой первой строкой мы указываем тип сервера - primary - первичный. Затем следует адрес и порт сервера, адрес и порт партнера. Для работы используется порт 647, который специально используется для DHCP-FAILOVER. опция max-response-delay указывает на максимально допустимое расхождение времени между двумя узлами.

Два следующих параметра должны быть указаны только на первичном сервере.

  • mclt (максимальное время обслуживания клиента) - он показывает в течении какого времени сервер, находящийся в состоянии обработки отказа, будет ждать восстановления связи с партнером, по его истечении контроль за распределением IP-адресов полностью переходит под управление оставшегося сервера.
  • split - задает параметры разделения пула адресов между серверами. Может иметь значения от 0 до 256, при значении в 128 пул будет разделен 50/50, и нагрузка будет равномерно балансироваться между серверами. Если указать 256, то весь пул будет управляться первичным сервером, а вторичный сервер перейдет в режим горячей замены.

Следующий конфигурационный файл /etc/dhcp/dhcpd.d/subnet.conf хранит в себе параметры области:

subnet 192.168.72.0 netmask 255.255.255.0 option subnet-mask 255.255.255.0; 
option routers 192.168.72.1;
option domain-name-servers 192.168.72.1;
default-lease-time 28800;
max-lease-time 86400;
pool failover peer "failover-dhcp";
range 192.168.72.100 192.168.72.199;
>
>

Настройки области предельно просты, мы предлагаем клиентам самый базовый набор опций: маску сети, адрес маршрутизатора и адрес(а) DNS-серверов. С полным перечнем и синтаксисом всех доступных опций вы можете ознакомиться в данном разделе документации.

Отдельно обратим внимание на опции default-lease-time - время аренды, выдаваемое по умолчанию и max-lease-time - максимальное время аренды, которое может быть выдано по запросу клиента. Если клиент не запрашивает конкретное время аренды ему будет выдан адрес на время, указанное в параметре по умолчанию, иначе - желаемое время, но не превышающее максимальное. В нашем случае это 8 часов и сутки.

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

И, наконец, последний файл /etc/dhcp/dhcpd.d/static.conf, здесь мы будем хранить резервирование IP-адресов, по мере надобности добавляем в него секции:

host myhost hardware ethernet 08:45:32:00:00:23; 
fixed-address 192.168.72.121;
>

В данном случае мы зарезервировали за устройством с MAC-адресом 08:45:32:00:00:23 IP-адрес 192.168.72.121.

Проверим правильность конфигурации:

dhcpd -t -cf /etc/dhcp/dhcpd.conf

И при отсутствии ошибок обязательно перезагрузим сервер.

Для управления службой используйте

systemctl start|stop|restart|status isc-dhcp-server

isc-dhcp-failover-002.png

Убедившись, что служба запущена и работает без ошибок, перейдем к настройке второго сервера.

Настройка вторичного DHCP-сервера

Настройки обоих серверов должны быть полностью идентичны, за исключением настроек отказоустойчивой группы, поэтому можете выполнить все настройки аналогично предыдущей части статьи или просто скопировать конфигурационные файлы с первичного сервера на вторичный. Все изменения также должны вноситься синхронно. Поэтому мы и разделили конфигурацию на несколько внешних файлов: если вы внесли изменения в настройки области или добавили новые резервирования - просто скопируйте соответствующий файл с первичного сервера на вторичный.

Внести изменения нам потребуется только в файл /etc/dhcp/dhcpd.d/failover.conf, он должен иметь следующее содержимое:

failover peer "failover-dhcp" secondary; 
address 192.168.72.12;
port 647;
peer address 192.168.72.11;
peer port 647;
max-response-delay 60;
max-unacked-updates 10;
load balance max seconds 3;
>

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

Сохраняем настройки, проверяем их и перезагружаем сервер. Теперь нашу область будут обслуживать сразу оба сервера, балансируя нагрузку между собой. Для проверки по очереди выключаем сервера и убеждаемся, что оставшийся сервер берет на себя обслуживание клиентов.

Настройка брандмауэра

Если на ваших узлах включен брандмауэр iptables, то вам потребуется добавить в него два разрешающих правила:

iptables -A INPUT -p udp -m state --state NEW -m udp --dport 67 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 647 -j ACCEPT

Второе правило можно немного изменить, разрешив серверам принимать соединения только друг от друга:

iptables -A INPUT -s 192.168.72.12 -p tcp -m state --state NEW -m tcp --dport 647 -j ACCEPT

Где -s 192.168.72.12 - адрес сервера-партнера. Данные правила должны располагаться выше правила, запрещающего все входящие соединения.

Дополнительно

В завершение заглянем в /etc/default/isc-dhcp-server, здесь нас будут интересовать две последние опции в файле:

INTERFACESv4="eth0"
#INTERFACESv6=""

В первой из них желательно задать интерфейс (можно несколько) на которых ваш DHCP-сервер будет принимать запросы, это важно, если интерфейсов более одного. Вторая опция отвечает за работу c IPv6, если вы не работаете с этим протоколом и не настраивали обработку IPv6 запросов, то просто отключите шестую версию закомментировав эту строку.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Подпишись на наш Telegram-канал

Или подпишись на наш Телеграм-канал:

Источник

Оцените статью
Adblock
detector