Мы запускаем DHCPD 4.1.1-P1 на сервере RHEL 6. В настоящее время у нас есть 1 класс, определенный для целей отказа. Теперь у нас есть потребность в сопоставлении классов, чтобы разрешить все устройства, соответствующие переменной, и запретить все остальное. Наша текущая конфигурация класса выглядит следующим образом, и мы сопоставляем MAC-адрес:
## Define denied
class "denied" {
match if substring (hardware,1,3) = 00:54:36;
}
И в объявлении пула мы запрещаем класс:
pool {
deny members of "denied";
range 192.168.100.100 192.168.100.200;
}
Наша новая конфигурация класса будет следующей:
## Define denied
class "denied" {
match if substring (hardware,1,3) = 00:54:36;
}
class "allowed" {
match if substring (hardware,1,3) = 00:42:12;
)
С объявлением пула:
pool {
allow members of "allowed";
deny members of "denied";
range 192.168.100.100 192.168.100.200;
}
Мой первый вопрос: нужен ли нам класс deny после того, как мы добавим класс allow? Насколько я понимаю, allow неявно отрицает все остальное. Кроме того, как мы могли бы сопоставить класс с нашим разрешенным классом по имени хоста, а не по MAC-адресу? В своем исследовании мне не удалось выяснить, как на самом деле будут выглядеть утверждения на примерах, которые я видел. В /var/lib/dhcp/dhcpd.leases у нас есть 2 строки возможных процентов для каждой записанной аренды.
hardware ethernet xx:xx:xx:xx:xx:xx;
client-hostname "hostname";
Я предполагаю, что если бы мы хотели сопоставить класс по имени хоста, это выглядело бы примерно так:
class "allowed" {
match if substring (client-hostname) = "hostname";
}
А объявление пула выглядело бы так:
pool {
allow members of "allowed";
deny members of "denied";
range 192.168.100.100 192.168.100.200;
}
Итак, резюмируя мои 2 вопроса еще раз.
1) неявно ли запрещает оператор «разрешающий член» в объявлении пула все остальное, и мне больше не нужен мой оператор deny?
2) Каков правильный синтаксис сопоставления классов для сопоставления по имени хоста?
неявно ли запрещает оператор "allow member" все остальное?
Ответ на этот вопрос можно найти на странице руководства dhcpd.conf:
Вы имеете в виду имя хоста запроса или имя хоста, настроенное на вашем DHCP-сервере?
Чтобы отреагировать на отправленное имя хоста, оно должно быть просто
match if (option host-name = “foobar”);
или для частичного:
match if substring(option host-name,0,2) = “foo”;
Соответствие в параметре конфигурации не соответствует ' похоже, не работает