У меня есть DHCP-сервер, используемый для автоматической установки Debian: загрузка с PXE, а затем установка операционной системы с предустановкой.
DHCP-сервер (Debian ' s пакет isc-dhcp-server
) настроен на выполнение операции (выполнение HTTP POST) при передаче новой аренды:
subnet 192.168.0.0 netmask 255.255.252.0 {
[...]
filename "pxelinux.0";
on commit {
set client_ip = binary-to-ascii(10, 8, ".", leased-address);
execute("curl", "-X", "POST", [...])
}
}
[...]
host vmhost2 {
hardware ethernet 00:19:66:60:c3:61;
fixed-address 192.168.1.13;
}
Я заметил, что во время автоматической установки HTTP POST выполняется дважды : в первый раз через несколько секунд после запуска машины (это ожидается) и примерно через тридцать секунд, когда программа установки Debian настраивает сеть.
Я не ожидал второго запроса. Фактически, это соответствующая конфигурация preseed:
d-i netcfg/get_hostname string vmhost2 d-i netcfg/get_domain string pelicandd.com d-i netcfg/choose_interface select auto d-i netcfg/disable_autoconfig boolean true d-i netcfg/disable_dhcp boolean true d-i netcfg/dhcp_failed note d-i netcfg/dhcp_options select Configure network manually d-i netcfg/get_ipaddress string 192.168.1.13 d-i netcfg/get_netmask string 255.255.252.0 d-i netcfg/get_gateway string 192.168.1.1 d-i netcfg/get_nameservers string 192.168.1.3 192.168.1.4 8.8.8.8 8.8.4.4 d-i netcfg/confirm_static boolean true
Я думал, что параметр netcfg / disable_dhcp
указывает, что установщику не нужно связываться с DHCP-сервером, но все же это так.
Вопросы :
Почему установщик обращается к DHCP-серверу во второй раз, несмотря на параметры preseed?
Есть ли способ остановить это, используя параметр preseed, или путем изменения конфигурации DHCP-сервера ISC, чтобы игнорировать вторую аренду?
Первая последовательность DHCP DORA (обнаружение, предложение, запрос, принятие) запускается микропрограммой PXE клиента, пытающейся найти IP / MASK и данные PXE (расположение NBP + TFTP).
Прошивка PXE, затем TFTP получает и запускает соответствующее ядро + initrd. Когда это ядро запускается, ему требуется IP / MASK, тогда оно запускает вторую последовательность DHCP DORA (это обычный запрос DHCP "не PXE")
Чтобы избежать второго попадания DHCP, вы должны вручную установить статическую конфигурацию сети в командной строке «ядра» ; вы не можете установить эту информацию для сжатого файла, который должен быть извлечен по сети, потому что ядро будет вынуждено использовать DHCP, чтобы его сетевые службы правильно работали, чтобы получить файл с предварительной загрузкой ... вы видите проблему с яйцом-куриным?
Вы можете передать соответствующие статические сетевые переменные preseed, «добавленные» в командную строку ядра, или использовать команду Pxelinux ipappend
.
ПРИМЕЧАНИЕ: Пожалуйста, учтите, что синтаксис переменных preseed немного отличается, когда используется в файле preseed или в командной строке ядра, например:
d-i netcfg/get_ipaddress string 192.168.1.13 <<< preseed file
netcfg/get_ipaddress=192.168.1.13 <<< kernel command line
Окончательное добавление
должно выглядеть так. Удалите разрывы строк, которые здесь добавлены только для улучшения читаемости и предотвращения горизонтальной прокрутки.
append
[...]
netcfg/get_ipaddress=192.168.1.13
netcfg/get_netmask=255.255.252.0
netcfg/get_gateway=192.168.1.1
netcfg/get_nameservers=192.168.1.3
netcfg/disable_autoconfig=true