Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| centos:pxe_c7:tftp [04.01.2017 23:26. ] – angelegt django | centos:pxe_c7:tftp [22.07.2019 14:54. ] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== TFTP-Server unter CentOS 7.x einrichten ====== | ====== TFTP-Server unter CentOS 7.x einrichten ====== | ||
| Ein wesentlicher Baustein für unseren Installationsserver ist der TFTP-Server, | Ein wesentlicher Baustein für unseren Installationsserver ist der TFTP-Server, | ||
| + | Eine genaue Beschreibung zu **[[https:// | ||
| ===== Installation ===== | ===== Installation ===== | ||
| ==== TFTP-Server ==== | ==== TFTP-Server ==== | ||
| Zeile 222: | Zeile 222: | ||
| ===== Konfiguration ===== | ===== Konfiguration ===== | ||
| + | ==== xinet-Daemon ==== | ||
| + | Die Auslieferung des Bootmenüs und der hierzu notwendigen Dateien erfolgt mit Unterstützung des TFTP-Servers, | ||
| + | Hierzu passen wir die Konfigurationsdatei des **xinetd**-Daemon wie folgt an. | ||
| + | # vim / | ||
| + | <file bash / | ||
| + | # description: | ||
| + | # | ||
| + | # | ||
| + | # and to start the installation process for some operating systems. | ||
| + | service tftp | ||
| + | { | ||
| + | socket_type | ||
| + | protocol | ||
| + | wait = yes | ||
| + | user = root | ||
| + | server | ||
| + | server_args | ||
| + | # Django : 2016-01-08 TFTP-Server aktiviert | ||
| + | # default: disable | ||
| + | disable | ||
| + | per_source | ||
| + | cps = 100 2 | ||
| + | flags = IPv4 | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Damit der **xinetd** bei jedem Systemstart automatisch gestartet werden kann, aktivieren wir diesen mit folgendem Befehl. | ||
| + | # systemctl enable xinetd.service | ||
| + | |||
| + | Die Überprüfung de Autostart vom xinetd können wir bei Bedarf wie folgt prüfen. | ||
| + | # systemctl is-enabled xinetd.service | ||
| + | |||
| + | enabled | ||
| + | |||
| + | Alternativ dazu können wir auf folgenden Aufruf verwenden: | ||
| + | # systemctl list-unit-files | grep xinetd.service | ||
| + | |||
| + | xinetd.service | ||
| + | |||
| + | |||
| + | Ob der **xinted** beim Systemstart gestartet wird und dieser den **tftp**-Server auch anstartet können wir mittels folgendem Aufruf überprüfen. | ||
| + | # chkconfig --list | tail -n 14 | ||
| + | < | ||
| + | systemd services. SysV configuration data might be overridden by native | ||
| + | systemd configuration. | ||
| + | |||
| + | If you want to list systemd services use ' | ||
| + | To see services enabled on particular target use | ||
| + | ' | ||
| + | |||
| + | chargen-dgram: | ||
| + | chargen-stream: | ||
| + | daytime-dgram: | ||
| + | daytime-stream: | ||
| + | discard-dgram: | ||
| + | discard-stream: | ||
| + | echo-dgram: | ||
| + | echo-stream: | ||
| + | tcpmux-server: | ||
| + | tftp: | ||
| + | time-dgram: | ||
| + | time-stream: | ||
| + | </ | ||
| ==== Paketfilter/ | ==== Paketfilter/ | ||
| - | Damit unsere Besucher Verbindungen | + | Damit die Clients später Verbindungsanfragen |
| Unter **CentOS 7** wird als Standard-Firewall die dynamische **firewalld** verwendet. Ein großer Vorteil der dynamischen Paketfilterregeln ist unter anderem, dass zur Aktivierung der neuen Firewall-Regel(n) nicht der Daemon durchgestartet werden muss und somit alle aktiven Verbiundungen kurz getrennt werden. Sondern unsere Änderungen können **// | Unter **CentOS 7** wird als Standard-Firewall die dynamische **firewalld** verwendet. Ein großer Vorteil der dynamischen Paketfilterregeln ist unter anderem, dass zur Aktivierung der neuen Firewall-Regel(n) nicht der Daemon durchgestartet werden muss und somit alle aktiven Verbiundungen kurz getrennt werden. Sondern unsere Änderungen können **// | ||
| - | Mit Hilfe des Programms **firewall-cmd** legen wir nun eine **permanente** Regel in der Zone **public**, dies entspricht in unserem Beispiel das Netzwerk-Interface | + | Mit Hilfe des Programms **firewall-cmd** legen wir nun eine **permanente** Regel in der Zone **public** |
| # firewall-cmd --permanent --zone=public --add-service=tftp | # firewall-cmd --permanent --zone=public --add-service=tftp | ||
| success | success | ||
| - | Anschließend | + | Anschliessend |
| # firewall-cmd --reload | # firewall-cmd --reload | ||
| success | success | ||
| - | Anschließend können | + | Zu guter letzt fragen |
| # firewall-cmd --zone=public --list-services | # firewall-cmd --zone=public --list-services | ||
| Zeile 254: | Zeile 317: | ||
| 0 0 ACCEPT | 0 0 ACCEPT | ||
| + | ===== Systemstart ===== | ||
| + | Nun ist es an der Zeit unseren TFTP Server das erste mal über den **xinetd** zu starten. | ||
| + | # systemctl start xinetd | ||
| + | |||
| + | Im Syslog wird uns der Start des Daemon entsprechend protokolliert. | ||
| + | Jan 5 14:16:24 vml000057 xinetd[22639]: | ||
| + | Jan 5 14:16:24 vml000057 xinetd[22639]: | ||
| + | |||
| + | Ob auf unserem Server nun der TFTP Server läuft und auf Port **69** horcht können wir bei Bedarf auch noch überprüfen. | ||
| + | # netstat -tulpen | grep xinetd | ||
| + | |||
| + | | ||
| + | |||
| + | Den automatischen Start unseres Serverdienstes haben wir bereits im [[centos: | ||
| + | |||
| + | ===== Systemtest ===== | ||
| + | ==== Testdatei für die Übertragung anlegen ==== | ||
| + | Für unseren Test legen wir uns einfach eine kleine Textdatei im Arbeitsverzeichnis // | ||
| + | # echo "Dies ist ein ganz einfacher Text für den Test unseres TFTP-Servers" | ||
| + | |||
| + | ==== Testdatei transferieren ==== | ||
| + | Anschließend wechseln wir ins Homeverzeichnis unseres Benutzers. | ||
| + | # cd ~ | ||
| + | |||
| + | Dann bauen wir mit dem TFTP-Clientprogramm eine Verbiundung zu unserem Server auf und holen uns die zuvor angelegte Datei //test// mit dem Befehl **get**. Nach dem Herunterladen verlassen wir das Programm mit dem Befehl **quit**. | ||
| + | |||
| + | # tftp -v 10.0.0.57 | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | Das Ganze geht natürlich auch schneller als " | ||
| + | # tftp 10.0.0.57 -c get test | ||
| + | |||
| + | ==== Fehlerbehandlung ==== | ||
| + | Klappt der Download von unserem Clientrechners nicht, trotz funktionierendem Zugriff nicht, liegt es an den Paketfilterregelungen auf dem **Clientrechner**! Wie man in folgendem Beispiel sieht laufen wir hier in einen timeout: | ||
| + | # tftp -v 10.0.0.57 -c get test | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | Was ist nun passiert? Auf dem Client gibt es doch keine iptables-Regel, | ||
| + | # iptables -L | ||
| + | < | ||
| + | target | ||
| + | ACCEPT | ||
| + | ACCEPT | ||
| + | ACCEPT | ||
| + | ACCEPT | ||
| + | REJECT | ||
| + | |||
| + | Chain FORWARD (policy ACCEPT) | ||
| + | target | ||
| + | REJECT | ||
| + | |||
| + | Chain OUTPUT (policy ACCEPT) | ||
| + | target | ||
| + | </ | ||
| + | |||
| + | Auf unserem TFTP-Server haben wir doch auch Port **69** freigeschaltet: | ||
| + | # firewall-cmd --zone=public --list-services | ||
| + | |||
| + | tftp dhcpv6-client http ssh | ||
| + | |||
| + | Im Syslog des TFTP-Servers sehen wir nur die Folgende Fehlermeldung: | ||
| + | Jan 8 07:49:14 vml000057 in.tftpd[10031]: | ||
| + | |||
| + | <WRAP center round tip 90%> | ||
| + | Die Ursache ist ganz einfach erklärt. TFTP nutzt für die Steuerung Port **69**, für die Datenübertragung werden dann aber beliebige highports genutzt. Damit diese nun unseren Paketfilter passieren können, müssen wir an dem betreffenden (Test-)Clientsystem, | ||
| + | * **ip_conntrack_tftp** | ||
| + | * **ip_nat_tftp** | ||
| + | </ | ||
| + | |||
| + | Auf einem **//CentOS 7 System//** benutzen wir zur Aktivierung der beiden Module die Datei // | ||
| + | # vim / | ||
| + | <file bash / | ||
| + | # default: none | ||
| + | ip_nat_tftp | ||
| + | ip_conntrack_tftp</ | ||
| + | |||
| + | Zum Aktivieren starten wir den betreffenden Host einmal durch. | ||
| + | # systemctl reboot | ||
| + | |||
| + | Auf einem **//CentOS 6 System//** geschieht dies über die Konfigurationsdatei **iptables-config** des Paketfilter-Regelwerkes **iptables**. Dort tragen wir bei den **nat helpers** die beiden Module nach: | ||
| + | # vim / | ||
| + | <code bash> | ||
| + | # Django 2011-11-24 Freischaltungen für TFTP-Transfers | ||
| + | # default : IPTABLES_MODULES="" | ||
| + | IPTABLES_MODULES=" | ||
| + | </ | ||
| + | Anschließend starten wir unseren iptables-Paketfilter einmal durch. | ||
| + | # service iptables restart | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | Nun versuchen wir erneut unsere Testdatei vom TFTP-Server herunterzuladen , was natürlich Dank unserer Anpassungen nun erfolgreich funktioniert. | ||
| + | $ tftp 10.0.0.57 -v -c get test | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | Im Syslog unseres TFTP-Servers wird der erfolgreiche Dateitransfer entsprechend protokolliert. | ||
| + | Nov 24 09:14:30 vml000057 xinetd[7708]: | ||
| + | Nov 24 09:14:30 vml000057 in.tftpd[10146]: | ||
| + | ====== Links ====== | ||
| + | * **[[centos: | ||
| + | * **[[wiki: | ||
| + | * **[[http:// | ||