Qnap

Aus d0b

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Allgemein

Qnap Port List

   FTP - 21 by default and configurable.
   Passive FTP port - 55536 ~ 56559 by default and configurable
   SSH - 22 by default and configurable. 
   SMTP - 25 by default and configurable.
   Web Server/HTTP - 80; HTTPS - 8081 by default and configurable. 
   Netbios/SAMBA - 137, 138, 139, 445
   SSL/HTTPS - 443 by defualt and configurable
   AFP - 548
   Rsync - 873 by default and configurable.
   RTRR - 8899 by default and configurable
   MySQL - 3306 by defualt and configurable
   System management, Web File Manager, Multimedia Station, Download Station, Surveillance Station
   8080 by default and configurable. 
   Twonkymedia - 9000
   Telnet - 13131 by default and configurable
   BitTorrent - 6881~6999 by default and configurable.
   Syslog - 514 by defualt and configurable
   SNMP - 161 by default and configurable
   TFTP - 69 by default and configurable
   PPTP - 1723
   OpenVPN - 1194 by defualt and configurable
   RADIAUS  - monitors UDP ports 1645, 1812 (for RADIUS Authentication) and 1646, 1813 (for RADIUS Accounting) for RADIUS requests.
   LDAP Server - 389
   NFS - 2049, 111 and dynamic ports

Support

QNAP Support Deutschland: 0900/1845678 (1,49€/min Festnetz, 2,79€ Mobilfunknet)

Logs erstellen:

  • QNAP APP Center öffnen
  • QNAP Diagnostic Tools herunterladen & öffnen
  • Dump der Logs erstellen & herunterladen
  • Mail an "desupport@qnap.com" senden inkl. Kontakt Rufnummer & Log Dump`s


Dienste

Rsync

Auf der Shell zu finden unter namen "qsync" unter dem Pfad "/etc/config/qsync".

Profile

In Profilen werden Verbindungsinformationen zu Server abgelegt.

#/etc/config/qsync/hbrm_profile.conf         Hier werden die Profile abgelegt, sieht dann wie folgt aus:

[Profile0]
Name = Local_Profile
InUse = 0

[Profile2]
StorageType = 1
Ssh = 0
Name = RSYNC_Old1
INetAddr = 192.168.23.5     
Account = admin
Port = 873
EnPassword = V2@De3TlXYZbC94JqfXYZCnfA==
Ssl = 0
InUse = 1
RsyncMode = 0

Speicher

/etc/config/qsync/hbrm_storage.conf 

[Storage1]
Name = Storage_Old1
Path = /XYZ-Pfad
ProfileID = Profile1
ConnectStatus = 0
TotalCapacity = 44796761
UsedCapacity = 44796105

[Storage0]
ProfileID = Profile1
Name = Remote Storage 1
DestRoot = /
Path = /XYZ-Pfad/
ConnectStatus = 0
TotalCapacity = 105708282
UsedCapacity = 0

Links

TimeMachine

NFS


/etc/config/nfssetting           // nfs rechte config

/etc/exports                     // freigabe


/etc/init.d/nfs {start|stop|restart|reexport|remountd|create_keytab}

Virtualization Station

Paralells Desktop VM migration

Wer von eine VM von einen OSX Paralells Desktop auf einen QNAP VM Host migrieren möchte, nimmt dafür am besten die Testversion von VMware Fusion, hier kann man im Gegensatz zum Paralells Desktop die VM direkt in .ovh (Open Virtualization Format) exportieren und somit direkt in das QNAP Virtualization Station importieren. Mit Paralells Desktop müsste man nach dem Export noch eine Konvertierung durchführen, kann man so machen aber ist halt.....

WIndows ACL

Produkte

TS-439 Pro II+

Openssh

Eigentlich hat die Orginale Firmware schon einen sshd, aber der will nur den user "admin" reinlassen unter anderem. Das war anfangs kein problem, bis ich git über den ipkg-manager installiert hatte und einen anderen user via ssh einloggen wollte. Eine kurze Recherche ergab, das jemand schon ein Kochrezept dafür bereitliegen hat.

RAM Upgrade

  • Default RAM: 1x 1GB ADATA AD2S800B1G6-B (SODIMM, DDR2, PC-6400, CL6, 800MHz)
  • Upgrade RAM: 1x 2GB Kingston KVR800D2S6/2G (SODIMM, DDR2, PC2-6400, CL6, 800 MHz)


SNMP

Check_mk

Da war jemand schon schneller ;-)

OpenNMS

Kochrezept

Icinga Plugin

Gibt es schon, mehr dazu hier

OID`s

