Конфигурация DHCP-сервера/DHCP-Proxy
| Настройки являются опциональными и используются для получения начального загрузчика iPXE для удаленной установки ОС по сети. Если вы планируете выполнять установку по сети с медианосителя, настройки, описанные в разделе, не требуются (см. раздел «Работа с модулем osmax-provisioner»). |
Выберите один из следующих вариантов:
-
Если вы используете DHCP-сервер и у вас есть доступ к настройкам вашего DHCP-сервера, вы можете настроить его для распределения IP-адресов и управления сетевыми параметрами, а также предоставить пользовательскую конфигурацию сети для загрузки iPXE.
-
Если вы не можете изменить настройки DHCP-сервера, разверните DHCP-Proxy (при его отсутствии) и внесите необходимые изменения в его конфигурацию, чтобы он мог взаимодействовать с вашим iPXE-загрузчиком.
Ниже приведены примеры конфигурации DHCP-сервера и DHCP-Proxy. В конфигурации предусмотрены условия для архитектур BIOS и UEFI. Для каждой архитектуры указываются свои файлы загрузчиков, которые загружаются через TFTP-сервер или HTTP-репозиторий. При этом в инфраструктуре должны быть развернуты TFTP-сервер и/или HTTP-репозиторий, в зависимости от используемой архитектуры (BIOS или UEFI).
Пример конфигурации DHCP-сервера
# cat /etc/dhcp/dhcpd.conf
# базовые DHCP-опции
option domain-name "wd2.local";
option domain-name-servers 192.168.11.10;
default-lease-time 7776000;
max-lease-time 7776000;
option ntp-servers 192.168.0.2;
option routers 192.168.11.10;
option ntp-servers 192.168.0.2;
ddns-updates on;
ddns-update-style interim;
ignore client-updates;
key dhcp-server.wd2.local. {
algorithm hmac-md5;
secret "R2xOu1NWXSPkvNqfP8Rm6Q==";
}
# Определение формата опции 93
# При работе без DHCP-proxy раскомментировать
#option client-architecture code 93 = unsigned integer 16;
# Настройка сегмента сети
subnet 192.168.11.0 netmask 255.255.255.0 {
range 192.168.11.100 192.168.11.200;
# При работе без DHCP-proxy раскомментировать блок
## Определение архитектуры клиента:
## Определение архитектуры DHCP-клиента как iPXE
# if exists user-class and option user-class = "iPXE" {
## Путь до iPXE-инструкции для iPXE-загрузчика
# filename "${osmax_provisioner_base_url}/v1/boot_loaders/ipxe/config?templateSlug={templateSlug}";
## Определение архитектуры DHCP-клиента как UEFI HTTP
# } elsif option client-architecture = encode-int ( 16, 16 ) {
## Путь до ipxe-загрузчика для UEFI
# filename "${fqdn_http_repo}/ipxe.efi";
# option vendor-class-identifier "HTTPClient";
## Определение архитектуры DHCP-клиента как BIOS
# } elsif option client-architecture = 00:00 {
## Имя файла iPXE-загрузчика для BIOS на TFTP-сервере
# filename "undionly.kpxe";
## Адрес TFTP-сервера
# next-server ${fqdn_tftp_server};
## Определение архитектуры DHCP-клиента как UEFI
# } elsif option client-architecture = 00:09 {
## Имя файла iPXE-загрузчика для UEFI на TFTP-сервере
# filename "ipxe.efi";
## Адрес TFTP-сервера
# next-server ${fqdn_tftp_server};
## Определение архитектуры DHCP-клиента как UEFI
# } elsif option client-architecture = 00:07 {
## Имя файла iPXE-загрузчика для UEFI на TFTP-сервере
# filename "ipxe.efi";
## Адрес TFTP-сервера
# next-server ${fqdn_tftp_server};
## Если архитектура не определена, отдавать iPXE-загрузчик для UEFI
# } else {
## Имя файла iPXE-загрузчика для UEFI на TFTP-сервере
# filename "ipxe.efi";
## Адрес TFTP-сервера
# next-server ${fqdn_tftp_server};
# }
# базовые DHCP-опции
ddns-domainname "wd2.local";
ddns-rev-domainname "in-addr.arpa";
zone 11.168.192.in-addr.arpa. {
primary 127.0.0.1;
key dhcp-server.wd2.local.;
}
}
Пример конфигурации DHCP-сервера c доверенной установкой
# cat /etc/dhcp/dhcpd.conf
# базовые DHCP-опции
option domain-name "wd2.local";
option domain-name-servers 192.168.11.10;
default-lease-time 7776000;
max-lease-time 7776000;
option ntp-servers 192.168.0.2;
option routers 192.168.11.10;
option ntp-servers 192.168.0.2;
ddns-updates on;
ddns-update-style interim;
ignore client-updates;
key dhcp-server.wd2.local. {
algorithm hmac-md5;
secret "R2xOu1NWXSPkvNqfP8Rm6Q==";
}
# Определение формата опции 93
# При работе без DHCP-Proxy раскомментировать
#option client-architecture code 93 = unsigned integer 16;
# настройка сегмента сети
subnet 192.168.11.0 netmask 255.255.255.0 {
range 192.168.11.100 192.168.11.200;
# При работе без DHCP-Proxy раскомментировать блок
## Определение архитектуры клиента:
## Определение архитектуры DHCP-клиента как iPXE
# if exists user-class and option user-class = "iPXE" {
## Путь до iPXE-инструкции для iPXE-загрузчика (по протоколу HTTPS)
# filename "${osmax_provisioner_base_url}/v1/boot_loaders/ipxe/config?templateSlug={templateSlug}";
## Определение архитектуры DHCP-клиента как UEFI HTTP
# } elsif option client-architecture = encode-int ( 16, 16 ) {
## Путь до ipxe-загрузчика для UEFI
# filename "${fqdn_http_repo}/ipxe.efi";
# option vendor-class-identifier "HTTPClient";
## Определение архитектуры DHCP-клиента как BIOS
# } elsif option client-architecture = 00:00 {
## Имя файла iPXE-загрузчика для BIOS на TFTP-сервере
# filename "undionly.kpxe";
## Адрес TFTP-сервера
# next-server ${fqdn_tftp_server};
## Определение архитектуры dhcp-клиента как UEFI
# } elsif option client-architecture = 00:09 {
## Имя файла iPXE-загрузчика для UEFI на TFTP-сервере
# filename "ipxe.efi";
## Адрес TFTP-сервера
# next-server ${fqdn_tftp_server};
## Определение архитектуры DHCP-клиента как UEFI
# } elsif option client-architecture = 00:07 {
## Имя файла iPXE-загрузчика для UEFI на TFTP-сервере
# filename "ipxe.efi";
## Адрес TFTP-сервера
# next-server ${fqdn_tftp_server};
## Если архитектура не определена отдавать iPXE-загрузчик для UEFI
# } else {
## Имя файла iPXE-загрузчика для UEFI на TFTP-сервере
# filename "ipxe.efi";
## Адрес TFTP-сервера
# next-server ${fqdn_tftp_server};
# }
# базовые DHCP-опции
ddns-domainname "wd2.local";
ddns-rev-domainname "in-addr.arpa";
zone 11.168.192.in-addr.arpa. {
primary 127.0.0.1;
key dhcp-server.wd2.local.;
}
}
Пример конфигурации DHCP-Proxy
# cat /etc/dnsmasq.d/dhcp.conf
# Основные настройки dnsmasq
dhcp-no-override
pxe-prompt="Press any key for boot menu", 2
# Отключает DNS-службу, оставляя только DHCP-функциональность.
port=0
# Включает логирование DHCP-сообщений.
log-dhcp
# Создание меток для сопоставления архитектур
dhcp-match=set:x86PC, option:client-arch, 0
dhcp-match=set:BC_EFI, option:client-arch, 7
dhcp-match=set:EFI _x86-64, option:client-arch, 9
dhcp-match=set:HTTPClient,option:client-arch,16
dhcp-match=set:iPXE,175
# Загрузочные опции для iPXE-клиентов на основе меток
dhcp-boot=tag:iPXE,${osmax_provisioner_base_url}/v1/boot_loaders/ipxe/config?templateSlug={templateSlug}
dhcp-boot=tag:iPXE,tag:x86PC,${osmax_provisioner_base_url}/v1/boot_loaders/ipxe/config?templateSlug={templateSlug},,0.0.0.1
dhcp-boot=tag:HTTPClient,${fqdn_http_repo}/ipxe.efi
dhcp-boot=tag:!iPXE,tag:x86PC,undionly.kpxe,${fqdn_tftp_server}
dhcp-boot=tag:!iPXE,tag:BC_EFI,ipxe.efi,${fqdn_tftp_server}
dhcp-boot=tag:!iPXE,tag:EFI_ x86-64,ipxe.efi,${fqdn_tftp_server}
# Диапазон DHCP, используемый в режиме проксирования (без выдачи IP-адресов).
dhcp-range=192.168.11.100,proxy
# DHCP option 93 | Client architecture
# 0 Standard PC BIOS
# 6 32-bit x86 EFI
# 7 64-bit x86 EFI
# 9 64-bit x86 EFI (obsolete)
# 10 32-bit ARM EFI
# 11 64-bit ARM EFI
# 16 64-bit x86 UEFIhttpClient
Пример конфигурации DHCP-Proxy с доверенной установкой
# cat /etc/dnsmasq.d/dhcp.conf
# Основные настройки dnsmasq
dhcp-no-override
pxe-prompt="Press any key for boot menu", 2
# Отключает DNS-службу, оставляя только DHCP-функциональность.
port=0
# Включает логирование DHCP-сообщений.
log-dhcp
# Создание меток для сопоставления архитектур
dhcp-match=set:x86PC, option:client-arch, 0
dhcp-match=set:BC_EFI, option:client-arch, 7
dhcp-match=set:EFI _x86-64, option:client-arch, 9
dhcp-match=set:HTTPClient,option:client-arch,16
dhcp-match=set:iPXE,175
# Загрузочные опции для iPXE-клиентов на основе меток
## Путь до iPXE-инструкции для iPXE-загрузчика (по протоколу HTTPS)
dhcp-boot=tag:iPXE,${osmax_provisioner_base_url}/v1/boot_loaders/ipxe/config?templateSlug={templateSlug}
## Путь до iPXE-инструкции для iPXE-загрузчика (по протоколу HTTPS)
dhcp-boot=tag:iPXE,tag:x86PC,${osmax_provisioner_base_url}/v1/boot_loaders/ipxe/config?templateSlug={templateSlug},,0.0.0.1
dhcp-boot=tag:HTTPClient,${fqdn_http_repo}/ipxe.efi
dhcp-boot=tag:!iPXE,tag:x86PC,undionly.kpxe,${fqdn_tftp_server}
dhcp-boot=tag:!iPXE,tag:BC_EFI,ipxe.efi,${fqdn_tftp_server}
dhcp-boot=tag:!iPXE,tag:EFI_ x86-64,ipxe.efi,${fqdn_tftp_server}
# Диапазон DHCP, используемый в режиме проксирования (без выдачи IP-адресов).
dhcp-range=192.168.11.100,proxy
# DHCP option 93 | Client architecture
# 0 Standard PC BIOS
# 6 32-bit x86 EFI
# 7 64-bit x86 EFI
# 9 64-bit x86 EFI (obsolete)
# 10 32-bit ARM EFI
# 11 64-bit ARM EFI
# 16 64-bit x86 UEFIhttpClient
| Плейсхолдеры из примера, указанные ниже, необходимо заменить вручную. |
-
${osmax_provisioner_base_url}— актуальная конечная точка (endpoint) модуляosmax-provisionerдля получения стартового скрипта начального загрузчика; -
{templateSlug}— уникальное системное имя шаблона конфигурационного файла для конечной точкиv1/boot_loaders/ipxe/config?templateSlug=, для получения стартового скрипта загрузчика iPXE (например:templateSlug=bios_ipxe_universal_base_script);Вы можете указать имя из предустановленного примера или задать новое, если вы планируете создать пользовательский шаблон. -
${fqdn_tftp_server}— доменное имя (FQDN) поднятого TFTP-сервера, на котором хранится файл начального загрузчика iPXE; -
${fqdn_http_repo}-- доменное имя (FQDN) HTTP-репозитория, на котором хранится файл начального загрузчика iPXE.