DHCP für mehrere Subnetze

lukesky333

Active Member
Hallo liebe Leute,

ich mache gerade unseren DHCP Server neu und hätte eine kleine frage zur Konfiguration.

Ich habe in einem physischen Netzwerk drei Subnetze und würde gern in 2 Subnetzen IP-Adressen per DHCP vergeben. ...in einem für bekannte Rechner (via MAC-Adresse) und in einem anderen Subnetz für Gäste.

Im Manual finde ich die Option "deny unknown-clients" bzw. "allow unknown-clients" - jedoch wird nicht wirklich beschrieben wo und wofür ich das konfigurieren kann.

Ich habe mir das in etwa so vorgestellt:

Code:
default-lease-time 43200;
max-lease-time 57800;
authoritative;

shared-network "mynetwork" {
    option domain-name "example.com";
    option domain-name-servers 192.168.1.2;

    subnet 192.168.1.0 netmask 255.255.255.0 {
        range 192.168.1.151 192.168.1.253;
        option routers 192.168.1.1;
        option broadcast-address 192.168.1.255;
        option ntp-servers 192.168.1.1;
        allow unknown-clients;
    }

    subnet 192.168.2.0 netmask 255.255.255.0 {
        range 192.168.2.150 192.168.2.199;
        option routers 192.168.2.1;
        option broadcast-address 192.168.2.255;
        deny unknown-clients;
    }
}

Leider scheint es so nicht zu funktionieren... Kann mir da jemand einen sinnvollen Tipp geben?
 
Du musst dem DHCP-Server noch mitteilen, welche Hosts er "kennt".

Also für jeden Host die Hardware-Adresse ermitteln und dann pro Host eine Zeile:

host hostxyz { hardware ethernet 01:23:45:00:00:01; }

Rob
 
Du hast noch nicht geschrieben, wie sich das Nicht-Funktionieren äußert.
Bekommen die bekannten Hosts eine Adresse aus dem Netz für die unbekannten, oder wie?

Hast du die Leases mal alle gelöscht und den DHCP-Dienst neu gestartet?

Rob
 
Ich hab die Leases auf beiden Seiten gelöscht und versucht eine Adresse als Guest zu bekommen. Dies wurde verweigert mit der Meldung "Ignoring unknown client".

Nach meiner Logik sollte der Rechner dann eine Adresse aus dem anderen Subnetz bekommen - tut er aber nicht.
 
Vielleicht liegt es am shared-network:

dhcpd.conf(5):

If any subnet in a shared network has addresses available for dynamic allocation, those addresses are collected into a common pool for that shared network and assigned to clients as needed. There is no way to distinguish on which subnet of a shared network a client should boot.

Lass das mal weg und setze die beiden subnet-Deklarationen alleinstehend.

Rob
 
Das hab ich eben auch schon gelesen... Macht aber keinen Unterschied ob "mit" oder "ohne" shared-network-Deklaration.

...irgendwie macht das "allow/deny unknown-clients" null Sinn, wenn es ohnehin nicht zieht. Ich finde leider auch keine bessere Dokumentation bzw. irgendwelche Beispiele.
 
Du musst jedes Mal die Leases löschen und den Dienst neu starten.
Es kann auch sein, dass die Clients ihre Leases noch behalten, also auch dort die Leases erneuern.

Ansonsten poste mal bitte deine komplette Konfiguration, damit man nicht rumraten muss.

Rob
 
Das oben ist mehr oder weniger meine ganze Config. Hier mal der aktuelle Stand mit den von Dir empfohlenen Änderungen:

Code:
default-lease-time 43200;
max-lease-time 57800;
authoritative;

option domain-name "example.com";
option domain-name-servers 192.168.1.2;

subnet 192.168.1.0 netmask 255.255.255.0 {
    range 192.168.1.151 192.168.1.253;
   option routers 192.168.1.1;
   option broadcast-address 192.168.1.255;
   option ntp-servers 192.168.1.1;
   deny unknown-clients;
}

subnet 192.168.2.0 netmask 255.255.255.0 {
   range 192.168.2.150 192.168.2.199;
   option routers 192.168.2.1;
   option broadcast-address 192.168.2.255;
   deny unknown-clients;
}

subnet 192.168.3.0 netmask 255.255.255.0 {
   range 192.168.3.150 192.168.3.199;
   option routers 192.168.3.1;
   option broadcast-address 192.168.3.255;
   allow unknown-clients;
}

host TEST {
   hardware ethernet ab:cd:ef:01:23:45;
   option host-name "allowd_test";
   fixed-address 192.168.1.99;
}

Ich habe dann noch einen zweiten Client, der nicht konfiguriert ist - dieser bekommt eben keine IP, obwohl er eigentlich eine aus dem 3er Netz bekommen sollte.
 
Der host TEST bekommt aber die IP-Adresse?
Bekommt er auch eine aus dem Netz, wenn du das fixed-address aus der Host-Deklaration löschst?
Der andere Client bekommt keine Adresse, wie ist die Ausgabe von dhclient?

Rob
 