MIB OBJECT LABEL OBJECT ID Data Type Value (Example)
MIB-2 .1.3.6.1.2.1 -
- system .1.3.6.1.2.1.1 -
- sysDescr.0 .1.3.6.1.2.1.1.1.0 OctetString "GS1910-24HP 24x1G Ethernet Switch"
- sysUpTime.0 .1.3.6.1.2.1.1.3.0 TimeTicks "Timeticks: (9400662) 1 day, 2:06:46.62"
- sysContact.0 .1.3.6.1.2.1.1.4.0 OctetString "your@email.tld"
- sysName.0 .1.3.6.1.2.1.1.5.0 OctetString "switch_23"
- sysLocation.0 .1.3.6.1.2.1.1.6.0 OctetString "Rack 3"
Interfaces .1.3.6.1.2.1.2 -
at .1.3.6.1.2.1.3 -
IP .1.3.6.1.2.1.4 -
ICMP .1.3.6.1.2.1.5 -
TCP .1.3.6.1.2.1.6 -
UDP .1.3.6.1.2.1.7 -
SNMP .1.3.6.1.2.1.11 -
HOST-RESOURCES-MIB host .1.3.6.1.2.1.25 -
- hrStorageSize .1.3.6.1.2.1.25.2.3.1.5.33 Integer -
- hrStorageUsed .1.3.6.1.2.1.25.2.3.1.6.33 Integer -
Enity MIB .1.3.6.1.2.1.47 -
MAC Adress entPhysicalSerialNum 1.3.6.1.2.1.47.1.1.1.1.11.1 OctetString "aa-bb-cc-dd"
Firmware Version entPhysicalFirmwareRev .1.3.6.1.2.1.47.1.1.1.1.9.1 OctetString "V2.00(AAAY.0)C0"
NAS-MIB storage .1.3.6.1.4.1.24681 - -
- SystemCPU-Usage .1.3.6.1.4.1.24681.1.2.1.0 OctetString "0,90 %"
- SystemTotalMem .1.3.6.1.4.1.24681.1.2.2.0 OctetString "989.0 MB"
- SystemFreeMem .1.3.6.1.4.1.24681.1.2.3.0 OctetString "266.0 MB"
- CPU-Temperature .1.3.6.1.4.1.24681.1.2.5.0 OctetString "43 C/109 F"
- SystemTemperature .1.3.6.1.4.1.24681.1.2.6.0 OctetString "42 C/107 F"
- HdNumber-Usage .1.3.6.1.4.1.24681.1.2.10.0 OctetString "4"
- SysFanNumber .1.3.6.1.4.1.24681.1.2.14.0 Integer "1"
- SysFanSpeed .1.3.6.1.4.1.24681.1.2.15.1.3.1 OctetString "1280 RPM"
- SysVolumeNumber .1.3.6.1.4.1.24681.1.2.16.0 Integer "1"
- SysVolumeStatus .1.3.6.1.4.1.24681.1.2.17.1.6 OctetString "Ready"
- HdSmartInfo .1.3.6.1.4.1.24681.1.2.11.1.7.{1-4} OctetString "Good"
- HdTemperature .1.3.6.1.4.1.24681.1.2.11.1.3.{1-4} OctetString " 36 C/96 F"

TS-470 Pro

RAM Upgrade

Es müssen die Festplatten ausgebaut werden, anschließend sind die RAM Slots erreichbar. Slot 1 ist gut erreichbar, Slot 2 etwas schwerer, wer es sich leicht machen will, baut nur 8GB RAM auf Slot 1 nach, der Standard 2GB RAM ist auf Slot 2 verbaut. Für den geschickten Techniker sollte es aber auch kein Problem sein beide Riegel zu tauschen.

TVS-471

Gibt es mit in folgenden Ausführungen:

  • TVS-471-PT-4G: Dual-core Intel G3250 3.2 GHz Processor + 4 GB DDR3 RAM
  • TVS-471-i3-4G: Dual-core Intel Core i3-4150 3.5 GHz Processor + 4 GB DDR3 RAM

