Linux DHCP für mehrere Subnetze

Linux DHCP für mehrere Subnetze
vlan10---->firewall----->linux dhcp server
vlan20---------↑

Ich habe zwei VLANs (VLAN10 und VLAN20) und möchte zur zentralen IP-Adresszuweisung einen Linux-DHCP-Server verwenden.

In der Fortigate-Firewall verwende ich DHCP-Relay, damit der Client eine DHCP-IP erhält.

Im Linux-DHCP-Server verwende ich den Abschnitt [Host], um die statische IP-Adresse des Clients zu beschränken und bekannten Hosts zu erlauben, eine dynamische IP-Adresse zu erhalten.

########## 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 #########

In dieser Konfiguration können alle Clients die IP von VLAN10 oder VLAN20 erhalten, aber ich möchte, dass Host4 die dynamische IP nur in VLAN20 erhalten kann.

Wenn Host4 eine Verbindung zu VLAN10 herstellt, kann Host4 keine IP-Adresse vom DHCP-Server erhalten.

Wie kann ich die Konfiguration ändern?

Antwort1

Ich kann das derzeit nicht testen, und die Syntax muss möglicherweise etwas angepasst werden. Möglicherweise können Sie „Gruppen“-Definitionen verwenden und alle Clients in Gruppen für VLAN10 und VLAN20 auflisten, aber in der VLAN10-Datei sagen Sie host4, dass es das „Booten verweigern“ soll, was dann funktionieren sollte.

Ich kann das derzeit nicht selbst testen, aber vielleicht ist es einen Versuch wert?

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.htmlfür den Boot-Verweigerung

Möglicherweise möchten Sie auch prüfen, ob die Direktive „includes“ funktioniert. Sie könnten beispielsweise Folgendes tun:

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; }

Antwort2

Möglicherweise hilft es, eine Klasse zu erstellen, die zu Ihrem Host4 passt, und in Ihrer Subnetzkonfiguration die Zeile „deny members of 'yourClass';“ hinzuzufügen.

ein Beispiel :

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";
    }
}

verwandte Informationen