PXE auf einem BackupDC

Ich möchte in meiner Domäne wieder einen PXE-Server aufsetzen. um meine Softwareverteilung automatisiert ablaufen lassen zu können.

Mein DHCP-Server ist meine Fritzbox - diese unterstützt keine Boot-Optionen (ein Wechsel auf den DHCP von UCS ist im Moment an diesem Standort nicht möglich). Deshalb wollte ich TFTPD-HPA installieren (damit arbeitet die Softwareverteilung gut zusammen) und dnsmasq.

Leider scheitere ich schon bei der TFTP-Installation. Es kommt die Meldung: “E: Paket tftpd-hpa kann nicht gefunden werden.”

Welche Empfehlung gibt es für den Fall?

LG
Michael

(Teil)Lösung: Um die gewünschten Anwendungen zu installieren musste ich auf dem BackupDC noch folgendes ausführen

ucr set repository/online/unmaintained=yes apt-get update

Leider bekommt mein Client aber keine DHCP-Adresse und die pxelinux.0 wird auch nicht übertragen

Konfiguration sieht wie folgt aus:

#/etc/dnsmasq.d/pxe.conf
# Don't function as a DNS server:
port=0

# Log lots of extra information about DHCP transactions.
log-dhcp

# This range(s) is for the public interface, where dnsmasq functions
# as a proxy DHCP server providing boot information but no IP leases.
# Any ip in the subnet will do, so you may just put your server NIC ip here.
dhcp-range=192.168.2.254,proxy

# The boot filename.
dhcp-boot=/pxelinux.0,ucs002254,192.168.2.254

# kill multicast
dhcp-option=vendor:PXEClient,6,2b

# Disable re-use of the DHCP servername and filename fields as extra
# option space. That's to avoid confusing some old or broken DHCP clients.
dhcp-no-override

# PXE menu
# pxe-prompt="Press F8 for boot menu", 3

# The known types are x86PC, PC98, IA64_EFI, Alpha, Arc_x86,
# Intel_Lean_Client, IA32_EFI, BC_EFI, Xscale_EFI and X86-64_EFI
pxe-service=X86PC, "Boot from network", pxelinux

[code]# /etc/default/tftpd-hpa

TFTP_USERNAME=“tftp”
TFTP_DIRECTORY="/HDD/SDA254_1000GB/www/NETINST/www/modules/pxe/pxeroot"
TFTP_ADDRESS=“0.0.0.0:69”
TFTP_OPTIONS="-l -s"
[/code]

Der TFTP läuft:

pgrep -lf tftpd 16782 /usr/sbin/in.tftpd --listen --user tftp --address 0.0.0.0:69 -l -s /HDD/SDA254_1000GB/www/NETINST/www/modules/pxe/pxeroot

Ich bin ein wenig weiter gekommen

Wenn ich lokal das tftp aufrufe, kann ich die Datei herunter laden - nur nicht wenn ich im Netzwerk bin.

Mein Versuch mit

ucr set security/packetfilter/udp/69/all=ACCEPT /etc/init.d/univention-firewall restart

den port 69 zu öffnen scheint aber nicht zu reichen - immer noch kein Zugriff möglich - auch nach einem Restart nicht. Anscheinend fehlt noch eine Kleinigkeit

1 Like

Ich konnte die Ursache noch weiter einschränken:

Deaktiviere ich die Firewall mit

/etc/init.d/univention-firewall stop

funktioniert der PXE wie gewünscht.

Jetzt habe ich folgede Info gefunden http://unix.stackexchange.com/questions/99270/iptables-rules-for-tftp-server. Daraus habe ich dann versucht, die /etc/security/packetfilter.d/50_local.sh anzupassen wie folgt:

[code]#Load the modules that support TFTP
modprobe ip_conntrack_tftp
modprobe ip_conntrack_ftp

/sbin/iptables -A INPUT -i eth0 -s 192.168.2.0/24 -p udp --dport 69 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -A INPUT --sport 1024: --dport 1024: -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT --sport 1024: --dport 1024: -m state --state ESTABLISHED,RELATED -j ACCEPT
[/code]
Bei dem Neustart der IPTables kommt dann die Meldung:

So wie ich verstanden habe, müssen die Ports über 1024 auch freigegeben werden, weil die Kommunikation darüber dynamisch verhandelt wird bei TFTP.

Wie erreiche ich dass nun in UCS?

Hier die Lösung:

Mit folgenden Einträgen klappt jetzt das PXE-Booten


#Load the modules that support TFTP
modprobe ip_conntrack_tftp
modprobe ip_conntrack_ftp

/sbin/iptables -A INPUT -s 192.168.2.0/24 -p "udp" --dport 69 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -A INPUT -s 192.168.2.0/24 -p "tcp" --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -s 192.168.2.0/24 -p "tcp" --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT

Hallo,

vielen Dank für diesen Monolog - hat mir sehr geholfen!

VG
HN

1 Like
Mastodon