RAM Upgrade

Bei diesen Modell wird ein Riegel von der Innenseite (HDD Schacht1) ausgetauscht, der andere ist von der Außenseite sehr gut erreichbar nachdem das Gehäuseblech (3 Schrauben) entfernt wurde.

  • Default RAM: Transcend 4GB kit (2x2GB) DDR3 PC3-12800,1600MHz, 702662-3524
  • Upgrade RAM: Crucial 16GB kit (2x8GB) DDR3 PC3-12800,1600MHz, CT2K8G3S160BM

TS-879U-RP

Zubehör

Rails

  • A03-Serie (Gehäuse), Schienenset, maximale Belastbarkeit 57 kg

RAM Upgrade

Anforderung: DDR3 - 8 GB - DIMM 240-PIN - 1600 MHz / PC3-12800 - ungepuffert - nicht-ECC - für QNAP TS-1270U-RP, TS-1279U-RP, TS-1679U-RP, TS-870U-RP, TS-879U-RP

  • Default RAM:
  • Upgrade RAM: Bsp.

VTx aktivieren

Um auch bei diesen Modell die Virtualization Station nutzen zu können, muss man zuerst im Bios die VTx (Intel Virtualization Technology, Intel) Funktion aktivieren. Dafür einen Monitor + Tastatur am QNAP anschliessen & ins Bios neustarten. Wie das genau geht ist hier beschrieben:

TVS-871U-RP

Zubehör

Rails

  • RAIL-B02

TVS-872XU-RP

Zubehör

Rails

  • RAIL-B02

Zubehör

SAS-12G2E-U

Es handelt sich hier um einen SAS Controller von LSI vom Typ SAS3008 (SAS3008 PCI Express® to 8-Port 12 Gb/s SAS+SATA Controller)

Troubleshooting

Malware

Derek

curl https://download.qnap.com/Storage/tsd/utility/derek-be-gone.sh | sh

Quelltext:

#!/bin/sh

######################
# Derek Be Gone v1.1 #
# Author: qnapd      #
######################

set_mutable() {
    if [ ! -e "$1" ]; then
        return 0
    fi
    if [ -e /etc/IS_64BITS ]; then
        # 64bit set mutable
        SET_M_64="$1"
        echo " [*] Setting mutable 64bit on $SET_M_64"
        python -c "import os,fcntl,sys,struct;fd = os.open('${SET_M_64}', os.O_RDONLY); rec = struct.pack('L', 0); x = fcntl.ioctl(fd, 0x80086601, rec); flags = struct.unpack('L',x)[0]; was_immutable = flags & 0x00000010; flags = flags & ~0x00000010; f = struct.pack('i', flags); fcntl.ioctl(fd, 0x40086602, f); os.close(fd)"
    else
        # 32bit set mutable
        SET_M_32="$1"
        echo " [*] Setting mutable 32bit on $SET_M_32"
        python -c "import os,fcntl,sys,struct;fd = os.open('${SET_M_32}', os.O_RDONLY); rec = struct.pack('L', 0); x = fcntl.ioctl(fd, 0x80046601, rec); flags = struct.unpack('L',x)[0]; was_immutable = flags & 0x00000010; flags = flags & ~0x00000010; f = struct.pack('i', flags); fcntl.ioctl(fd, 0x40046602, f); os.close(fd)"
    fi
}

remove_bad_thing() {
    badpath="$1"
    if [ -e "$badpath" ]; then
        echo " [*] Removing $badpath"
        rm -rf "$badpath"
        if [ $? -eq 0 ]; then
            echo "  [+] Success!"
        else
            echo "  [-] Failed"
        fi
    fi
}

