Мы запускаем 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) оператор "разрешающий член" в объявлении пула неявно отрицает все остальное, и мне больше не понадобится мой оператор отказа?
2) Каков правильный синтаксис сопоставления классов для сопоставления имени хоста?
неявно ли отрицает все остальное оператор "allow member"?
Ответ на этот вопрос можно найти на странице руководства dhcpd.conf:
вы имеете в виду имя хоста запроса или имя хоста, настроенное на вашем dhcp-сервере?
Чтобы отреагировать на отправленное имя хоста, оно должно быть просто
match if (option host-name = “foobar”);
или для частичного:
match if substring(option host-name,0,2) = “foo”;
Соответствие опции конфигурации не работает