Iperf auf dem Synology NAS

Achtung: Etwas veraltet.

Auf x86-NAS-Systemen verwendet man heute meist Docker mit einem iperf-Container.

Manchmal möchte man einfach einmal prüfen, wie schnell denn das Netzwerk ist (besonders übers WLAN). Ein Programm, welches das ermöglicht ist die Open Source Software Iperf.

Um diese auf einer Synology-NAS zum laufen zu bekommen gibt es mehrere Wege:

  • Man installiert es über ipkg
  • Man legt sich das Programm auf den NAS und lässt es nur bei Bedarf laufen (Programmstart via Telnet oder SSH)
  • Man erstellt sich ein SPK-Paket und installiert es über die Paketverwaltung

Ich habe mich für die letztere Variante entschieden.

Um ein SPK-Paket zu installieren benötigt man zuerst einmal das gewünschte Programm in Binärform für den entsprechenden Prozessor. Man kann es sich selbst kompilieren (Hilfe dazu gibt es hier), oder man kann, so wie ich, bereits kompilierte Software nutzen. Ich habe mich dazu bei den ipkg-Quellen bedient. Meine Synology DS215j besitzt einen Marvell Armada 750 SoC. Dieser ist kompatibel mit dem Marvell Kirkwood mv6281. Deswegen kann man die Software von hier nutzen.

Die IPK-Dateien sind GZIP-Komprimierte Programmdateien. Deswegen kann man diese auch z.B. mit 7Zip extrahieren.

Anschließend muss man die Struktur einer SPK-Datei aufbauen. Diese muss genau wie folgt aussehen (exakter Dateiname wichtig):

iperf.spk
---scripts
------postinst
------postuninst
------preinst
------preuninst
------start-stop-status
---INFO
---package.tgz

Bei scripts handelt es sich um einen Ordner. Alles andere sind Dateien.

Die INFO-Datei kann so aussehen:

package="iperf"
displayname="Iperf"
version="1.0"
maintainer="Michael"
description="Port of Iperf to Synology"
arch="noarch"
package_icon="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"

Das package_icon ist ein Base64-Kodiertes PNG-Bild. Zum konvertieren gibt es einfache Web-Tools (z.B. hier). Der Rest sollte klar sein.

Auszug von Wikipedia: Base64

Base64 ist ein Verfahren zur Kodierung von 8-Bit-Binärdaten (z. B. ausführbare Programme, ZIP-Dateien oder Bilder) in eine Zeichenfolge, die nur aus lesbaren ASCII-Zeichen besteht.

Es findet im Internet-Standard Multipurpose Internet Mail Extensions (MIME) Anwendung und wird dort zum Versenden von E-Mail-Anhängen verwendet. Nötig ist dies, um den problemlosen Transport von beliebigen Binärdaten zu gewährleisten, da SMTP in seiner ursprünglichen Fassung nur für den Versand von 7-Bit-ASCII-Zeichen ausgelegt war. Durch die Kodierung steigt der Platzbedarf des Datenstroms um 33–36 % (33 % durch die Kodierung selbst, bis zu weitere 3 % durch die im kodierten Datenstrom eingefügten Zeilenumbrüche). Base64 wird zum Beispiel auch zur Kodierung von Benutzernamen und Passwort in der HTTP-Basisauthentifizierung und zur Übertragung von SSH-Server-Zertifikaten verwendet.

preinst und preuninst werden nicht benötigt, weswegen diese so aussehen:

#!/bin/sh

exit 0

postinst sieht bei mir so aus:

#!/bin/sh

eval $(env | grep "^SYNOPKG_PKGDEST=")
ret=`ln -s "${SYNOPKG_PKGDEST}/iperf" /usr/syno/synoman/webman/3rdparty/iperf`
ret=`chown -R admin.users $SYNOPKG_PKGDEST`
exit 0

Es wird ein Symbolischer Link erzeugt und sich die Rechte für das iperf-Verzeichnis beschafft.

postuninst sieht so aus:

#!/bin/sh
rm -f /usr/syno/synoman/webman/3rdparty/iperf
exit 0

Damit wird das gelinkte Vezeichnis wieder gelöscht.

Und das Herzstück start-stop-status:

#!/bin/sh

DIR="/usr/syno/synoman/webman/3rdparty/iperf"
cd "$DIR"

case $1 in
  start)
    "$DIR/iperf" -s &
    exit $?
  ;;
  stop)
    pkill -SIGKILL iperf &
    exit $?
  ;;
  status)
   if [ `pidof iperf` > "0" ]
      then
         exit 0  # Server is running
      else
         exit 2  # Server seems to have died
   fi
  ;;
  log)
    exit 0
  ;;
  *)
    exit 0
  ;;
esac

In diesem Script gibt es eine Fallunterscheidung für start, stop und status. Bei start wird der Iperf-Server gestartet (nicht als Daemon, da diese Iperf-Version einen Bug besitzt, der im Daemon-Modus für 100% CPU-Auslastung sorgt…). Bei stop wird der Iperf-Server anhand von seinem Prozess-Namen gekillt. Bei status wird zurückgegeben, ob der Prozess noch lebt. pidof gibt bei laufendem Prozess die PID zurück.

Ansonsten muss noch die Iperf-Programmdatei in den Ordner iperf gelegt werden, diesen mit 7Zip in ein .tar.gz Archiv gepackt werden und dieses anschließend in .tgz umbenannt werden.

Anschließend muss noch die fertige Ordnerstruktur mit allen Dateien als .tar gepackt werden und in .spk umbenannt werden.

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information