Ja, der TEST-Host bekommt die gewünschte IP. Ich hab jetzt mal die fixed-address in der Host-Deklaration auskommentiert, alle Leases gelöscht und alles restartet.

Nun bekommt der Host die erste DHCP-Adresse aus dem 1er Subnet (192.168.1.151). Wird wohl daran liegen, dass dieses zuerst definiert wurde.

Der zweite Client (unknown) scheint im Log überhaupt nicht auf... Auch wenn ich mich darauf einlogge und explizit per DHCP eine Adresse anfordere - ist irgendwie komisch...

Deshalb habe ich testweise vom ersten Client mal die Host-Deklaration komplett gelöscht und es nochmal damit versucht - leider mit dem selben Ergebnis wie vorhin: "Ignoring unknown client"
 
Kannst du den zweiten (unbekannten) Client mal auf der Kommandozeile per dhclient <interface> bedienen? Dann würde man wenigstens sehen, welche Antwort er bekommt.

Rob
 
Nachtrag.

Versuche mal folgende Konfiguration:

Code:
default-lease-time 43200;
max-lease-time 57800;
authoritative;

option domain-name "example.com";
option domain-name-servers 192.168.1.2;

subnet 192.168.0.0 netmask 255.255.0.0 {

        pool {
                range 192.168.1.151 192.168.1.253;
                option routers 192.168.1.1;
                option broadcast-address 192.168.1.255;
                option ntp-servers 192.168.1.1;
                deny unknown-clients;
        }

        pool {
                range 192.168.2.150 192.168.2.199;
                option routers 192.168.2.1;
                option broadcast-address 192.168.2.255;
                deny unknown-clients;
        }

        pool {
                range 192.168.3.150 192.168.3.199;
                option routers 192.168.3.1;
                option broadcast-address 192.168.3.255;
                allow unknown-clients;
        }
}

host TEST {
   hardware ethernet ab:cd:ef:01:23:45;
   option host-name "allowd_test";
   fixed-address 192.168.1.99;
}

also einen großen Adressbereich mit mehreren Pools.

Rob
 
Genau das hab ich ja gemacht - da kam keinerlei Ausgabe... Wunder mich auch...

Wie gesagt, ich hab aus dem "known" Client einen "unknown" gemacht und da kam die gewohnte Fehlermeldung.
 
"pool" gibt es unter OpenBSD scheinbar nicht, auch das hatte ich vorab schon probiert. So langsam gehen mir die Ideen aus.

Aber irgendeinen Sinn muss die Deklaration "allow/deny unknown-clients" doch haben...
 
Das ist ein ganz simpler Aufbau:

1x Firewall (OpenBSD incl. DHCP-Server)
1x CISCO Switch
2x Clients

Da wird nicht gezaubert, alles straight-forward...
 
Da bin ich jetzt quasi genauso weit wie zu Beginn des Threads... trotzdem Danke soweit.

Hat sonst jemand Erfahrung damit und kann mir erklären, warum das nicht funktioniert wie gedacht???
 
Eine einleuchtende Erklärung für die Sinnhaftigkeit von allow/deny unknown-clients interessiert mich nachwievor, auch wenn ich inzwischen eine alternative Lösung gefunden habe.

Wenn ich allen bekannten Hosts in der Config-Datei eine explizite IP zuweise, dann kann ich den Range des Subnets entfernen, somit bekommen unbekannte Hosts ohnehin nur mehr IPs aus dem 3er Netz. Es ist so allerdings nicht möglich bekannten Hosts (nur anhand der MAC-Adresse) eine dynamische IP zuzuweisen.

Aber es ist für den Übergang ok - vielleicht kommt ja noch ne "schlaue Erklärung". :-)
 
Doofe Frage: Hat der DHCP-Server auch alle Subnetze auf seinem Interface liegen?

Eigentlich gibt es ja keine doofen Fragen, aber... :-P

Natürlich ist das Interface entsprechend konfiguriert, der DHCP Server vergibt auch Adressen aus allen Netzen. Nur leider ist es scheinbar unter OpenBSD nichtmöglich, bestimmte Subnetze für "unknown clients" zu sperren und andere nicht.
Je öfter ich mir die Man-Page ansehe, desto mehr glaube ich, dass "allow/deny unknown-clients" eher eine globale Konfiguration ist. Pools gehen ja unter OpenBSD auch nicht, also ist das meine einzige Erklärung. Ich lass mich gern eines besseren belehren, aber das wird wohl leider nicht passieren.

Ich hab jetzt alles möglich durchprobiert - ohne Erfolg. ...sehr schade...
 
Hoi,

ging das ned so nach de Motto

subnet 239.252.197.0 netmask 255.255.255.0 {
range 239.252.197.10 239.252.197.250;
...
}

von der Subnet und Range Definition ?

Gruß Bummibär
 
broadcast 192.168.255.255 einfach ein broadcast setzen geht ja so nicht, man müsste das über subnetting machen.
 
Wie jetzt Der DHCP Server hat ein Interface ?


Dann muss auf den jeweiligen Router zu den anderen Netz Segmenten ein DHCP Relay Laufen sonst geht es nicht.

Holger
 
Zurück
Oben