Я настраиваю DHCP-сервер на RHEL, где некоторые записи в файле создаются на более позднем этапе и могут часто регенерироваться. Я смотрел руководство по настройке dhcpd и include; руководство кажется лучшим подходом для этого.
Но похоже, что DHCP-сервер вообще не загружает внешний файл.
Вот мой dhcpd.conf:
default-lease-time 86400; # 24 hours in seconds
max-lease-time 604800; # 7 days in seconds
authoritative;
include "/opt/demo/deploy/extdhcp.conf"; #EXTERNAL FILE
subnet 192.200.1.0 netmask 255.255.255.0 {
option routers 192.200.1.1;
option subnet-mask 255.255.255.0;
option broadcast-address 192.200.1.255;
host ANSIBLE-01 {
hardware ethernet 00:50:56:8c:5e:47;
fixed-address 192.200.1.10;
}
}
Вот внешний файл конфигурации:
subnet 10.64.0.0 netmask 255.255.255.0 {
range 10.64.0.1 10.64.0.100;
option routers 10.64.0.254;
option subnet-mask 255.255.255.0;
option broadcast-address 10.64.0.255;
host ILO-1 {
hardware ethernet 00:50:56:8c:0e:fd;
fixed-address 10.64.0.55;
}
}
Это это то, что я вижу в журналах, это говорит мне, что внешний файл не был загружен в dhcpd.
2019-02-09T15:19:07.493576+00:00 dhcp-01.erewhon.com <daemon.err> dhcpd: DHCPDISCOVER from 00:50:56:8c:0e:fd via eth0: network 192.200.1.0/24: no free leases
2019-02-09T15:19:19.671670+00:00 dhcp-01.erewhon.com <daemon.err> dhcpd: message repeated 3 times: [ DHCPDISCOVER from 00:50:56:8c:0e:fd via eth0: network 192.200.1.0/24: no free leases]
2019-02-09T15:19:26.657147+00:00 dhcp-01.erewhon.com <daemon.err> dhcpd: DHCPDISCOVER from 00:50:56:8c:0e:fd via eth0: network 192.200.1.0/24: no free leases
2019-02-09T15:21:04.257982+00:00 dhcp-01.erewhon.com <daemon.err> dhcpd: message repeated 7 times: [ DHCPDISCOVER from 00:50:56:8c:0e:fd via eth0: network 192.200.1.0/24: no free leases]
2019-02-09T15:21:18.419381+00:00 dhcp-01.erewhon.com <daemon.err> dhcpd: DHCPDISCOVER from 00:50:56:8c:0e:fd via eth0: network 192.200.1.0/24: no free leases
Как видно из журналов, похоже, что dhcp подключает MAC к сети, определенной в dhcpd.conf, а не внешний файл.
Я неправильно понимаю правила include
?
Как видите, бесплатная аренда не отображается. Что, скорее всего, из-за того, что он уже получил IP из другого диапазона или по другой причине. Попробуйте удалить этот файл из внешнего файла.
host ILO-1 { аппаратный Ethernet 00: 50: 56: 8c: 0e: fd; фиксированный адрес 10.64.0.55; } }
Я могу подтвердить, что ваша строка включения выглядит правильно. Мы используем его таким же образом, но дополнительные файлы conf находятся в /etc/dhcp/conf.d/ (сервер centos). Возможно, убедитесь, что у dhcpd нет проблем с открытием / чтением вашего дополнительного файла. Есть ли какие-либо ошибки в ваших строках журнала после перезапуска службы, которые показывают трудности с чтением этого файла?
Я вижу, у вас есть директива include
над объявлением подсети. Я использую ту же настройку, что и вы, («статические» назначения IP для определенного MAC), у меня просто есть строка ниже всех объявлений в конце файла, и это работает для меня:
include "/etc/dhcp/host_defs.conf";
Как уже упоминалось в комментарии фон Мартина В., проблема здесь не во внешнем файле, а в конфигурации сети. DHCP-сервер увидит и попытается дать аренду из подсети, откуда приходит запрос. В логах видно, что запрос идет от субента 192.200.1.0/24:
dhcpd: DHCPDISCOVER from 00:50:56:8c:0e:fd via eth0: network 192.200.1.0/24: no free leases
Значит, DHCP-сервер пытается арендовать адрес из этого диапазона, который кажется заполненным. Теперь, даже если на сервере настроена другая подсеть, он не будет автоматически арендовать адрес оттуда. Также не имеет смысла раздавать адреса из какого-то другого диапазона, когда устройства подключены к сети 192.200.1.0/24. Это все равно не сработает. Решение здесь состоит в том, чтобы использовать либо VLAN в сети с ретранслятором dhcp, либо несколько интерфейсов на сервере dhcp.