TFTP-Server für unterschiedliche Clients einrichten

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
saxandl
Beiträge: 109
Registriert: 06.09.2011 07:17:00

TFTP-Server für unterschiedliche Clients einrichten

Beitrag von saxandl » 10.04.2024 12:36:00

Hi!

Bei mit läuft ein TFTP-Server, und ich möchte unterschiedlichen Clients unterschiedliche boot-images zuweisen - am liebsten nach IP-Adressen.
Nach stundenlangem googeln und cookies bestätigen ;-) nichts brauchbars gefunden.

Ist das über den TFTP-Server überhaupt möglich?

greets, Alex

niemand
Beiträge: 523
Registriert: 22.12.2023 16:35:53
Kontaktdaten:

Re: TFTP-Server für unterschiedliche Clients einrichten

Beitrag von niemand » 10.04.2024 15:24:15

saxandl hat geschrieben: ↑ zum Beitrag ↑
10.04.2024 12:36:00
Bei mit läuft ein TFTP-Server, und ich möchte unterschiedlichen Clients unterschiedliche boot-images zuweisen - am liebsten nach IP-Adressen.
[…]
Ist das über den TFTP-Server überhaupt möglich?
Leider verrätst du nicht, welcher tftpd denn bei dir läuft, sodass keiner für dich kurz ins Manual schauen kannt – du müsstest es also selbst tun, oder ihn halt benennen, damit es jemand für dich tun kann.

Bei den am weitesten verbreiteten tftpd finde ich eine derartige Option jedenfalls auf die Schnelle nicht. Was aber immer funktioniert: mehrere Daemons parallel an verschiedenen Ports laufen lassen, und via Paketfilter den Client mit der jeweils richtigen Instanz verbinden.
„I fought in the Vim-Emacs-War.“ Quelle

tijuca
Beiträge: 297
Registriert: 22.06.2017 22:12:20

Re: TFTP-Server für unterschiedliche Clients einrichten

Beitrag von tijuca » 10.04.2024 21:54:37

Der erste Buchstabe T in der Protokollart steht für Trivial, und das aus gutem Grund. Das ist alles schon seeehr alt.
An dem Punkt wo man TFTP einsetzen will oder muss steht an sich noch nichts an Authentifikation und Autorisation etc. zur Verfügung. Man brauchte damals einfache zu konfigurierende und sparsame Ressourcen die rudimentäre Dinge im Netzwerk zur Verfügung stellen konnten. Hier einfach Dateien.

Einzige Möglichkeit den Zugriff zu steuern ist die jeweiligen Daten in einer Ordnerstruktur abzulegen und dem Client entsprechend mitzugeben welche Datei in welchem Verzeichnis er anfragen muss, eine Kontrolle welche IP auf was zugreifen darf ist nicht vorgesehen. Entscheider ist der Administrator der die Daten auf dem TFTP-Server ablegt.

Benutzeravatar
heisenberg
Beiträge: 3583
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: TFTP-Server für unterschiedliche Clients einrichten

Beitrag von heisenberg » 10.04.2024 22:07:30

Das Zuweisen des Bootfiles macht nicht der TFTP-Server sondern der BOOTP/DHCP-Server. Das Zuweisen geschieht auf der Basis der MAC-Adresse. Der TFTP-Server versucht nur auszuliefern, was der DHCP-Server spezifiziert und der BOOT-Client demzufolge anfragt.

Hier mal eine minimale Beispielconfig für den ISC-DHCP-Server:

Code: Alles auswählen

subnet 192.168.100.0 netmask 255.255.255.0 {
  option domain-name-servers 192.168.100.1;
  option routers 192.168.100.1;
  allow unknown-clients; # nur für DHCP nicht für BOOTP
  deny duplicates;
}

host meinhost.meinedomain.de {
        hardware ethernet 00:25:90:36:99:86;
                fixed-address 192.168.100.36;
                option host-name "meinhost.meinedomain.de";
                filename "debian11/pxelinux.0";
                }
}
Ansonsten ist ISC-DHCP-Server veraltet und wird nicht mehr gepflegt. Der aktuelle DHCP-Server heisst Debiankea bzw. Debiankea-dhcp4-server / Debiankea-dhcp6-server. Damit habe ich das aber selbst noch nicht umgesetzt.

Auf meinem TFTP-Server liegt dann ungefähr so etwas:

Code: Alles auswählen

# tree -L 3 /srv/tftp/debian11

/srv/tftp/debian11
│
├── debian-installer
│   └── amd64
│       ├── bootnetx64.efi
│       ├── boot-screens
│       ├── grub
│       ├── grubx64.efi
│       ├── initrd.gz
│       ├── linux
│       ├── pxelinux.0
│       └── pxelinux.cfg
├── ldlinux.c32 -> debian-installer/amd64/boot-screens/ldlinux.c32
├── netboot.tar.gz
├── pxelinux.0 -> debian-installer/amd64/pxelinux.0
├── pxelinux.cfg -> debian-installer/amd64/pxelinux.cfg
├── Release
├── Release.gpg
├── SHA256SUMS
└── version.info

6 directories, 12 files
Die pxelinux.cfg/default ist dann die Hauptkonfiguration für PXELinux den PXEBoot-Loader:

Code: Alles auswählen

# D-I config version 2.0
# search path for the c32 support libraries (libcom32, libutil etc.)
path debian-installer/amd64/boot-screens/
include debian-installer/amd64/boot-screens/menu.cfg
default debian-installer/amd64/boot-screens/vesamenu.c32
prompt 0
timeout 0
Dass da Debian 11 steht, bedeutet, das ich da schon länger nicht mehr mit rumgebastelt habe.
Zuletzt geändert von heisenberg am 10.04.2024 22:37:25, insgesamt 3-mal geändert.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Benutzeravatar
GregorS
Beiträge: 2637
Registriert: 05.06.2008 09:36:37
Wohnort: Freiburg
Kontaktdaten:

Re: TFTP-Server für unterschiedliche Clients einrichten

Beitrag von GregorS » 10.04.2024 22:14:59

Aus der Wikipedia: Motivation für die Entwicklung von TFTP war das Laden von Betriebssystemen oder Konfigurationen über das Netzwerk.

Ich habe TFTP vor vielen Jahren mal testweise benutzt, um mehrere Rechner über das Netzwerk zu booten. Die mWn einzige Möglichkeit, Rechner noch vor deren Booten über das Netzwerk identifizieren zu können, ist die MAC-Adresse der im Client verbauten Netzwerkkarte. Wie ich das sehe, kommst Du diesbezüglich nicht um MAC-Adresse(n) herum.

Worum konkret geht es Dir beim Spielen mit TFTP? Und welchen Server willst Du dafür verwenden?

Gruß

Gregor
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])

Benutzeravatar
Livingston
Beiträge: 1462
Registriert: 04.02.2007 22:52:25
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: 127.0.0.1

Re: TFTP-Server für unterschiedliche Clients einrichten

Beitrag von Livingston » 10.04.2024 23:29:40

Zur eigentlichen Frage:
Zumindest von Debiantftpd-hpa weiß ich, dass er /etc/hosts.allow und /etc/hosts.deny beachtet.
Der Hauptunterschied zwischen etwas, was möglicherweise kaputtgehen könnte und etwas, was unmöglich kaputtgehen kann, besteht darin, dass sich bei allem, was unmöglich kaputtgehen kann, falls es doch kaputtgeht, normalerweise herausstellt, dass es unmöglich zerlegt oder repariert werden kann.
Douglas Adams

Antworten