Я использую DHCPd-сервер ISC для моей сети, обслуживающей несколько подсетей. Одна из вещей, которые я хотел бы сделать, - это назначить определенный диапазон IP-адресов хостам с общим префиксом MAC (например, 00:01:02). Кроме того, назначения должны быть заменены назначениями с фиксированным адресом. Я искал это в Google, но не нашел ничего окончательного.
Бонус, если я могу поместить это выражение в раздел подсети моего dhcpd.conf (он лучше подошел бы для моего программного обеспечения для управления).
Что-то вроде этого:
class "specialK" {
match if substring (hardware, 1, 3) = 00:01:02;
}
subnet 10.0.0.0 netmask 255.255.255.0 {
pool {
range 10.0.0.16 10.0.0.32;
allow members of "specialK";
}
}
хм, это должно быть (аппаратное обеспечение, 0, 2) или (.. 1, 3), проверьте это. :)
В моей системе (debian lenny) мне нужно преобразовать двоичный код в ascii, чтобы сопоставить mac-адреса. В этом (рабочем) примере из моего dhcpd.conf server247 находится в классе "local", однако я даю ему фиксированный адрес, которого нет в пуле. Я бы рекомендовал, чтобы фиксированные адреса находились в отдельном диапазоне от динамически назначаемых адресов (они все еще могут находиться в той же подсети).
class "kvm" {
match if binary-to-ascii(16,8,":",substring(hardware, 1, 2)) = "56:11";
}
class "local" {
match if binary-to-ascii(16,8,":",substring(hardware, 1, 2)) = "52:54";
}
host meme {
fixed-address 10.1.0.254;
}
host server247 {
hardware ethernet 52:54:00:2f:ea:07;
fixed-address 10.1.0.247;
}
subnet 10.1.0.224 netmask 255.255.255.224 {
option routers 10.1.0.225;
pool {
allow members of "kvm";
range 10.1.0.226 10.1.0.235;
}
pool {
allow members of "local";
range 10.1.0.236 10.1.0.240;
}
pool {
# Don't use this pool. It is really just a range to reserve
# for fixed addresses defined per host, above.
allow known-clients;
range 10.1.0.241 10.1.0.253;
}
}
Для вашего примера вы бы сделали:
match if binary-to-ascii(16,8,":",substring(hardware, 1, 3)) = "00:01:02";