PXE auf einem BackupDC

german

#1

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


Ucs 4.3 with ucc
#2

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


#3

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?


#4

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