# clear fake qpkg
bdir=
test -f "${confdir}/smb.conf" && for i in homes Public Download Multimedia Web Recordings; do bdir=`getcfg "$i" path -f "${confdir}/smb.conf"` && test ! -z "$bdir" && bdir=`dirname "$bdir"` && test -d "$bdir" && testwriteable=$(mktemp "${bdir}/.tmp.XXXXXX") && rm "${testwriteable}" && break; bdir=''; done
test -z "${bdir}" || test ! -d "${bdir}" && { command -v readlink >/dev/null 2>&1 || ln -sf /bin/busybox /usr/bin/readlink; for i in Public Download Multimedia Web Recordings homes; do bdir=`readlink "/share/${i}" 2>/dev/null` && test ! -z "$bdir" && bdir=`dirname "$bdir"` && bdir=/share/${bdir##*/} && test -d "$bdir" && break; done;
test -z "${bdir}" || test ! -d "${bdir}"; } && { bdir=`getcfg SHARE_DEF defVolMP -f "${confdir}/def_share.info"`
test -z "${bdir}" || test ! -d "${bdir}"; } && { bdir=`mount | sed -n "s/.*\(\/share\/[^ /]\+\) .*/\1/gp" | head -n 1`
test -z "${bdir}" || test ! -d "${bdir}"; } && { for i in CACHEDEV3_DATA CACHEDEV2_DATA CACHEDEV1_DATA MD0_DATA; do test -d "/share/${i}" && bdir="/share/${i}" && break; done;
test -z "${bdir}" || test ! -d "${bdir}" && bdir=/mnt/HDA_ROOT; }

echo "[o] System path: ${bdir}"
echo "[o] Removing fake qpkg"
remove_bad_thing "${bdir}/.qpkg/.liveupdate/"
remove_bad_thing "${bdir}/.qpkg/.config/"
echo "---"

# clear dom
mdir=/tmp/config
__BOOT_DEV=
__model=`getcfg System "Internal Model"`
CONFIG_DEV_NODE=`getcfg "CONFIG STORAGE" DEVICE_NODE -f /etc/platform.conf`
CONFIG_DEV_PART=`getcfg "CONFIG STORAGE" FS_ACTIVE_PARTITION -f /etc/platform.conf`
CONFIG_DEV_FS=`getcfg "CONFIG STORAGE" FS_TYPE -f /etc/platform.conf`
__BOOT_CONF=`test -f /etc/default_config/BOOT.conf && cat /etc/default_config/BOOT.conf 2>/dev/null || cat "${confdir}/BOOT.conf"` || { test "$arch_o" = arm && __BOOT_CONF=TS-NASARM; } 
command -v hal_app > /dev/null 2>&1 && { __BOOT_DEV=$(hal_app --get_boot_pd port_id=0); }
test "${__BOOT_CONF}" = TS-NASARM || test "$arch_o" = arm && { test -f /etc/IS_TAS && __BOOT_DEV="${__BOOT_DEV:-/dev/mtdblock}7" || __BOOT_DEV="${__BOOT_DEV:-/dev/mtdblock}5"; } || __BOOT_DEV="${__BOOT_DEV:-/dev/sdx}6"
test "x${CONFIG_DEV_NODE}" != "x" && { ubiattach -m "${CONFIG_DEV_PART}" -d 2; mount -t ubifs ubi2:config "${mdir}" > /dev/null 2>&1 || { test -f /etc/IS_TAS && mount -t ext4 /dev/mmcblk0p7 "${mdir}"; } } || mount ${__BOOT_DEV} -t ext2 ${mdir} || { test "${__model}" = "TS-201" && mount -t ext2 /dev/mtdblock4 ${mdir}; } || { ubiattach -m "${CONFIG_DEV_PART}" -d 2; mount -t ubifs ubi2:config "${mdir}"; mount -t ext4 /dev/mmcblk0p7 "${mdir}"; } || { test "${__model}" = "TS-269L" && mount -t ext2 /dev/sdc6 ${mdir}; } || { test "${__model}" = "TS-869" && mount -t ext2 /dev/sdi6 ${mdir}; } || { test "$arch_o" = arm || ${__BOOT_CONF} = "TS-NASARM" && { for i in 5 7 4 6 3 8; do mount -t ext2 "/dev/mtdblock${i}" ${mdir} && break; done; }; } || { test "$arch_o" = x86 && for n in /dev/sdc /dev/sdx /dev/sdi $__BOOT_DEV; do for i in 6 $CONFIG_DEV_PART; do mount -t ext2 ${n}${i} ${mdir} && break 2; done; done; } || { mount -t ext2 $(/sbin/hal_app --get_boot_pd port_id=0)6 ${mdir}; }

echo "[o] Cleaning DOM"
remove_bad_thing "$mdir/autorun.sh"
for i in $mdir/K0*.sh; do
    remove_bad_thing "$i"
done
umount "$mdir"
echo "---"

# reinstall MR
echo "[o] Remove old MR"
mrpath="${bdir}/.qpkg/MalwareRemover/"
set_mutable "$mrpath"
set_mutable "$mrpath/modules/10_derek_3.pyc"
set_mutable "$mrpath/modules/12_derek_3.pyc"
remove_bad_thing "$mrpath"
rmcfg MalwareRemover -f /etc/config/qpkg.conf
echo "---"

echo "[o] Install new MR"
mrpkg=MalwareRemover_3.4.0_20190121_173849.qpkg
wget -nv "https://download.qnap.com/Storage/tsd/utility/$mrpkg"
sh "$mrpkg" > /dev/null 2>&1
getcfg MalwareRemover Enable -f /etc/config/qpkg.conf > /dev/null
if [ $? -eq 0 ]; then
    echo " [+] Success!"
else
    echo " [-] Failed"
fi
rm -f "$mrpkg"
echo "---"
echo "Finished!"
rm -f "$0"

Migration

4.2.X -> 4.3.X

Am besten gar nicht erst migrieren sondern neu anlegen ist mein Fazit...

Hier die Dinge die auf jeden Fall nicht mehr funktionieren:

  • RSYNC Backup Jobs müssen neu angelegt werden
  • NFS Freigaben funktionieren nur noch Fehlerhaft (Ordner werden nicht korrekt angezeigt/verschwinden im Zugriff)


Shell Befehle

Server Linux version

busybox | head -1

Dump Qnap Logs

Falls die GUI mal nicht funktioniert, geht das auch via Shell ;)

