У меня есть DHCP-сервер, используемый для автоматической установки Debian: загрузка с PXE, а затем установка операционной системы с предустановкой.
Сервер DHCP (Debian isc-dhcp-server
package) настроен на выполнение операции (выполнение 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 настраивает сеть.
Я не ожидал второго запроса. Фактически, это соответствующая конфигурация пресида:
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
должно выглядеть так. Удалите разрывы строк, которые здесь добавлены только для улучшения читаемости и предотвращения горизонтальной прокрутки.
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