2.5.1.3 Отказоустойчивый сервер DHCP
Скачать документПодготовка серверов
Для отказоустойчивой конфигурации необходимо два сервера DHCP.
Синхронизируйте время, между серверами с помощью ntp или chrony. Так же можно воспользоваться командой ntpdate, которую нужно выполнить на обоих серверах к одному ntp-серверу.
ntpdate <адрес сервера ntp>
Предположим, что имеется два сервера, на которых установлен пакет dhcp и добавлен в автозапуск.
Первичный сервер: 192.168.0.1
Вторичный сервер: 192.168.0.2
Настройка первичного сервера
1. Пропишите необходимые правила для iptables, если вы используете его.
iptables -A INPUT -p udp -m state --state NEW -m udp --dport 67 -j ACCEPT iptables -A INPUT -s 192.168.0.2/24 -p tcp -m state --state NEW -m tcp --dport 647 -j ACCEPT
2. Отредактируйте файл /etc/dhcp/dhcpd.conf.
Обратите внимание, что параметр mclt (максимальное время выполнения клиента) должен быть определен на главном сервере, но не должен быть определен на подчиненном сервере. Параметр split является еще одним параметром , который должен быть определен на первичном и опущен из конфигурации на вторичном сервере. Стоит отметить, что связь между отказоустойчивыми узлами не шифруется и не аутентифицируется.
failover peer "failover-dhcp" { primary; # Определяет главный сервер address 192.168.0.1; # адрес первичного сервера port 647; peer address 192.168.0.2; # адрес вторичного сервера peer port 647; max-response-delay 60; max-unacked-updates 10; mclt 3600; split 128; load balance max seconds 3; } authoritative; default-lease-time 86400; # 1 день max-lease-time 86400; # 1 день update-static-leases on; one-lease-per-client on; omapi-port 7911; omapi-key omapi_key; key omapi_key { algorithm hmac-md5; secret a6d79e096b7055ff51e5756c77947ab5==; # сформируйте секретный ключ с помощью любого генератора, указав тип шифрования hmac-md5 } subnet 192.168.0.0 netmask 255.255.255.0 { option subnet-mask 255.255.255.0; option broadcast-address 192.168.0.255; option routers 192.168.0.1; option domain-name-servers redos.test; option domain-search "redos.test"; pool { failover peer "failover-dhcp"; range 192.168.0.100 192.168.0.200; } }
- имя связи резервирования, задается в файле dhcpd.conf.
partner-address data
- IP адрес резервного сервера.
local-address data
- IP адрес текущего сервера.
partner-port data
- порт TCP, на котором резервный сервер ожидает подключения по протоколу failover.
local-port data
- порт TCP, на котором текущий сервер ожидает подключения по протоколу failover.
max-outstanding-updates integer
- количество обновлений, которые могли быть важными, но остались без ответа в этой связке резервирования.
mclt integer
- максимальное время перенаправления клиента в этой связке резервирования.
default-lease-time integer
cрок по умолчанию для клиентов, которые не запрашивают определенный срок аренды. Срок аренды DHCP может быть назначен от нуля секунд до бесконечности.
max-lease-time integer
максимальный срок аренды
update-static-leases data
если он включен, то сервер DHCP делает обновление DNS для клиентов.
one-lease-per-client data
если этот флаг включен, всякий раз, когда клиент отправляет DHCPREQUEST для конкретной аренды, сервер автоматически отчищает любые другие lease записи, которыми владеет клиент.
load-balance-max-secs integer
- максимальное значение в поле secs запроса клиента после которого будет произведена балансировка нагрузки.
load-balance-hba data
- массив хэшей буферов для балансировки нагрузки в этой связке резервирования.
local-state integer
- текущий статус сервера DHCP в этой связке резервирования. Возможные значения:
1 - партнер выключен 2 - обычная работа 3 - обмен данными прерван 4 - разрешение прервано 5 - потенциальный конфликт 6 - восстановление 7 - восстановление закончено 8 - выключение 9 - пауза 10 - запуск 11 - идет восстановление
- В общем случае делать изменения в этом атрибуте - плохая идея. Однако в случае, когда известно, что резервный сервер выключен, бывает необходимо явно указать что резервный сервер недоступен и необходимо взять на себя выданные адреса резервного сервера как можно быстрее. Если же вы указали, что резервный сервер выключен, а он работает (но временно недоступен), возможны конфликты назначения IP адресов.
partner-state integer
- текущий статус резервного сервера
local-stos integer
- время, в течение которого сервер работает в текущем статусе.
partner-stos integer
- время, в течение которого резервный сервер работает в текущем статусе.
hierarchy integer
- роль сервера: первичный (0) или вторичный (1) в текущей связке резервирования.
last-packet-sent integer
- время последнего пакета синхронизации, отправленного резервному серверу в связке.
last-timestamp-received integer
- время последнего пакета синхронизации, полученного от резервного сервера в связке.
skew integer
- разница между часами резервного и текущего сервера
max-response-delay integer
- время в секундах, по истечении которого если не получен ни один пакет синхронизации, определяется разрыв в соединении.
cur-unacked-updates integer
- количество сообщений об обновлении, полученных от резервного сервера, но пока не обработанных.
3. Из за того, что хеш находится в файле, закроем к нему доступ.
chmod 0600 /etc/dhcp/dhcpd.conf
4. Проверьте конфигурационный файл
dhcpd -t -cf /etc/dhcp/dhcpd.conf
5. Перезапустите сервис
systemctl restart dhcpd
Настройка вторичного сервера
1. Пропишите настройки для iptables, если используете его
iptables -A INPUT -p udp -m state --state NEW -m udp --dport 67 -j ACCEPT iptables -A INPUT -s 192.168.0.1/24 -p tcp -m state --state NEW -m tcp --dport 647 -j ACCEPT
2. Для вторичного (secondary) сервера:
failover peer "failover-dhcp" { secondary; # определитель вторичного сервера address 192.168.0.2; port 647; peer address 192.168.0.1; peer port 647; max-response-delay 60; max-unacked-updates 10; load balance max seconds 3; } authoritative; default-lease-time 86400; # 1 day max-lease-time 86400; # 1 day update-static-leases on; one-lease-per-client on; omapi-port 7911; omapi-key omapi_key; key omapi_key { algorithm hmac-md5; secret a6d79e096b7055ff51e5756c77947ab5==; # впишите тот же секретный ключ, как и на первичном сервере } subnet 192.168.0.0 netmask 255.255.255.0 { option subnet-mask 255.255.255.0; option broadcast-address 192.168.0.255; option routers 192.168.0.1; option domain-name-servers redos.test; option domain-search "redos.test"; pool { failover peer "failover-dhcp"; range 192.168.0.100 192.168.0.200; } }
3. Из за того, что хеш находится в файле, закроем к нему доступ.
chmod 0600 /etc/dhcp/dhcpd.conf
4. Проверьте конфигурационный файл
dhcpd -t -cf /etc/dhcp/dhcpd.conf
5. Перезапустите сервис
systemctl restart dhcpd
Дата последнего изменения: 10.09.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.