/mnt/ext/opt/qdesk/www/data/script/get_log $(get_hwsn) 

Der gepackte Dump liegt dann hier, und kann mit scp (von der lokalen shell) dann nach Hause kopiert werden

cd /tmp/helpdump/

scp admin@192.168.XXX.XXX:/tmp/helpdump/QXXXXXXXXX.zip Pfad/auf/euren/client/


Enclosure

rm /etc/config/enclosure.map                           // Erweiterngseinheiten zurücksetzen
cp /etc/config/raid.conf /etc/config/raid.conf.bckp    // Sicherheitskopie
vim /etc/config/raid.conf                              // Altes Raidgruppe + HDD`s entfernen

HDD

 
df -h                      // Mit "disk free" eingehängte Partitionen auflisten, "-h" = human radable
fdisk /dev/sdg1            // Mit "Fixed Disk" z.B. externe Platten auswählen, hier z.B. "/dev/sdg1"
   p                       // fdisk menü: Partionen der o.g. Platte anzeigen
   d                       // fdisk menü: Partitionen der o.g. Platte löschen
   m                       // fdisk menü: Verfügbare Dateisysteme anzeigen   
   n                       // fdisk menü: Neue Partition anlegen

Netzwerk

 
ifconfig eth4 10.0.2.20 netmask 255.255.255.0

Raid

 
cat /proc/mdstat           // Kurze Zusammenfassung aller Raid
                           // Ausgaben:
   md9                     // System (Raid 1)
   md13                    // Swap (Raid 1)
   md321                   // Extended Swap (Raid 1)

Qsync

cat /etc/logs/qsync/qsync-Job0.log

qcli

qcli -l user=admin pw=admin saveauthsid=yes         // login first ;-)

qcli_admin              qcli_firmwareupdate     qcli_log                qcli_pool               qcli_rtrrserver         qcli_timezone
qcli_vpnserver          qcli_backuprestore      qcli_hardware           qcli_mysqlserver        qcli_power              qcli_sharedfolder 
qcli_usergroups         qcli_wifi               qcli_cache              qcli_hdd                qcli_nastonas           qcli_quota 
qcli_snapreplica        qcli_users              qcli_domaincontroller   qcli_iscsi              qcli_network            qcli_raid
qcli_snapshotvault      qcli_virtualdisk        qcli_domainsecurity     qcli_iscsiacl           qcli_networkrecyclebin  qcli_rsync  
qcli_storage            qcli_volume             qcli_encrypt            qcli_iscsibackup        qcli_networkservice     qcli_rsyncserver
qcli_systemstatus       qcli_volumesnapshot     qcli_externaldevice     qcli_iscsisnapshot      qcli_ntp                qcli_rtrr 
qcli_timemachine        qcli_vpnclient  

