- Mitglied seit
- 7 Feb 2007
- Beiträge
- 674
- Punkte für Reaktionen
- 0
- Punkte
- 16
Update: Dieses Paket ist in DS-Mod ab 26-15 bereit integriert
Inetd-Patch für DS-Mod 0.2.9_26-14.4 und Zusammenfassung:
Die Implementierung und Konfiguration des Inetd im DS-Mod ist nun weitestgehend komplett. Grob gesagt funktioniert das Ganze jetzt so, dass der Inetd ausgewählt werden und ein zugehöriges Paket 'inetd' installiert werden kann. Dienste können dann eine Konfiguration bereitstellen, die es erlaubt, diese Dienste über inetd zu starten. Das Ganze ist komplett im DS-Mod-WebIf integriert.
Meine Lösung besteht jetzt aus drei Teilen:
1. Inetd-Patch für DS-Mod 0.2.9_26-14.4 v0.2
2. Inetd-Paket 0.1
3. Patch zum dropbear-0.49-dsmod-0.5-Paket
Dieser Patch verwandelt das Dropbear-Paket in eine Referenzimplementierung eines Inetd-Fähigen Dienstes für den DS-Mod. Die einzelnen nötigen und daher auch hier durchgeführten Anforderungen sind:
Bei mir läuft die ganze Geschichte seit einigen Tagen stabil. Es gab auch keine wirklichen Probleme bei der Implementierung, man vergisst nur schnell die eine oder andere Stelle, wo eine Anpassung nötig ist.
Vorgehensweise zum Testen wäre die folgende:
ACHTUNG! Das Ganze ist noch absolut experimentell. Ich übernehme keinerlei Garantien.
Gruss, Nico
Edit: dsmod26-14.4-inetd-0.2.patch: save.cgi gefixed
Ursprünglicher Thread-Beginn:
Hallo,
ich bastel gerade daran, den rcapid selbst für die Fritzbox zu kompilieren. Da dieser ja einen Inetd vorraussetzt, musste ich an den natürlich auch ran, und dabei kam mir die Überlegung, dass es für den DS-Mod an sich vielleicht auch interessant sein könnte, einen Inetd zu integrieren, und (eventuell nur falls dieser ausgewählt wurde) verschiedene der Dienste über selbigen zu starten, was, wenn die Services nicht parallel genutzt werden, eventuell zu einem verringerten Speicherbedarf (RAM!) der Box führen könnte.
Ich habe jetzt nicht nachgeschaut, ob und welche der Dienste das unterstützen, aber interessant könnte es zumindest für telnetd, dropbear, evtl. den oder sogar die HTTP-Server, den FTP-Server, Samba, und OpenVPN sein, was die Pakete betrifft, die bisher im Mod enthalten sind. Da müsste man einfach mal prüfen, mit welchen Diensten das funktioniert und auch Sinn ergibt.
Weiterhin dürfte das auch intressant für diejenigen sein, die zusätzlich bspws. einen Apache oder andere Serverdienste einrichten möchten, insbesondere, wenn diese nur selten benutzt werden.
Die Frage, die sich dann als nächstes stellen würde, wäre, welcher der zahlreichen verfügbaren Inetds verwendet werden soll.
Wenn da Interesse besteht (insbesonder auch von den Mod-Entwicklern und den Entwicklern der einzelnen Pakete), dann würde ich mich mal daran machen, entsprechende Patches für den DSMod zu erstellen.
Gruss, Nico
Inetd-Patch für DS-Mod 0.2.9_26-14.4 und Zusammenfassung:
Die Implementierung und Konfiguration des Inetd im DS-Mod ist nun weitestgehend komplett. Grob gesagt funktioniert das Ganze jetzt so, dass der Inetd ausgewählt werden und ein zugehöriges Paket 'inetd' installiert werden kann. Dienste können dann eine Konfiguration bereitstellen, die es erlaubt, diese Dienste über inetd zu starten. Das Ganze ist komplett im DS-Mod-WebIf integriert.
Meine Lösung besteht jetzt aus drei Teilen:
1. Inetd-Patch für DS-Mod 0.2.9_26-14.4 v0.2
- Im menuconfig gibt es eine Option BusyBox-Optionen. Darunter kann man den inetd aktivieren. Wird diese Option ausgewählt, wird die BusyBox entsprechend mit inetd gebaut.
- Dropbear wird immer zusätzlich mit dem Inetd-Modus gebaut. Wie gesagt, er wird dadurch lediglich um 36 Bytes größer, das sollte jeder verschmerzen können.
- Der busybox-httpd in Version 1.4.1 hat eine fehlerhafte Behandlung von POST-Requests im inetd-Modus. Dies ist in 1.5.x behoben. Die entsprechenden Änderungen wurden per Patch auf den 1.4.1er httpd zurückportiert.
- Der busybox-inetd wurde dahingehend gepatcht, dass die 1024-Byte-Variable line (siehe Post http://www.ip-phone-forum.de/showpost.php?p=867589&postcount=22 von RalfFriedl) nur beim (Neu-)Einlesen der Config allokiert wird.
- Config und makefile für inetd-Paket eingebunden
- DS-Mod-WebIf: Seite 'Dienste' (daemons.cgi) zeigt nun ggfs. Status 'inetd' an.
- DS-Mod-WebIf: save.cgi angepasst, so das nötigenfalls die inetd.conf-Datei aktualisiert wird und der inetd entsprechend zum Neuladen selbiger veranlasst wird.
- Telnetd und DS-WebIf für Inetd vorbereitet. Hierzu ist jeweils
- rc-Script angepasst
- inetd-Script angelegt
- Weboberfläche angepasst (Startart inetd)
2. Inetd-Paket 0.1
- /usr/bin/modinetd - Dieses Script kann die inetd.conf Datei für einzelne oder alle inetd-fähigen Dienste aktualisieren und bei Bedarf auch im Flash speichern (per modsave).
- /etc/init.d/rc.inetd - Starten und Stoppen des inetd-Dienstes. Hat auch eine Option reload, die den Dienst zum Neuladen der inetd.conf veranlasst
- Web-If-Seite zur Konfiguration des Inetd (Startart und zusätzliche Argumente)
3. Patch zum dropbear-0.49-dsmod-0.5-Paket
Dieser Patch verwandelt das Dropbear-Paket in eine Referenzimplementierung eines Inetd-Fähigen Dienstes für den DS-Mod. Die einzelnen nötigen und daher auch hier durchgeführten Anforderungen sind:
- Anpassung des rc-Scripts. Wenn die Startart des Dienstes (in diesem Falle die Konfigurationsvariable DROPBEAR_ENABLED), die bisher 'yes' oder 'no' (automatisch oder manuell) enthalten konnte, den Wert 'inetd' enthält, dann muss der von rc.package status zurückgelieferte String 'inetd' lauten. Hierfür muss die Config des Pakets natürlich auch für den Befehl 'status' eingebunden werden.
- Das rc-Script muss ggfs. auch so angepasst werden, dass zum Start des Dienstes notwendige Konfigurationsdateien oder sonstige Vorraussetzungen bereits im load() erzeugt werden. Alternativ kann man solche Anpassungen auch noch im inetd-Script (s. nächster Punkt) erledigen, wenn nicht anders möglich.
- Anlegen eines kleinen Scripts /etc/default.package/package.inetd. Diese Script benötigt keine shebang (#!/bin/sh)-Zeile, da es nur von modinetd aufgerufen wird. Es muss eine Reihe von Variablen setzen (siehe entsprechende Datei im Patch), aus welchen von modinetd die inetd.conf-Zeile für den Dienst erstellt wird.
- Anpassung des cgi-Scripts. Wenn das Inetd-Paket installiert ist, muss zusätzlich die Startart 'inetd' auswählbar sein.
Bei mir läuft die ganze Geschichte seit einigen Tagen stabil. Es gab auch keine wirklichen Probleme bei der Implementierung, man vergisst nur schnell die eine oder andere Stelle, wo eine Anpassung nötig ist.
Vorgehensweise zum Testen wäre die folgende:
- Einigermaßer 'sauberer' dsmod_26-14.4 als Ausgangsbasis
- Den Inetd-Patch auf selbigen anwenden.
- Das bestehende Dropbear-Paket, sofern noch nicht in packages, manuell aus dem dl-Ordner nach dort entpacken
- Den Dropbear-Patch entsprechend im Ordner packages/dropbear-0.49 anwenden
- Das Inetd-Paket manuell nach packages entpacken
- make menuconfig
- BusyBox-Optionen, Inetd auswählen
- Pakete->Testing->Inetd auswählen
- Wenn noch nicht geschehen:
- make precompiled
- make dropbear-clean; make dropbear-precompiled (damit der Dropbear mit inetd-Modus gebaut wird)
- make busybox-clean; make busybox-precompiled (damit die busybox mit inetd gebaut wird)
- make
- Installieren und mit spielen WebIf usw. sollte selbsterklärend sein.
- Vorsicht. Wenn 'wichtige' Dienste über Inetd gestartet werden, sollte man Inetd natürlich auf 'Automatisch' stellen. Im Notfall kann der telnetd natürlich nach wie vor über das Telefon manuell gestartet werden.
ACHTUNG! Das Ganze ist noch absolut experimentell. Ich übernehme keinerlei Garantien.
Gruss, Nico
Edit: dsmod26-14.4-inetd-0.2.patch: save.cgi gefixed
Ursprünglicher Thread-Beginn:
Hallo,
ich bastel gerade daran, den rcapid selbst für die Fritzbox zu kompilieren. Da dieser ja einen Inetd vorraussetzt, musste ich an den natürlich auch ran, und dabei kam mir die Überlegung, dass es für den DS-Mod an sich vielleicht auch interessant sein könnte, einen Inetd zu integrieren, und (eventuell nur falls dieser ausgewählt wurde) verschiedene der Dienste über selbigen zu starten, was, wenn die Services nicht parallel genutzt werden, eventuell zu einem verringerten Speicherbedarf (RAM!) der Box führen könnte.
Ich habe jetzt nicht nachgeschaut, ob und welche der Dienste das unterstützen, aber interessant könnte es zumindest für telnetd, dropbear, evtl. den oder sogar die HTTP-Server, den FTP-Server, Samba, und OpenVPN sein, was die Pakete betrifft, die bisher im Mod enthalten sind. Da müsste man einfach mal prüfen, mit welchen Diensten das funktioniert und auch Sinn ergibt.
Weiterhin dürfte das auch intressant für diejenigen sein, die zusätzlich bspws. einen Apache oder andere Serverdienste einrichten möchten, insbesondere, wenn diese nur selten benutzt werden.
Die Frage, die sich dann als nächstes stellen würde, wäre, welcher der zahlreichen verfügbaren Inetds verwendet werden soll.
- Der BSD-Inetd hat den Vorteil, dass er klein ist (mips-Binary aus dem Debian-Source ca. 38 KB) - dafür hat er nur eine einzelne Konfigurationsdatei und auch sonst nicht sehr viele Features.
- Der XInetd hat sehr viele Features, unter anderem unterstützt er einzelne Konfigurationsdateien für jeden Service (Was sehr praktisch ist, wenn man unterschiedliche Pakete einfach einbinden möchte), aber leider wird das Binary 204 KB groß
- Zu beiden könnte man dann noch TCP Wrappers linken - die libwrap.so dürfte knapp 30 KB haben, das tcpd-Binary nur 4 oder so. Damit könnte man dann auch noch zusätzlich die hosts.allow und hosts.deny-Mechanismen benutzen.
Wenn da Interesse besteht (insbesonder auch von den Mod-Entwicklern und den Entwicklern der einzelnen Pakete), dann würde ich mich mal daran machen, entsprechende Patches für den DSMod zu erstellen.
Gruss, Nico
Anhänge
Zuletzt bearbeitet: