DHCP mit dynamischen und statischen Adressen
-
- Beiträge: 14
- Registriert: 23.08.2004 11:57:00
- Wohnort: Köln
-
Kontaktdaten:
DHCP mit dynamischen und statischen Adressen
Hallo zusammen!
Folgende Situation:
Ein physikalisches Netzwerk mit 12 Subnetzen und ca 80 PCs. Die Subnetze haben als Gateway alle den selben L3-Switch, an dem der DHCP-Server hängt.
Die 80 PCs bekommen vom DHCP-Server alle statische Adressen zugewiesen.
Und nun mein Problem:
Wenn jetzt ein neuer Rechner in einem Subnetz angehangen wird, soll er direkt eine IP aus diesem Subnetz zugewiesen bekommen.
Wie realisiere ich, daß der DHCP-Server weiß, aus welchem Subnetz der Rechner eine IP anfordert?
Der L3-Switch unterstützt Option 82, der DHCP-Server wahrscheinlich auch, nur weiß ich nicht, wie ich das genau einbinde.
P.S.: Als DHCP-Server läuft debian mit dhcp3-server
Hoffe, mir kann jemand helfen,
Gruß,
Micha
Folgende Situation:
Ein physikalisches Netzwerk mit 12 Subnetzen und ca 80 PCs. Die Subnetze haben als Gateway alle den selben L3-Switch, an dem der DHCP-Server hängt.
Die 80 PCs bekommen vom DHCP-Server alle statische Adressen zugewiesen.
Und nun mein Problem:
Wenn jetzt ein neuer Rechner in einem Subnetz angehangen wird, soll er direkt eine IP aus diesem Subnetz zugewiesen bekommen.
Wie realisiere ich, daß der DHCP-Server weiß, aus welchem Subnetz der Rechner eine IP anfordert?
Der L3-Switch unterstützt Option 82, der DHCP-Server wahrscheinlich auch, nur weiß ich nicht, wie ich das genau einbinde.
P.S.: Als DHCP-Server läuft debian mit dhcp3-server
Hoffe, mir kann jemand helfen,
Gruß,
Micha
wenn du statische ips via dhcp vergibst, nutzt du ja bestimmt die MAC(s) der netzwerkkarten.
wenn du jetzt neue rechner ins netz hängen willst, musst du einen pool angeben, woraus sich der client eine ip nehmen kann.
da du jetzt alles an einem dhcp-server hast, kannst du aber nur eine range nehmen, aus dem die ips gezogen werden.
hth
wenn du jetzt neue rechner ins netz hängen willst, musst du einen pool angeben, woraus sich der client eine ip nehmen kann.
da du jetzt alles an einem dhcp-server hast, kannst du aber nur eine range nehmen, aus dem die ips gezogen werden.
hth
-
- Beiträge: 14
- Registriert: 23.08.2004 11:57:00
- Wohnort: Köln
-
Kontaktdaten:
Hi,
ja, für die statischen Adressen verwende ich die MAC-Adressen,
für die dynamischen gibt es auch einen range, der Server vergibt ja auch dynamisch Adressen, allerdings soll er PC A, der in Raum A steht mit dem Subnetz A eine IP aus dem Subnetz A geben und PC B, den ich neu in Raum B anschliesse mit Subnetz B soll eine IP aus dem Subnetz B bekommen.
Ich weiß nicht, ob mein Problem jetzt deutlicher ist?
Micha
ja, für die statischen Adressen verwende ich die MAC-Adressen,
für die dynamischen gibt es auch einen range, der Server vergibt ja auch dynamisch Adressen, allerdings soll er PC A, der in Raum A steht mit dem Subnetz A eine IP aus dem Subnetz A geben und PC B, den ich neu in Raum B anschliesse mit Subnetz B soll eine IP aus dem Subnetz B bekommen.
Ich weiß nicht, ob mein Problem jetzt deutlicher ist?
Micha
das problem ist, dass du alle rechner quasi an einer netzkarte hast, auch wenn es nur ein switch mit dhcp ist. woher soll der dhcp denn wissen, wo der rechner steht?
lösungsvorschlag:
einen rechner mit soviel netzkarten einrichten, wieviele räume du hast. jede netzkarte bekommt nur die rechner aus einem entsprechenden raum.
da jede netzkarte des dhcp ein eigenes subnetz hat, kannst du nun auch jeweils eine range definieren und die rechner in raum A bekommen subnet A und die rechner im raum (n) bekommen das subnet (n).
aber ich denke nicht, dass es das ist, was du willst, da du 1. schon einen dhcp hast und bei 12 subnet's einen rechner mit 12 netzkarten zu bestücken, halte ich auch nicht für optimal(st). ;-)
lösungsvorschlag:
einen rechner mit soviel netzkarten einrichten, wieviele räume du hast. jede netzkarte bekommt nur die rechner aus einem entsprechenden raum.
da jede netzkarte des dhcp ein eigenes subnetz hat, kannst du nun auch jeweils eine range definieren und die rechner in raum A bekommen subnet A und die rechner im raum (n) bekommen das subnet (n).
aber ich denke nicht, dass es das ist, was du willst, da du 1. schon einen dhcp hast und bei 12 subnet's einen rechner mit 12 netzkarten zu bestücken, halte ich auch nicht für optimal(st). ;-)
-
- Beiträge: 14
- Registriert: 23.08.2004 11:57:00
- Wohnort: Köln
-
Kontaktdaten:
Hi,
jo, klar wäre das ne Lösung, aber dann bräuchte ich locker mal 12 NICs plus Erweiterungsmöglichkeit....
Der L3-Switch unterstützt Option 82, somit würden die DHCPREQUESTS die Information mitbekommen, von welchem Subnetz sie kommen, mir ist nur nicht klar, wie ich dieses Flag in der dhcpd.conf abfrage und verwerte.
Theoretisch muß ich ne Option festlegen, nach der bei der Vergabe der IPs gefragt wird. Je nach Antwort werden die IPs zugewiesen.
Wie gesagt, ich weiß nur nicht WIE ich das in der dhcpd.conf mache....
Micha
jo, klar wäre das ne Lösung, aber dann bräuchte ich locker mal 12 NICs plus Erweiterungsmöglichkeit....
Der L3-Switch unterstützt Option 82, somit würden die DHCPREQUESTS die Information mitbekommen, von welchem Subnetz sie kommen, mir ist nur nicht klar, wie ich dieses Flag in der dhcpd.conf abfrage und verwerte.
Theoretisch muß ich ne Option festlegen, nach der bei der Vergabe der IPs gefragt wird. Je nach Antwort werden die IPs zugewiesen.
Wie gesagt, ich weiß nur nicht WIE ich das in der dhcpd.conf mache....
Micha
-
- Beiträge: 14
- Registriert: 23.08.2004 11:57:00
- Wohnort: Köln
-
Kontaktdaten:
tja, das stimmt!
Aber auf dem Switch hängt jedes Subnet an einem eigenen Port. Der Request kommt also vom neuen Rechner über einen spziellen Port rein. Der Switch hängt nun ein Flag an den Request, der die Information beinhaltet, welcher Port das ist.
Im DHCP-Server wird die Info abgefragt (mit MATCH ... denke ich) und jeder Recher, der Info X hat bekommt ne IP aus Subnet A...
Wie gesagt, es ist etwas schwierig...
Trotzdem schonmal Danke für die Beteilitung!
Micha
-
- Beiträge: 14
- Registriert: 23.08.2004 11:57:00
- Wohnort: Köln
-
Kontaktdaten:
*g*
Tjaaa, das Dumme an der Sache ist ja, daß den Switch ein Kollege von mir macht und ich den DHCP-Server erstelle.
Aus den Manpages der dhcpd.conf werd ich jetzt auch nicht schlauer...
Zur Zeit läuft das hier alles nur im Labor, wo ich das Originalnetz nur bedingt nachbilden kann.
(Hab leider keine 4500 Euro über für den Switch )
Wer weiß, vielleicht läuft auch schon alles so, wie es soll, wenn der Switch dran hängt, das glaub ich aber nicht...
Naja, gleich is Feierabend, morgen hab ich evtl. die Möglichkeit, alles mal im Originalnetz zu testen.
Danke!
Micha
P.S.: Sollte Dir oder jemand anderem nochwas einfallen, bitte
P.P.S.: Die Subnetze hängen jeweils an eigenen Ports, da jedes Subnetz einen Raum kennzeichnet und jeder Raum über GF am Serverraum hängt.
Tjaaa, das Dumme an der Sache ist ja, daß den Switch ein Kollege von mir macht und ich den DHCP-Server erstelle.
Aus den Manpages der dhcpd.conf werd ich jetzt auch nicht schlauer...
Zur Zeit läuft das hier alles nur im Labor, wo ich das Originalnetz nur bedingt nachbilden kann.
(Hab leider keine 4500 Euro über für den Switch )
Wer weiß, vielleicht läuft auch schon alles so, wie es soll, wenn der Switch dran hängt, das glaub ich aber nicht...
Naja, gleich is Feierabend, morgen hab ich evtl. die Möglichkeit, alles mal im Originalnetz zu testen.
Danke!
Micha
P.S.: Sollte Dir oder jemand anderem nochwas einfallen, bitte
P.P.S.: Die Subnetze hängen jeweils an eigenen Ports, da jedes Subnetz einen Raum kennzeichnet und jeder Raum über GF am Serverraum hängt.
-
- Beiträge: 21
- Registriert: 27.08.2004 14:29:14
Hi,
interessantes Problem.
Soweit ich weiß sollte es reichen, jedes deiner Subnets durch ein entsprechendes Statement zu definieren und dann auch eine Range anzugeben. Die Zuordnung sollte, wenn die Header Informationen da sind, klappen. Was ohne Info passiert, weiß ich nicht, aber sollte ja in deinem Szenario nicht vorkommen.
Evtl. kann ich das am Montag im Labor mal testen.
.simon
interessantes Problem.
Soweit ich weiß sollte es reichen, jedes deiner Subnets durch ein entsprechendes Statement zu definieren und dann auch eine Range anzugeben. Die Zuordnung sollte, wenn die Header Informationen da sind, klappen. Was ohne Info passiert, weiß ich nicht, aber sollte ja in deinem Szenario nicht vorkommen.
Evtl. kann ich das am Montag im Labor mal testen.
.simon
-
- Beiträge: 14
- Registriert: 23.08.2004 11:57:00
- Wohnort: Köln
-
Kontaktdaten:
Hallo,
sorry, daß ich nicht geantwortet habe, aber dieses Problem hat mich in den letzten Tagen noch arg beschäftigt. Und das tut es immernoch...
Wie gesagt, der L3-Switch unterstützt Option 82. Soweit schön und gut. Mit der Circuit-ID könnte ich bestimmt was anfangen... hab ich gedacht. Nur ich weiß immernoch nicht, was da drin steht.
Ein Kollege und ich haben gerade mit Ethereal die DHCP-Anfrage mitverfolgt, aber Option 82 und Circuit-ID tauchenn nirgendwo auf.
Was mir auch weiter helfen würde ist die Relay Agent IP Address. Wenn ich die in der DHCPD.conf abfragen könnte, wäre es mir auch möglich die Herkunft des DHCP-Request eindeutig zu bestimmen.
Weiß vielleicht jemand ob und wenn ja wie das geht?
Langsam beginne ich zu verzweifeln :/
sorry, daß ich nicht geantwortet habe, aber dieses Problem hat mich in den letzten Tagen noch arg beschäftigt. Und das tut es immernoch...
Wie gesagt, der L3-Switch unterstützt Option 82. Soweit schön und gut. Mit der Circuit-ID könnte ich bestimmt was anfangen... hab ich gedacht. Nur ich weiß immernoch nicht, was da drin steht.
Ein Kollege und ich haben gerade mit Ethereal die DHCP-Anfrage mitverfolgt, aber Option 82 und Circuit-ID tauchenn nirgendwo auf.
Was mir auch weiter helfen würde ist die Relay Agent IP Address. Wenn ich die in der DHCPD.conf abfragen könnte, wäre es mir auch möglich die Herkunft des DHCP-Request eindeutig zu bestimmen.
Weiß vielleicht jemand ob und wenn ja wie das geht?
Langsam beginne ich zu verzweifeln :/
hi allerseits
abwegig, ich weiss...aber...
wieso nimmst du nicht alle 80 PCs in die DHCP auf...mit ihrer MAC?
werden die PCs so oft verschoben?
dann kannst du die entsprechenden subnets ja mitgeben.
ist vielleicht zu beginn eine grosse arbeit, aber schlussendlich kann mans beim administrationsaufwand wieder reinholen...
gruss
scheuri
abwegig, ich weiss...aber...
wieso nimmst du nicht alle 80 PCs in die DHCP auf...mit ihrer MAC?
werden die PCs so oft verschoben?
dann kannst du die entsprechenden subnets ja mitgeben.
ist vielleicht zu beginn eine grosse arbeit, aber schlussendlich kann mans beim administrationsaufwand wieder reinholen...
gruss
scheuri
-
- Beiträge: 14
- Registriert: 23.08.2004 11:57:00
- Wohnort: Köln
-
Kontaktdaten:
Hallo zusammen!
Zuerst einmal: Eine Lösung scheint in sicht zu sein!
Option 82, richtig auf dem Switch konfiguriert!, liefert mir beim CISCO-Switch 3550 einen Hexadezimalen Wert für die Circuit-ID. Daß der hexadezimal ist, darauf muß man erstmal kommen... Und dann muß man erstmal darauf kommen, daß man den Wert in der dhcpd.conf jeweils mit Doppelpunkten trennen muß!
Naja, jetzt hoffe ich, daß der 3750er genauso arbeitet.
Wenn alles läuft, poste ich nocheinmal die dhcpd.conf und ne kurze Beschreibung zu allem.
@scheuri:
Du wirst lachen, aber das einpflegen "per Hand" wäre meine Notlösung übers WE gewesen, bis Montag muß der Kram nämlich laufen.
So werden die Rechner Raum für Raum dynamisch aufgenommen, in eine Datenbank eingepflegt, per Skript eine Datei mit host-informationen erzeugt und die in die dhcpd.conf eingebunden...
Klingt konfus, ich weiß, aber ich muß nu los, den Kram am 3750 testen.
Bis später!
Micha
Zuerst einmal: Eine Lösung scheint in sicht zu sein!
Option 82, richtig auf dem Switch konfiguriert!, liefert mir beim CISCO-Switch 3550 einen Hexadezimalen Wert für die Circuit-ID. Daß der hexadezimal ist, darauf muß man erstmal kommen... Und dann muß man erstmal darauf kommen, daß man den Wert in der dhcpd.conf jeweils mit Doppelpunkten trennen muß!
Naja, jetzt hoffe ich, daß der 3750er genauso arbeitet.
Wenn alles läuft, poste ich nocheinmal die dhcpd.conf und ne kurze Beschreibung zu allem.
@scheuri:
Du wirst lachen, aber das einpflegen "per Hand" wäre meine Notlösung übers WE gewesen, bis Montag muß der Kram nämlich laufen.
So werden die Rechner Raum für Raum dynamisch aufgenommen, in eine Datenbank eingepflegt, per Skript eine Datei mit host-informationen erzeugt und die in die dhcpd.conf eingebunden...
Klingt konfus, ich weiß, aber ich muß nu los, den Kram am 3750 testen.
Bis später!
Micha
-
- Beiträge: 14
- Registriert: 23.08.2004 11:57:00
- Wohnort: Köln
-
Kontaktdaten:
Konfiguration eines DHCP-Servers und Option 82
Hallo,
da ich gerade nichts zu tun habe, nehme ich mir mal die Zeit, meine Lösung für folgendes Problem
Problemstellung
Ein vorhandenes Schulnetzwerk mit ca. 80 PCs soll eine Restrukturierung erfahren. Unteranderem soll die IP-Adressierung von einem 192er Netz auf ein 10er Netz umgestellt werde, bei dem folgender Schlüssel verwendet wird:
10.x.y.z
Die Stelle x gibt die Etage des Rechners an, Stelle y die Raumnummer und Stelle z wird hochgezählt, je nachdem, wieviele Rechner in diesem Raum stehen. So läßt sich ein PC anhand der IP-Adresse relativ genau lokalisieren und eine Reserve an IP-Adressen für die Zukunft ist gegeben.
(Dieses Schema läßt sich bis auf wenige Ausnahmen verwirklichen).
Die PCs werden mit einem Tool in einer Datenbank inventarisiert. Mit einem PHP-Skript läßt sich aus dieser Datenbank daraufhin eine Datei erzeugen, die Hostname, MAC-Adresse und IP-Adresse des Rechners enthält. Da diese Datei in entsprechnedem Format erzeugt wird, kann sie in die dhcpd.conf des DHCP-Servers includiert werden.
Alle vorhandenen PCs erhalten so ihre statischen Adressen über DHCP.
Werden neue Rechner angeschafft und in einem Subnetz angeschlossen, so sollen diese direkt eine dnamische Adresse aus diesem Subnetz bekommen, so daß einer Kommunikation der Rechner untereinandern nichts im Wege steht. Sobald der PC in die Datenbank aufgenommen wird, bekommt er auch eine statische Adresse nach obigen Schema.
Lösungsansatz
Da die Subnetze mittels eines Cisco Catalyst 3750 an den DHCP-Server angebunden sind, besteht die Möglichkeit Option 82 zu verwenden.
Option 82 hängt an einen DHCP-Request die DHCP-Relay-Agent-Information an, in welcher unter anderem die Circuit-ID enthalten ist. Diese beschreibt die Herkunft der DHCP-Anfrage und kann in der dhcpd.conf abgefragt werden.
Die verschiedenen Circuit-IDs werden nun speziellen Klassen zugeordnet. Je nach Klasse kann dann ein Adresspool bestimmt werden, aus dem dynamisch Adressen verteilt werden.
Implementierung
Auf die Konfiguration des Cisco-Switches möchte ich hier nicht speziell eingehen, da sie sich von Modell zu Modell unterscheidet.
Prinzipiell besteht die Circuit-ID bei Cisco-Geräten jedoch anscheinend aus einem mehr-bytigen Hexadezimal-Wert. Dieser ist beim 3750er 6 Byte lang und sieht wie folgt aus:
0004000x010y
Dabei gibt die Stelle x die Nummer des VLANs an, die Stelle y den Port. Wie die Circuit-ID bei anderen Modellen aussieht kann zum Beispiel mit Ethereal herausgefunden werden.
Nun gilt es, diese Circuit-ID in der dhcpd.conf abzufragen. Dabei muß man die einzelnen Bytes allerdings ersteinmal durch Doppelpunkte trennen. Letztlich erfolgt beispielsweise dieser Eintrag:
class Name1 {
match if option agent.circuit-id=00:04:00:0x:01:0y;
}
Man schiebt alle PCs, die einen DHCP-Request aus dem VLAN x, welches am Port y hängt in die Klasse Name1.
Anschließend kann man zum Beispiel für das Subnetz 10.2.23.0 folgendes bestimmen:
subnet 10.2.23.0 netmask 255.255.255.0 {
option routers 10.2.23.200;
pool {
allow members of "Name1";
range 10.2.23.50 10.2.23.100;
}
}
PCs aus dieser Klasse/diesem Subnetz bekommen eine Adresse aus dem Bereich 10.2.23.50 bis 10.2.23.100 zugewiesen.
Anhang
Im Anhang findet Ihr noch meine Konfigurations-Dateien für den DHCP-Server. Es sind drei Stück, dies hat mit der Administration zu tun, prinzipiell kann man auch alles in eine Datei packen.
Die Kommentare und irrelevanten Angaben sind ausgeschnitten.
dhcpd.conf
# Stand : 02.09.2004
#Einbinden der Konfigurationsdateien fuer die Hosts mit fester IP-Adresse
#und die Subnetz-Konfiguration mit dynamischer Adress-Vergabe fuer neue
#Clients:
include "/etc/dhcp3/dhcpclasses.conf";
include "/etc/dhcp3/dhcpsubnets.conf";
Include "/etc/dhcp3/dhcphosts.conf";
dhcpclasses.conf
# Stand: 02.09.2004
class "technik1" {
match if option agent.circuit-ID=00:04:00:07:01:01;
}
class "technik2" {
match if option agent.circuit-ID=00:04:00:08:01:02;
}
class "raum122" {
match if option agent.circuit-ID=00:04:00:0A:01:04;
}
class "raum147" {
match if option agent.circuit-ID=00:04:00:04:01:05;
}
class "raum152" {
match if option agent.circuit-ID=00:04:00:05:01:06;
}
class "lehrerzimmer" {
match if option agent.circuit-ID=00:04:00:09:01:03;
}
class "selgo" {
match if option agent.circuit-ID=00:04:00:0B:01:07;
}
class "r324/qbar" {
match if option agent.circuit-ID=00:04:00:06:01:09;
}
class "raum254" {
match if option agent.circuit-ID=00:04:00:0C:01:08;
}
dhcpsubnets.conf
#Stand 02.09.2004
shared-network schule {
#Technikraum 1
subnet 10.0.14.0 netmask 255.255.255.0 {
option routers 10.0.14.200;
#dynamischer Bereich fuer Technikraum 1
pool {
range 10.0.14.150 10.0.14.199;
allow members of "technik1";
}
}
#Technikraum 2
subnet 10.0.22.0 netmask 255.255.255.0 {
option routers 10.0.22.200;
#dynamischer Bereich fuer Technikraum 2
pool {
range 10.0.22.150 10.0.22.199;
allow members of "technik2";
}
}
#Lehrerzimmer
subnet 10.0.57.0 netmask 255.255.255.0 {
option routers 10.0.57.200;
#dynamischer Bereich fuer Lehrerzimmer
pool {
range 10.0.57.150 10.0.57.199;
allow members of "lehrerzimmer";
}
}
# Raum 122+125+127
subnet 10.1.22.0 netmask 255.255.255.0 {
option routers 10.1.22.200;
#dynamischer Bereich fuer Raum 122+125+127
pool {
range 10.1.22.150 10.1.22.199;
allow members of "raum122";
}
}
#Raum 147
subnet 10.1.47.0 netmask 255.255.255.0 {
option routers 10.1.47.200;
#dynamischer Bereich fuer Raum 147
pool {
range 10.1.47.150 10.1.47.199;
allow members of "raum147";
}
}
#Raum 152
subnet 10.1.52.0 netmask 255.255.255.0 {
option routers 10.1.52.200;
#dynamischer Bereich fuer Raum 152
pool {
range 10.1.52.150 10.1.52.199;
allow members of "raum152";
}
}
#SelGO-Raum + Bibliothek
subnet 10.1.86.0 netmask 255.255.255.0 {
option routers 10.1.86.200;
#dynamischer Bereich fuer SelGo-Raum + Bibliothek
pool {
range 10.1.86.150 10.1.86.199;
allow members of "selgo";
}
}
#Raum 254+255
subnet 10.2.54.0 netmask 255.255.255.0 {
option routers 10.2.54.200;
#dynamischer Bereich fuer Raum 254+255
pool {
range 10.2.54.150 10.2.54.199;
allow members of "raum254";
}
}
#Raum 324 und Q-Bar
subnet 10.3.24.0 netmask 255.255.255.0 {
option routers 10.3.24.200;
#dynamischer Bereich fuer Raum 324
pool {
range 10.3.24.150 10.3.24.199;
allow members of "r324/qbar";
}
}
}
Sollten noch Fragen sein, versuche ich gerne, diese zu beantworten.
Gruß,
Michael
da ich gerade nichts zu tun habe, nehme ich mir mal die Zeit, meine Lösung für folgendes Problem
Problemstellung
Ein vorhandenes Schulnetzwerk mit ca. 80 PCs soll eine Restrukturierung erfahren. Unteranderem soll die IP-Adressierung von einem 192er Netz auf ein 10er Netz umgestellt werde, bei dem folgender Schlüssel verwendet wird:
10.x.y.z
Die Stelle x gibt die Etage des Rechners an, Stelle y die Raumnummer und Stelle z wird hochgezählt, je nachdem, wieviele Rechner in diesem Raum stehen. So läßt sich ein PC anhand der IP-Adresse relativ genau lokalisieren und eine Reserve an IP-Adressen für die Zukunft ist gegeben.
(Dieses Schema läßt sich bis auf wenige Ausnahmen verwirklichen).
Die PCs werden mit einem Tool in einer Datenbank inventarisiert. Mit einem PHP-Skript läßt sich aus dieser Datenbank daraufhin eine Datei erzeugen, die Hostname, MAC-Adresse und IP-Adresse des Rechners enthält. Da diese Datei in entsprechnedem Format erzeugt wird, kann sie in die dhcpd.conf des DHCP-Servers includiert werden.
Alle vorhandenen PCs erhalten so ihre statischen Adressen über DHCP.
Werden neue Rechner angeschafft und in einem Subnetz angeschlossen, so sollen diese direkt eine dnamische Adresse aus diesem Subnetz bekommen, so daß einer Kommunikation der Rechner untereinandern nichts im Wege steht. Sobald der PC in die Datenbank aufgenommen wird, bekommt er auch eine statische Adresse nach obigen Schema.
Lösungsansatz
Da die Subnetze mittels eines Cisco Catalyst 3750 an den DHCP-Server angebunden sind, besteht die Möglichkeit Option 82 zu verwenden.
Option 82 hängt an einen DHCP-Request die DHCP-Relay-Agent-Information an, in welcher unter anderem die Circuit-ID enthalten ist. Diese beschreibt die Herkunft der DHCP-Anfrage und kann in der dhcpd.conf abgefragt werden.
Die verschiedenen Circuit-IDs werden nun speziellen Klassen zugeordnet. Je nach Klasse kann dann ein Adresspool bestimmt werden, aus dem dynamisch Adressen verteilt werden.
Implementierung
Auf die Konfiguration des Cisco-Switches möchte ich hier nicht speziell eingehen, da sie sich von Modell zu Modell unterscheidet.
Prinzipiell besteht die Circuit-ID bei Cisco-Geräten jedoch anscheinend aus einem mehr-bytigen Hexadezimal-Wert. Dieser ist beim 3750er 6 Byte lang und sieht wie folgt aus:
0004000x010y
Dabei gibt die Stelle x die Nummer des VLANs an, die Stelle y den Port. Wie die Circuit-ID bei anderen Modellen aussieht kann zum Beispiel mit Ethereal herausgefunden werden.
Nun gilt es, diese Circuit-ID in der dhcpd.conf abzufragen. Dabei muß man die einzelnen Bytes allerdings ersteinmal durch Doppelpunkte trennen. Letztlich erfolgt beispielsweise dieser Eintrag:
class Name1 {
match if option agent.circuit-id=00:04:00:0x:01:0y;
}
Man schiebt alle PCs, die einen DHCP-Request aus dem VLAN x, welches am Port y hängt in die Klasse Name1.
Anschließend kann man zum Beispiel für das Subnetz 10.2.23.0 folgendes bestimmen:
subnet 10.2.23.0 netmask 255.255.255.0 {
option routers 10.2.23.200;
pool {
allow members of "Name1";
range 10.2.23.50 10.2.23.100;
}
}
PCs aus dieser Klasse/diesem Subnetz bekommen eine Adresse aus dem Bereich 10.2.23.50 bis 10.2.23.100 zugewiesen.
Anhang
Im Anhang findet Ihr noch meine Konfigurations-Dateien für den DHCP-Server. Es sind drei Stück, dies hat mit der Administration zu tun, prinzipiell kann man auch alles in eine Datei packen.
Die Kommentare und irrelevanten Angaben sind ausgeschnitten.
dhcpd.conf
# Stand : 02.09.2004
#Einbinden der Konfigurationsdateien fuer die Hosts mit fester IP-Adresse
#und die Subnetz-Konfiguration mit dynamischer Adress-Vergabe fuer neue
#Clients:
include "/etc/dhcp3/dhcpclasses.conf";
include "/etc/dhcp3/dhcpsubnets.conf";
Include "/etc/dhcp3/dhcphosts.conf";
dhcpclasses.conf
# Stand: 02.09.2004
class "technik1" {
match if option agent.circuit-ID=00:04:00:07:01:01;
}
class "technik2" {
match if option agent.circuit-ID=00:04:00:08:01:02;
}
class "raum122" {
match if option agent.circuit-ID=00:04:00:0A:01:04;
}
class "raum147" {
match if option agent.circuit-ID=00:04:00:04:01:05;
}
class "raum152" {
match if option agent.circuit-ID=00:04:00:05:01:06;
}
class "lehrerzimmer" {
match if option agent.circuit-ID=00:04:00:09:01:03;
}
class "selgo" {
match if option agent.circuit-ID=00:04:00:0B:01:07;
}
class "r324/qbar" {
match if option agent.circuit-ID=00:04:00:06:01:09;
}
class "raum254" {
match if option agent.circuit-ID=00:04:00:0C:01:08;
}
dhcpsubnets.conf
#Stand 02.09.2004
shared-network schule {
#Technikraum 1
subnet 10.0.14.0 netmask 255.255.255.0 {
option routers 10.0.14.200;
#dynamischer Bereich fuer Technikraum 1
pool {
range 10.0.14.150 10.0.14.199;
allow members of "technik1";
}
}
#Technikraum 2
subnet 10.0.22.0 netmask 255.255.255.0 {
option routers 10.0.22.200;
#dynamischer Bereich fuer Technikraum 2
pool {
range 10.0.22.150 10.0.22.199;
allow members of "technik2";
}
}
#Lehrerzimmer
subnet 10.0.57.0 netmask 255.255.255.0 {
option routers 10.0.57.200;
#dynamischer Bereich fuer Lehrerzimmer
pool {
range 10.0.57.150 10.0.57.199;
allow members of "lehrerzimmer";
}
}
# Raum 122+125+127
subnet 10.1.22.0 netmask 255.255.255.0 {
option routers 10.1.22.200;
#dynamischer Bereich fuer Raum 122+125+127
pool {
range 10.1.22.150 10.1.22.199;
allow members of "raum122";
}
}
#Raum 147
subnet 10.1.47.0 netmask 255.255.255.0 {
option routers 10.1.47.200;
#dynamischer Bereich fuer Raum 147
pool {
range 10.1.47.150 10.1.47.199;
allow members of "raum147";
}
}
#Raum 152
subnet 10.1.52.0 netmask 255.255.255.0 {
option routers 10.1.52.200;
#dynamischer Bereich fuer Raum 152
pool {
range 10.1.52.150 10.1.52.199;
allow members of "raum152";
}
}
#SelGO-Raum + Bibliothek
subnet 10.1.86.0 netmask 255.255.255.0 {
option routers 10.1.86.200;
#dynamischer Bereich fuer SelGo-Raum + Bibliothek
pool {
range 10.1.86.150 10.1.86.199;
allow members of "selgo";
}
}
#Raum 254+255
subnet 10.2.54.0 netmask 255.255.255.0 {
option routers 10.2.54.200;
#dynamischer Bereich fuer Raum 254+255
pool {
range 10.2.54.150 10.2.54.199;
allow members of "raum254";
}
}
#Raum 324 und Q-Bar
subnet 10.3.24.0 netmask 255.255.255.0 {
option routers 10.3.24.200;
#dynamischer Bereich fuer Raum 324
pool {
range 10.3.24.150 10.3.24.199;
allow members of "r324/qbar";
}
}
}
Sollten noch Fragen sein, versuche ich gerne, diese zu beantworten.
Gruß,
Michael
Hallo!
Ich würde das Thema noch einmal gerne aufgreifen, da ich z.Z. vor einem ähnlichen Problem stehe.
Ich habe einen zentralen DHCP-Server der ca. 80 verschiedene Pools konfiguriert hat. Jeder Pool ist für ein L2-Netz welches auf verschieden Switches liegt. Die DHCP-Requests werden über die Access-Router zum zentralen DHCP weiterleitet und dort wird dem Client anhand des weitergeleiteten Requests eine passende IP aus dem Pool zugeordnet.
Ich würde den Clients nun gerne mit Hilfe der Option 82 immer die selbe Adresse aus dem Pool geben. Also einem Client nicht aufgrund seiner Mac-Adresse sondern aufgrund der Tatsache an welchem Switchport er hängt eine fixe IP zuweisen.
Die hier gezeigte Konfigruration sieht schon ganz gut aus, dass werde ich mal testen, jedoch bezieht sich das ja auf die Zuordnung zu einem Pool. Das habe ich jetzt ja quasi schon.
Weiß jemand Rat?
Gruss Markus
Ich würde das Thema noch einmal gerne aufgreifen, da ich z.Z. vor einem ähnlichen Problem stehe.
Ich habe einen zentralen DHCP-Server der ca. 80 verschiedene Pools konfiguriert hat. Jeder Pool ist für ein L2-Netz welches auf verschieden Switches liegt. Die DHCP-Requests werden über die Access-Router zum zentralen DHCP weiterleitet und dort wird dem Client anhand des weitergeleiteten Requests eine passende IP aus dem Pool zugeordnet.
Ich würde den Clients nun gerne mit Hilfe der Option 82 immer die selbe Adresse aus dem Pool geben. Also einem Client nicht aufgrund seiner Mac-Adresse sondern aufgrund der Tatsache an welchem Switchport er hängt eine fixe IP zuweisen.
Die hier gezeigte Konfigruration sieht schon ganz gut aus, dass werde ich mal testen, jedoch bezieht sich das ja auf die Zuordnung zu einem Pool. Das habe ich jetzt ja quasi schon.
Weiß jemand Rat?
Gruss Markus
- pdreker
- Beiträge: 8298
- Registriert: 29.07.2002 21:53:30
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Nürnberg
Hallo...
Könntest Du diese Anleitung vielleicht bei Gelegenheit ins Wiki einpflegen (http://www.debianforum.de/wiki/Tipps)? Hier im Forum wird der Eintrag nämlich irgendwann nicht mehr sichtbar sein (ausser über die Suchfunktion)...
Bei Fragen -> PN an pdreker
Patrick
Könntest Du diese Anleitung vielleicht bei Gelegenheit ins Wiki einpflegen (http://www.debianforum.de/wiki/Tipps)? Hier im Forum wird der Eintrag nämlich irgendwann nicht mehr sichtbar sein (ausser über die Suchfunktion)...
Bei Fragen -> PN an pdreker
Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de
Jabber: pdreker@debianforum.de
-
- Beiträge: 14
- Registriert: 23.08.2004 11:57:00
- Wohnort: Köln
-
Kontaktdaten:
@Markus
Hi,
wenn ich das richtig verstehe, sollen bei Dir immer alle Rechner "ihre feste IP" bekommen, daß heißt, die IP-Adressen sollen nicht dynamisch vergeben werden?
Sollte das der Fall sein, wieso willst Du das nicht über die MAC-Adresse machen?
Oder hab ich was falsch verstanden?
Gruß,
Micha
wenn ich das richtig verstehe, sollen bei Dir immer alle Rechner "ihre feste IP" bekommen, daß heißt, die IP-Adressen sollen nicht dynamisch vergeben werden?
Sollte das der Fall sein, wieso willst Du das nicht über die MAC-Adresse machen?
Oder hab ich was falsch verstanden?
Gruß,
Micha
hi!
Japp. Es gibt für jeden Switch einen Pool. Die Rechner um die es geht sind im Prinzip kleinen Tiny-Probes. Nachdem sie ihre IP vom DHCP bekommen haben ziehen sie sich vom tftp Ihre Konfiguration.
Das funktionert z.Z. alles noch per MAC-Adresse. Im Prinzip ist mir es aber um egal welche Probe es sich handelt. Wichtig ist der Ort wo sie steht bzw. an welchem Port sie angeschlossen ist. Deshalb würde ich dem Gerät gerne basierend auf dem Port an dem es sich befindet eine fixe Adresse vergeben.
In diesen Netzen bzw. VLAN's befinden sich nur diese Probes, keine normalen User-PC o.ä.
Es gibt also immer einen /23 Pool, von dem ich die Adressen fix anhang der Option 82 vergeben möchte.
Gruss Markus
Japp. Es gibt für jeden Switch einen Pool. Die Rechner um die es geht sind im Prinzip kleinen Tiny-Probes. Nachdem sie ihre IP vom DHCP bekommen haben ziehen sie sich vom tftp Ihre Konfiguration.
Das funktionert z.Z. alles noch per MAC-Adresse. Im Prinzip ist mir es aber um egal welche Probe es sich handelt. Wichtig ist der Ort wo sie steht bzw. an welchem Port sie angeschlossen ist. Deshalb würde ich dem Gerät gerne basierend auf dem Port an dem es sich befindet eine fixe Adresse vergeben.
In diesen Netzen bzw. VLAN's befinden sich nur diese Probes, keine normalen User-PC o.ä.
Es gibt also immer einen /23 Pool, von dem ich die Adressen fix anhang der Option 82 vergeben möchte.
Gruss Markus
-
- Beiträge: 14
- Registriert: 23.08.2004 11:57:00
- Wohnort: Köln
-
Kontaktdaten:
Also,
Deine PCs hängen an einem Switch, dieser Switch ist über nen Router mit dem DHCP-Server verbunden?
Und nu willst Du jedem PC entsprechend seines Ports auf dem Switch die IP geben?
Vorraussetzung dafür wäre ein Layer-3-Switch, an dem die PCs hängen. Und wenn das der Fall ist, kannst du das im Prinzip machen, wie ich, nur daß in deiner Klasse jeweils nur ein Rechner wäre.
Weiß ja nicht, ob sich das lohnt.
Aber vielleicht hab ich Deine Netzstruktur immer noch nicht gerafft. Da wäre n Netzwerkplan ganz angenehm.
Gruß,
Micha
Deine PCs hängen an einem Switch, dieser Switch ist über nen Router mit dem DHCP-Server verbunden?
Und nu willst Du jedem PC entsprechend seines Ports auf dem Switch die IP geben?
Vorraussetzung dafür wäre ein Layer-3-Switch, an dem die PCs hängen. Und wenn das der Fall ist, kannst du das im Prinzip machen, wie ich, nur daß in deiner Klasse jeweils nur ein Rechner wäre.
Weiß ja nicht, ob sich das lohnt.
Aber vielleicht hab ich Deine Netzstruktur immer noch nicht gerafft. Da wäre n Netzwerkplan ganz angenehm.
Gruß,
Micha
Richtig.Michael Effertz hat geschrieben: Deine PCs hängen an einem Switch, dieser Switch ist über nen Router mit dem DHCP-Server verbunden?
Und nu willst Du jedem PC entsprechend seines Ports auf dem Switch die IP geben?
Die DHCP-Requests verfügen bereits über Option 82-Tags. Der derzeitige DHCP (Network Registrar..) kann aber nur anhand der client-id fixe Adressen zuweisen und nicht anhand der relay-agent-circuit-id. Außerdem ist der sowieso Schrott weil mit dem ganzen Java-Webfronted usw. ist das Ding langsam ohne Ende. Hab mir deshalb fix auf nem 486er nen dhcp3 installiert.
Genau. Bloß vergibst du ja aus einem Pool wenn die ID übereinstimmt, ich will sicherstellen das die IP's so wie die Ports am Switch vergeben werden.Michael Effertz hat geschrieben: Und wenn das der Fall ist, kannst du das im Prinzip machen, wie ich, nur daß in deiner Klasse jeweils nur ein Rechner wäre.
Folgendes habe ich nun erstmal konfiguriert, leider noch nicht testen können:
# Testnetz 1 ol
subnet 10.0.164.0 netmask 255.255.254.0 {
option routers 10.0.164.1;
}
host cpe-1-ol {
fixed-address 10.0.164.4;
allow members of "cpe-1-ol";
}
class "cpe-1-ol" {
# 6 Byte Switch ID plus 00:19:00:1a
match if option agent.circuit-ID=00:02:85:24:23:20:00:19:00:1a;
}
Die Konfiguration wird dann aber ziemlich heftig, denn ich muss im ersten Step pro /23 ca. 20 Hosts vorkonfigurieren.
Mit nem Plan kann ich z.Z. noch nicht dienen, ich zeihe meine Netzskizzen meist lieber eben mit der Hand als mit Visio oder anderen Tools.Michael Effertz hat geschrieben: Weiß ja nicht, ob sich das lohnt.
Aber vielleicht hab ich Deine Netzstruktur immer noch nicht gerafft. Da wäre n Netzwerkplan ganz angenehm.
Hintergrund: An jedem Switch werden halt diese kleinen Probes angeschlossen. Das sind im Prinzip kleine Mini-Switches mit 3 Ports und Fiber-Uplink. Die Dinger melden sich am DHCP an, ziehen sich danach vom TFTP ihre Konfiguration. Zu den Probes gehen VLAN-Trunks. Am Anfang läuft die Initial-Kommunikation halt mittels native-vlan, mit der cfg werden die 3 Ports mit verschieden VLAN's as Access-Ports eingestellt.
Das ganze ist sehr nützlich auf einem Campus, der nur mit Fiber verkabelt ist. So kann man relativ bequem vers. Netze in einen Raum und an die Rechner führen.
Wenn ich die IP's anhand der Option zuweisen kann, ist es für den Service im Fehlerfall einfacher das Endgerät vor Ort zu wechseln. Denn nach dem Wechsel bekommt das Device wieder die cfg wie das Gerät vorher.
Gruss Markus
Richtig.Michael Effertz hat geschrieben: Deine PCs hängen an einem Switch, dieser Switch ist über nen Router mit dem DHCP-Server verbunden?
Und nu willst Du jedem PC entsprechend seines Ports auf dem Switch die IP geben?
Die DHCP-Requests verfügen bereits über Option 82-Tags. Der derzeitige DHCP (Network Registrar..) kann aber nur anhand der client-id fixe Adressen zuweisen und nicht anhand der relay-agent-circuit-id. Außerdem ist der sowieso Schrott weil mit dem ganzen Java-Webfronted usw. ist das Ding langsam ohne Ende. Hab mir deshalb fix auf nem 486er nen dhcp3 installiert.
Genau. Bloß vergibst du ja aus einem Pool wenn die ID übereinstimmt, ich will sicherstellen das die IP's so wie die Ports am Switch vergeben werden.Michael Effertz hat geschrieben: Und wenn das der Fall ist, kannst du das im Prinzip machen, wie ich, nur daß in deiner Klasse jeweils nur ein Rechner wäre.
Folgendes habe ich nun erstmal konfiguriert, leider noch nicht testen können:
# Testnetz 1 ol
subnet 10.0.164.0 netmask 255.255.254.0 {
option routers 10.0.164.1;
}
host cpe-1-ol {
fixed-address 10.0.164.4;
allow members of "cpe-1-ol";
}
class "cpe-1-ol" {
# 6 Byte Switch ID plus 00:19:00:1a
match if option agent.circuit-ID=00:02:85:24:23:20:00:19:00:1a;
}
Die Konfiguration wird dann aber ziemlich heftig, denn ich muss im ersten Step pro /23 ca. 20 Hosts vorkonfigurieren.
Mit nem Plan kann ich z.Z. noch nicht dienen, ich zeihe meine Netzskizzen meist lieber eben mit der Hand als mit Visio oder anderen Tools.Michael Effertz hat geschrieben: Weiß ja nicht, ob sich das lohnt.
Aber vielleicht hab ich Deine Netzstruktur immer noch nicht gerafft. Da wäre n Netzwerkplan ganz angenehm.
Hintergrund: An jedem Switch werden halt diese kleinen Probes angeschlossen. Das sind im Prinzip kleine Mini-Switches mit 3 Ports und Fiber-Uplink. Die Dinger melden sich am DHCP an, ziehen sich danach vom TFTP ihre Konfiguration. Zu den Probes gehen VLAN-Trunks. Am Anfang läuft die Initial-Kommunikation halt mittels native-vlan, mit der cfg werden die 3 Ports mit verschieden VLAN's as Access-Ports eingestellt.
Das ganze ist sehr nützlich auf einem Campus, der nur mit Fiber verkabelt ist. So kann man relativ bequem vers. Netze in einen Raum und an die Rechner führen.
Wenn ich die IP's anhand der Option zuweisen kann, ist es für den Service im Fehlerfall einfacher das Endgerät vor Ort zu wechseln. Denn nach dem Wechsel bekommt das Device wieder die cfg wie das Gerät vorher.
Zudem ist die Überwachung der Mini-Switches dann sehr einfach weil im Fehlerfall
anhand der IP sofort klar ist welches Device da gestorben ist.
Gruss Markus
-
- Beiträge: 14
- Registriert: 23.08.2004 11:57:00
- Wohnort: Köln
-
Kontaktdaten:
Hm,
okay, der Hintergrund, warum Du das machen willst ist mir jetzt etwas klarer. Allerdings muß ich zugeben, daß mein Wissen hinsichtlich Deines Vorhabes an seine Grenzen stößt
Bin ja froh, daß ich meinen DHCP-Server jetzt am Laufen hab.
Prinzipiell sollte es aber kein Problem sein, wenn Du weißt, was in der Circuit-ID steht.
Sollte das mit der fixed-address nicht funktionieren... ich bin mir nicht sicher, ob Du auch nen pool mit nur einer Adresse festlegen kannst
Gruß, Micha
okay, der Hintergrund, warum Du das machen willst ist mir jetzt etwas klarer. Allerdings muß ich zugeben, daß mein Wissen hinsichtlich Deines Vorhabes an seine Grenzen stößt
Bin ja froh, daß ich meinen DHCP-Server jetzt am Laufen hab.
Prinzipiell sollte es aber kein Problem sein, wenn Du weißt, was in der Circuit-ID steht.
Sollte das mit der fixed-address nicht funktionieren... ich bin mir nicht sicher, ob Du auch nen pool mit nur einer Adresse festlegen kannst
Gruß, Micha