qcli_hdd -l                    // Zeigt alle aktiven enclosures
qcli_hdd -D enclosureID=0      // Zeigt alle Disks der gewählten enclosure        

NFS

In der Nachfolgenden Fehlersuche gehen wir mal davon aus der Server die IP-Adresse 192.168.23.23 hat und der Client sich im gleichen Netz befindet mit einer abweichende IP-Adresse (z.B. 192.168.23.42).

  • Physikalische Verbindung prüfen (Client: Ping 192.168.23.23)
  • Prüfen ob RPC Messages durch das Netzwerk gelassen werden (Firewall Log prüfen)
  • Prüfen ob der entsprechende RPC Dienst läuft (Server & Client)
    • Server: "rpc.nfsd -d"
    • Client: "rpcinfo -p 192.168.23.23"
  • Funktioniert die Freigabe (Client: showmount -e 192.168.23.23)
  • Freigabe neu verbinden (Client: umount)
  • Wenn es hier noch probleme gibt wird es tricky, am besten pakete mitschneiden (z.B. Wireshark) und nachfolgende Befehle
ls -ld /pfad/zur/freigabe

getfacl /pfad/zur/freigabe

dmesg | grep NFS*

nfsstat  


Links

AFP

CNID-DB

Fehlerbeschreibung: Es erscheint folgende Fehlermeldung beim Zugriff auf eine Freigabe via AFP: "Something wrong with the volume's cnid db using temporary cnid db instead. Check server messages for details!"

Fehlerursache: Es scheint die CNID-DB ("Catalog Node ID" Datenbank) der AFP-Freigabe Schaden genommen zu haben.

Fehlerbehebung: .AppleDB der jeweiligen Freigabe löschen via ssh, AFP erstellt den Ordner neu. QNAP Howto

ssh admin@<nas-ip>                                                   // Als admin via ssh anmelden
find / -name cnid2.db |  sed 's/\/share/rm -r \/share/' > rm_cnid    // CNID-DB`s suchen | "rm -r" einfügen > Ergebnis in Datei speichern
chmod u+x rm_cnid                                                    // User Rechte zur Ausführung des Skripts geben
./rm_cnidb                                                           // Skript ausführen

Freigabeorder weg

Wenn der Server mit einen Stromausfall heruntergefahren wurde, kann es passieren das AFP Freigabe Ordner verschwinden unter SMB noch sichtbar. Aus bisher unbekannten Gründen wird der Ordner auf "versteckt" gesetzt, so macht ihr in wieder Sichtbar:

Netzlaufwerk mounten via Finder

  • Den Finder öffnen anschliessend Shortcut "CMD+K" ausführen (Dialog "Mit Server verbinden zu öffnen")
    • Im neuen Dialog Fenster Pfad angeben: "afp://<SERVER-IP>/<PFAD>", falls es keine öffentliche Freigabe ist werdet ihr anschließen nach Benutzernamen + Passwort gefragt.

Alternativ Netzlaufwerk mounten via Terminal

sudo mkdir /Volumes/<FREIGABENAME>                                                 // Ordner für die Freigabe anlegen
sudo mount -t afp afp://user:pass@<SERVER-IP>/<PFAD> /Volumes/<FREIGABENAME>       // Netzlaufwerk einhängen 

Jetzt zu den Pfad Navigieren wo sich der fehlende Ordner befindet und unsichtbare Ordner anzeigen:

cd /Volumes/<FREIGABENAME>/                                                        // In das entsprechende Verzeichnis wechseln
defaults write com.apple.finder AppleShowAllFiles TRUE                             // Versteckte Ordner sichtbar machen

Anschliessend entsprechende Ordner wieder sichtbar machen

sudo SetFile -a v <UNSICHTBARER-ORDNER>/                                            // Datei Attribute auf in/visible setzen
sudo chflags nohidden <UNSICHTBARER-ORDNER>/                                        // Datei Flags auf sichtbar stellen (nur GUI)

defaults write com.apple.finder AppleShowAllFiles FALSE                             // Versteckte Ordner unsichtbar machen
sudo umount /Volumes/<FREIGABENAME>                                                 // Netzlaufwerk aushängen falls es nicht mehr gebraucht wird

SCSI Sense Fehler

Links

Persönliche Werkzeuge