Hallo Zusammen,
ist es irgendwie machbar mit dem DHCP-Server einen Host in der Form
00:11:22:33:*:*
anzugeben?
Hintergrund: wenn mehrere Geräte / Drucker mit Netzwerkanschluss getestet werden sollen können diese, trotz wechselnder MAC, immer die gleiche IP bekommen, denn es sind nie 2 gleichzeitig am Netz.
Oder gibt es die Möglichkeit das Cups die DHCP – IP mitbekommt und sich darauf einstellt (und evtl. gleichzeitig auch eine Aktion ausführt).
Danke.
Karsten
Hi,
meiner Ansicht nach hast Du zwei Möglichkeiten.
Du stellst eine feste Zuordnung auf dem DHCP-Server ein (man dhcpd.conf). Dazu muß dieser aber zugänglich sein (z.B. eigener Linux Server). Du stellst eine feste IP auf dem Client ein (sofern dieses möglich ist). Es hängt also von Deiner konkreten Umgebung ab, was die bessere Lösung ist. Ich habe mich für den ersten Weg entschieden und folgenden Abschnitt in die /etc/dhcpd.conf gepackt: subnet 192.168.0.0 netmask 255.255.255.0 { option subnet-mask 255.255.255.0; option broadcast-address 192.168.2.255; ddns-updates on; range 192.168.0.128 192.168.0.228; default-lease-time 14400; max-lease-time 172800; host deinhost { # Gerät mit fest zugeordnetter IP hardware ethernet 00:11:22:33:44:55; # fixed-address für deinhost.deinedomain.local; fixed-address 192.168.0.2; } } Wobei Du natürlich Deine Parameter einsetzten must.
Ciao
Ulf
Wenn Du einen WLAN-Router im Netz hast (z.B. Speedport, bei dem Du die mehreren LAN Anschlüsse nutzt), dann kannst Du z.B. den dhcp Bereich einstellen, z.B. ab 192.168.4.30-60 im Router; Am Drucker Menue z.B. Brother MFC* stellst Du dann eine feste IP z.B. 192.168.4.10 ein.
Hi,
ich vermute dass ich mich nicht richtig ausgedrückt habe.
Das was Ihr mir vorschlagt ist mir durchaus bekannt, ich habe schon einen DHCP – Server laufen.
Ich war eigentlich auch der Meinung die schwarze Farbe hat etwas über den Level der Frage ausgesagt..
-> trotzdem bin ich froh, dass ich überhaupt eine Antwort bekomme.
Zu meinem Problem: ich schliesse nacheinander mehrere Drucker zum Test an den Server an, diese bekommen eine IP zugewiesen (logisch; DHCP läuft) und ich muss entweder im Drucker oder im Logfile nachschauen welche.
-> Besser: Alle Drucker deren MAC mit 00:07:4d:2 beginnt bekommen die gleiche IP, also host – Eintrag mit leicht variabler MAC. Geht das?
Wenn ja wie?
Alternativ: kann ich in dem Moment wo der DHCPD eine IP zuteilt ein Script ausführen lassen dass als Parameter die IP bekommt? wenn ja, wie?
Danke.
Hallo!
Mir ist zwar keine Lösung bekannt, wir man dem DHCPD direkt beibringen kann, bei Vergabe einer IP ein Skript zu starten. Aber du hast ja bereits selbst erwähnt, dass der Daemon ein Logfile führt.
Dieses läßt sich entweder mit speziellen Logfile-Überwachungstools, Boardmitteln (tail -f … | sed … ) oder einem knappem Perl-Skript überwachen und bei bestimmten Ereignissen (bei dir die Vergabe einer neuen IP eines bestimmten MAC Bereichs) eine Aktion auslösen.
Eine Perl-Lösung habe ich bereits in ähnlicher Form umgesetzt und kann dir bei Bedarf die wesentlichen Code-Zeilen zukommen lassen.
Mit arp -a bekommst du alle MAC adressen im Netz heraus. Dann kann man mit dhcpd oder dhclient release 192.168.2.22 eine IP wieder fregegeben. Der nächste Drucker sollte dann eigentlich wieder die gleiche Adresse bekommen, sofern nicht ein anderer Teilnehmer grad im Netz hinzukommt und diese bekommt. hardware mag wohl keine Wildcards.
[1] http://www.gentoo.org/doc/de/handbook/handbook-alpha.xml?part=4&chap=3
[2] http://www.unixboard.de/vb3/showpost.php?p=29025&postcount=1
nmap eth0 192.168.2.* scannt das Netz und man bekommt von den anderen Teilnehmern die MAC angezeigt, auch wann man nur client ist. Ob release, -release –release -r die Option ist, steht im Manual oder probieren (Option ist für Server).
Hallo Oliver,
das hört sich nicht schlecht an.
Kannst Du mir den Code zukommen lassen?
Wie kompliziert ist die Umsetztung?? Bisher habe ich noch nichts in Perl… programmiert. Auf der Kommandozeile kenne ich mich aus (awk, sed,…) weiss aber nicht wie ich z.B. Logfiles (im Hintergrund) auswerten kann.
Für Hilfen bin ich dankbar.
Karsten
Wenn du dich auf der Konsole gut zurechtfindest, dann ist tail -f Logfile dein Freund. Das ganze durch eine Pipe nach sed oder awk und du bist deinem Ergebnis schon nicht mehr fern.
Ähnlich mache ich das auch im Perl Skript. Hier mal ein sehr knapper Ausschnitt, der zumindest die Vorgehensweise erkennen läßt:
$logfile = “/var/log/daemon.log”
$tailpid = open (MESSAGE, “/usr/bin/tail -f -n1 $logfile |”) || die “can’t fork: $!”;
while() {
if (/.*DHCPREQUEST.*/) {
exec(“/bin/true”) || die “can’t execute $!”;
}
}
Dieses Beispiel ist unvollständig. Es fehlen z.B. die Skriptzeilen, die bei Eintreffen der Signale SIGINT, SIGHUP, SIGTERM, SIGQUIT, also wenn das Perl-Skript beendet wird auch den tail Prozess beenden. Der Code würde hier jedoch den Rahmen sprengen. Es sind allerdings nur einige Zeilen mehr, die recht verstänflich sind.
Ich kann dir ein kommentiertes Skript per E-Mail zukommen lassen.
Oliver
Hallo Karsten!
ist es irgendwie machbar mit dem DHCP-Server einen Host in der Form 00:11:22:33:*:* anzugeben?
Hintergrund: wenn mehrere Geräte / Drucker mit Netzwerkanschluss getestet werden sollen können diese, trotz wechselnder MAC, immer die gleiche IP bekommen, denn es sind nie 2 gleichzeitig am Netz.
Von der DHCP Konfiguration her ist das am einfachsten zu machen, wenn die zu testenden Geräte an eine zusätzliche Netzwerkkarte des DHCP Servers angeschlossen werden. Du kannst dann in dhcpd.conf ein zusätzliches subnet mit einer Range von nur einer IP-Adresse konfigurieren. (Kurze Lease Zeiten verwenden!)
Ohne zweite Netzwerkkarte im DHCP Server kann man das auch mit einem gesonderten Netzwerk an einem Router erreichen, der als DHCP Relay agiert.
Solltest Du Dein Netzwerk nicht so konfigurieren können oder wollen, schau Dir mal die Manpage von DHCP genauer an ($ man dhcpd.conf). Evtl. ist es möglich mit “class”, “match”, “substring” und der “hardware” Adresse (= MAC-Adresse) eine Klasse zu bilden. Hab ich aber noch nie ausprobiert.
Harald
Es gibt die Option “option vendor-class-identifier string;”, damit sollte es laufen (man 5 dhcp-options).
Klingt zwar blöd, aber stell doch auf DNSMasq um.
Er ist einfacher einzurichten als die ziemlich schwierige Syntax von ISC´s dhcpd und ist genauso flexibel. Gibt wenig gründe warum man bei ISC´s dhcpd bleiben muss. Im ersten moment denke ich nicht das du so ein extrem komplexes Netz hast oder?
Alternative: Dem Drucker eine feste Adresse zuordnen und dann einfach nach dem Testen wieder auf dhcp zurückstellen.
Moin,
Wenn du nen isc dhcpd unter Linux betreibst dann kannst du mal sowas versuchen:
class “printer” {
match if substring(hardware, 1, 4) = 00:11:22:33;
}
subnet 192.168.1.0 netmask 255.255.255.0 {
…..
pool {
range 192.168.1.2 192.168.1.2;
allow members of “printer”;
deny unknown-clients;
}
pool {
range 192.168.1.3 192.168.1.100
allow unknown-clients;
}
}
sonst guck dir mal man dhcpd.conf an und dort die möglichkeiten der Grupierung von clients mit group pool class und subnet … da ist ne menge möglich.
Gruß ctFreez