vlan10---->firewall----->linux dhcp server
vlan20---------↑
У меня есть две VLAN (VLAN10 и VLAN20), и я хотел бы использовать Linux DHCP-сервер для централизованного назначения IP-адресов.
В брандмауэре Fortigate я использую DHCP-ретранслятор для получения клиентом DHCP-IP.
На сервере Linux DHCP я использую раздел [host], чтобы ограничить получение клиентами статического IP-адреса и разрешить известным хостам получать динамический IP-адрес.
########## config start #########
subnet 192.168.10.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.10.255;
option domain-name-servers 192.168.8.248,192.168.8.246;
option routers 192.168.10.1;
allow unknown-clients;
range 192.168.10.11 192.168.10.210;
}
subnet 192.168.20.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.20.255;
option domain-name-servers 192.168.8.248,192.168.8.246;
option routers 192.168.20.1;
deny unknown-clients;
range 192.168.20.11 192.168.20.210;
}
host host1 {
hardware ethernet 11:11:11:11:11:11;
fixed-address 192.168.10.20;
}
host host2 {
hardware ethernet 22:22:22:22:22:22;
fixed-address 192.168.10.21;
}
host host3 {
hardware ethernet 33:33:33:33:33:33;
fixed-address 192.168.20.20;
}
host host4 {
hardware ethernet 44:44:44:44:44:44;
}
########## config end #########
В этой конфигурации все клиенты могут получить IP из vlan10 или vlan20, но я хочу, чтобы host4 мог получить динамический IP только в vlan20.
Когда host4 подключается к vlan10, host4 не может получить ни одного IP-адреса от DHCP-сервера.
Как изменить конфигурацию?
решение1
Хотя я пока не могу это проверить, и, возможно, потребуется некоторая настройка синтаксиса, вы можете использовать определения «групп» и перечислить всех клиентов в группах для vlan10 и vlan20, но в файле vlan10 вы указываете host4 «запретить загрузку», что должно сработать.
Я сейчас не могу это проверить сам, но, возможно, стоит попробовать?
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/s1-dhcp-configuring-server.html#group https://www.daemon-systems.org/man/dhcpd.conf.5.htmlдля запрета загрузки
Вы также можете проверить, будет ли работать директива «includes», поэтому вы можете сделать что-то вроде:
dhcp.conf:
option domain-name-servers 192.168.8.248,192.168.8.246;
include "/etc/dhcp/vlan10.txt"
include "/etc/dhcp/vlan20.txt"
vlan10.txt
group {
subnet 192.168.10.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.10.255;
option routers 192.168.10.1;
allow unknown-clients;
range 192.168.10.11 192.168.10.210;
include "/etc/dhcp/vlan10.hosts.txt"
include "/etc/dhcp/vlan10.deny.hosts.txt"
}
}
vlan20.txt
group {
subnet 192.168.20.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.20.255;
option routers 192.168.20.1;
deny unknown-clients;
range 192.168.20.11 192.168.20.210;
include "/etc/dhcp/vlan10.hosts.txt"
include "/etc/dhcp/vlan20.hosts.txt"
}
}
vlan10.hosts.txt
host host1 { hardware ethernet 11:11:11:11:11:11; fixed-address 192.168.10.20; }
host host2 { hardware ethernet 22:22:22:22:22:22; fixed-address 192.168.10.21; }
host host3 { hardware ethernet 33:33:33:33:33:33; fixed-address 192.168.20.20; }
vlan10.deny.hosts.txt
host host4 { hardware ethernet 44:44:44:44:44:44; deny booting; }
vlan20.hosts.txt
host host4 { hardware ethernet 44:44:44:44:44:44; }
решение2
Возможно, создание класса, соответствующего вашему host4, и добавление строки «deny members of 'yourClass';» в конфигурацию вашей подсети может помочь.
пример :
class "raspberry"
{
# match mac starting with b8:27:eb
match if substring(hardware, 1, 3) = b8:27:eb;
}
subnet 192.168.10.0 netmask 255.255.254.0 {
option routers 192.168.10.254;
pool {
range 192.168.10.11 192.168.10.210;
deny members of "raspberry";
}
}