Screen Burn-In
Glückwunsch! Deine Pixel sind jetzt offiziell eins mit meiner Website. 📺✨
Gebrauchte Enterprise-Hardware ist der Klassiker für jedes Homelab. Kürzlich ist mir ein Cisco WS-C3750G-24TS-S1U zugelaufen. Ein solider 24-Port Gigabit-Switch mit SFP-Uplinks und – was besonders spannend ist – Layer-3-Fähigkeiten. Doch die Inbetriebnahme hielt ein paar typische Cisco-Hürden bereit, besonders beim Thema Firmware-Updates und Speicherplatz.
Die Ausgangslage: IPBASE und fehlende Kryptografie
Nach dem ersten Booten über das Konsolenkabel zeigte ein show version:
Cisco IOS Software, C3750 Software (C3750-IPBASE-M), Version 12.2(44)SE6
Das Kürzel IPBASE ist hier das Problem. Es ist das Einstiegs-Feature-Set von Cisco. Schlimmer noch: Ohne das “K9” im Namen fehlen jegliche kryptografischen Funktionen. Das bedeutet: Kein SSH für die Konsole und kein HTTPS für das Webinterface. In einem modernen Netzwerk ist das ein absolutes No-Go. Ein Versuch, HTTPS zu aktivieren, endete prompt im Fehler:
3750g(config)#ip http secure-server
^
% Invalid input detected at '^' marker.
Der Update-Marathon
Mein Ziel war die Version 15.0(2)SE10, die letzte verfügbare Version für diese Hardware-Reihe. Da der Sprung von 12.2 IPBASE direkt auf 15.0 oft problematisch ist und ich die K9-Features brauchte, habe ich einen Zwischenschritt eingelegt.
Schritt 1: Das Fundament mit 12.2(55) IPSERVICESK9
Zuerst habe ich ein Image der 12.2er Schiene mit dem IPSERVICESK9-Set eingespielt. Dieses Set schaltet die Layer-3-Features (Routing) und eben SSH/HTTPS frei. Da das Image nur als .bin-Datei vorlag, reichte ein einfaches copy von meinem lokalen HTTP-Server:
3750g#copy http://192.168.254.11:8080/c3750-ipservicesk9-mz.122-55.SE12.bin flash:
Schritt 2: Der Kampf um jeden Megabyte (Flash-Limit)
Der Cisco 3750G (non-E/X Modelle) hat ein hartes Limit von 32 MB Flash-Speicher. Das ist für moderne IOS-Images extrem knapp. Die .tar-Datei für IOS 15.0, die neben dem Image auch die HTTP-Dateien für das Webinterface enthält, sprengt fast den Rahmen, wenn noch ein altes Image auf dem Flash liegt.
Bevor ich also das finale Update wagen konnte, musste ich das gerade erst installierte 12.2-Image wieder löschen, um Platz zu schaffen:
3750g#dir flash:
# ... zeigt ca. 21 MB frei an, zu wenig für das 15.0er TAR (ca. 22 MB) ...
3750g#delete flash:/c3750-ipservicesk9-mz.122-55.SE12.bin
Schritt 3: Der Sprung auf IOS 15.0 mit archive
Mit freiem Speicherplatz konnte ich nun den archive-Befehl nutzen. Dieser ist dem einfachen copy vorzuziehen, da er die .tar-Datei entpackt, alle Support-Files installiert und die Boot-Variable (boot system) korrekt setzt:
3750g#archive download-sw /overwrite /reload http://192.168.254.11:8080/c3750-ipservicesk9-tar.150-2.SE10.tar
Nach einem automatischen Reload meldete sich der Switch mit dem neuen System:
Cisco IOS Software, C3750 Software (C3750-IPSERVICESK9-M), Version 15.0(2)SE10
Aufräumen: Corporate-VLANs und Altlasten
Der Switch stammte aus einer größeren Firmenumgebung. Ein show vlan brief zeigte eine lange Liste von VLANs (z.B. VLAN_10_PROD, GUEST_NET etc.). Da diese Informationen in der Datei vlan.dat im Flash gespeichert werden, überleben sie ein normales erase startup-config.
Um wirklich bei Null anzufangen, habe ich die VLAN-Datenbank manuell gelöscht:
3750g#delete flash:vlan.dat
3750g#reload
Management-Konfiguration für das Homelab
Nachdem der Switch nun “sauber” und aktuell war, folgten die Standard-Einstellungen:
- Management-IP: Zuweisung einer IP im Vlan1 für den Zugriff.
- SNMP: Einrichtung für das Monitoring (z.B. mit LibreNMS). Wichtig: Zugriff nur über eine ACL erlauben!
3750g(config)#access-list 10 permit 192.168.254.0 0.0.0.255 3750g(config)#snmp-server community geheim RW 10 - EnergyWise: Da der Switch im Leerlauf ca. 94 Watt zieht, habe ich EnergyWise konfiguriert, um ungenutzte Ports in einen tieferen Power-Level zu versetzen.
Pro-Tips für das Homelab
Beim Einrichten eines Cisco-Switches für das eigene Lab gibt es drei oft übersehene Punkte, die über Frust oder Erfolg (und Sicherheit) entscheiden.
1. Drittanbieter-SFPs freischalten
Cisco ist bekannt dafür, nur hauseigene SFP-Module zu akzeptieren. Steckt man ein günstiges Modul eines Drittanbieters (z. B. von FS.com) ein, wird der Port oft mit einer Fehlermeldung (“err-disable”) abgeschaltet. Mit zwei magischen Befehlen lässt sich diese Sperre aufheben:
3750g(config)#service unsupported-transceiver
3750g(config)#no errdisable detect cause gbic-invalid
Hinweis: Cisco gibt hierbei eine Warnung aus, dass kein Support für fremde Hardware übernommen wird – im Homelab ist das jedoch meist zweitrangig.
2. Sicherheitslücke schließen: Smart Install deaktivieren
Ältere IOS-Versionen haben oft das “Smart Install”-Feature aktiviert. Dieses ist über die Jahre durch kritische Sicherheitslücken (z. B. CVE-2018-0171) aufgefallen, über die Angreifer volle Kontrolle über den Switch erlangen können. Da man dieses Feature im Homelab ohnehin nicht benötigt, sollte man es zwingend abschalten:
3750g(config)#no vstack
3. IPv6-Unterstützung aktivieren (SDM-Templates)
Ein oft übersehener Aspekt bei älteren Catalyst-Modellen ist das SDM (Switch Database Management). Da der Hardware-Speicher (TCAM) begrenzt ist, muss man dem Switch sagen, wofür er ihn priorisiert nutzen soll. In der Standardeinstellung beherrscht der 3750G oft kein IPv6.
Um den Switch fit für die Zukunft (und das moderne Internet) zu machen, muss das SDM-Template umgestellt werden:
3750g(config)#sdm prefer dual-ipv4-and-ipv6 default
Wichtig: Diese Änderung wird erst nach einem Neustart (reload) wirksam! Nach dem Reboot kann man den Erfolg mit show sdm prefer und der Aktivierung von IPv6 auf einem Interface prüfen:
3750g#show sdm prefer
The current template is "desktop IPv4 and IPv6 default" template.
3750g(config)#interface vlan 1
3750g(config-if)#ipv6 enable
3750g#show ipv6 interface brief
Vlan1 [up/up]
FE80::213:7FFF:FE59:E240 <-- Link-Local Adresse ist da!
4. Boot-Vorgang beschleunigen (Stack-Priority)
Da der 3750G ein Stack-Switch ist, wartet er beim Booten standardmäßig eine gewisse Zeit auf die “Stack Master Election” (Waiting for Stack Master Election...). Da im Homelab meist nur ein Switch läuft, kann man diesen Prozess beschleunigen, indem man die Priorität auf den Maximalwert setzt:
3750g(config)#switch 1 priority 15
Changing the Switch Priority of Switch Number 1 to 15
Do you want to continue?[confirm]
New Priority has been set successfully
5. SSH und die Sache mit den Schlüsseln
Damit SSH funktioniert, benötigt der Switch einen RSA-Schlüssel. Normalerweise erzeugt man diesen manuell mit crypto key generate rsa. In meiner Konfiguration war jedoch bereits ein selbstsignierter Trustpoint vorhanden:
crypto pki trustpoint TP-self-signed-<ID>
enrollment selfsigned
rsakeypair TP-self-signed-<ID>
Wenn SSH bei euch nicht direkt startet, obwohl transport input ssh gesetzt ist, hilft meist dieser Befehl (nachdem ein Hostname und ein Domain-Name gesetzt wurden):
3750g(config)#crypto key generate rsa
Empfehlenswert ist hier eine Schlüssellänge von mindestens 2048 Bit, um moderne SSH-Clients (wie aktuelle OpenSSH-Versionen) glücklich zu machen.
6. SSH-Verbindungsprobleme lösen (Legacy-Kryptografie)
Wer versucht, sich von einem modernen Linux- oder macOS-System per SSH auf den Switch zu verbinden, wird oft mit Fehlermeldungen wie no matching key exchange method found oder no matching host key type found begrüßt. Das liegt daran, dass der SSH-Stack von IOS 15.0 aus heutiger Sicht veraltete (unsichere) Verfahren nutzt, die moderne Clients standardmäßig deaktiviert haben.
Um trotzdem reinzukommen, muss man dem SSH-Client explizit erlauben, diese alten Methoden zu nutzen:
ssh -oKexAlgorithms=+diffie-hellman-group14-sha1 \
-oHostKeyAlgorithms=+ssh-rsa \
-oCiphers=+aes256-cbc \
root@192.168.254.1
Alternativ kann man für den Switch einen Eintrag in der lokalen ~/.ssh/config anlegen, um nicht jedes Mal diese Parameter tippen zu müssen:
Host 192.168.254.1
KexAlgorithms +diffie-hellman-group14-sha1
HostkeyAlgorithms +ssh-rsa
Ciphers +aes256-cbc
7. Der “Antennen-Analysator” für Netzwerkkabel (TDR)
Als Funkamateur (DO3EET) liebe ich Messgeräte. Wusstet ihr, dass der 3750G ein eingebautes TDR (Time Domain Reflectometry) Messgerät hat? Er kann elektrische Impulse durch das Kabel schicken, um die Länge zu messen oder Kabelbrüche zentimetergenau zu finden – und das während der Rechner noch am Kabel hängt!
Hier sind zwei Beispiele aus meinem Testlauf:
Beispiel 1: Ein funktionierendes 1m Patchkabel (Port 1)
3750g#show cable-diagnostics tdr interface gigabitEthernet 1/0/1
Interface Speed Local pair Pair length Remote pair Pair status
--------- ----- ---------- ------------------ ----------- --------------------
Gi1/0/1 1000M Pair A 0 +/- 4 meters Pair A Normal
Pair B 0 +/- 4 meters Pair B Normal
Pair C 0 +/- 4 meters Pair C Normal
Pair D 1 +/- 4 meters Pair D Normal
Beispiel 2: Ein offenes, ca. 24m langes Verlegekabel (Port 3)
3750g#show cable-diagnostics tdr interface gigabitEthernet 1/0/3
Interface Speed Local pair Pair length Remote pair Pair status
--------- ----- ---------- ------------------ ----------- --------------------
Gi1/0/3 auto Pair A 23 +/- 4 meters N/A Open
Pair B 24 +/- 4 meters N/A Open
Pair C 24 +/- 4 meters N/A Open
Pair D 24 +/- 4 meters N/A Open
Die Ergebnisse interpretieren:
- Pair status “Normal”: Alles bestens. Das Kabel ist an ein aktives Gerät angeschlossen.
- Pair status “Open”: Das Kabel hat am Ende keinen Abschluss (nicht eingesteckt).
- Pair length: Die “1” im ersten Beispiel zeigt ein sehr kurzes Kabel (~1m) an. Da die Hardware eine Messtoleranz von
+/- 4 metershat, werden Werte nahe Null oft als 0 oder 1 angezeigt. Im zweiten Beispiel sehen wir ein ca. 24 Meter langes Kabel, das irgendwo im Haus “offen” endet. - Remote pair: Bei einer funktionierenden Verbindung (Normal) zeigt der Switch an, ob die Adernpaare auf der Gegenseite korrekt ankommen.
Pair A -> Pair Abedeutet: Kein Dreher im Kabel!
Das Ergebnis bestätigt: Mein clean-lab ist messtechnisch voll unter Kontrolle!
Nerd-Overkill: Der Antennen-Rechner auf dem Switch (TCL)
Als Funkamateur sucht man immer nach Wegen, seine Hobbys zu verbinden. Da moderne Go-Binaries auf dem klassischen IOS nicht laufen, habe ich ein altes “Hintertürchen” genutzt: TCL (Tool Command Language).
Ich habe meinen Python-Rechner für die Comet HFJ-350M Antenne nach TCL portiert und auf den Flash des Switches geladen. Jetzt kann ich direkt auf der Switch-Konsole meine Antenneneinstellungen berechnen – perfekt, wenn man gerade am Rack bastelt!
3750g#tclsh flash:hfj350.tcl
=== Comet HFJ-350M Calculator (Cisco Edition) ===
Band (e.g. 40m) or Freq (MHz): 7.1
--- Configuration for 40m ---
Coil: Basis (Keine Zusatzspule)
Jumper: Kein
Std Len (7.0 MHz): 960 mm
Calc Len (7.1 MHz): 920 mm
IT-Infrastruktur trifft Amateurfunk – mehr Homelab-Feeling geht nicht! Vielleicht ist das ja sogar der Grundstein für ein HAM-Net auf dem 10m Band? 📡🌐🛰️
Für alle, die es nachbauen wollen, hier der vollständige TCL-Code:
# Comet HFJ-350M Antennen-Rechner für Cisco IOS
# Author: DO3EET
set antenna_data {
{band "160m" low 1.8 high 2.0 std 1.8 coil "Basis + 3.5 Spule + 1.8 Spule" jumper "Kein" len 1170 change 7}
{band "80m" low 3.5 high 3.8 std 3.5 coil "Basis + 3.5 Spule" jumper "Kein" len 910 change 20}
{band "40m" low 7.0 high 7.2 std 7.0 coil "Basis (Keine Zusatzspule)" jumper "Kein" len 960 change 25}
{band "30m" low 10.1 high 10.15 std 10.1 coil "Basis" jumper "Terminal 1" len 990 change 40}
{band "20m" low 14.0 high 14.35 std 14.0 coil "Basis" jumper "Terminal 2" len 800 change 60}
{band "17m" low 18.068 high 18.168 std 18.0 coil "Basis" jumper "Terminal 3 (oder 2)" len 1070 change 50}
{band "15m" low 21.0 high 21.45 std 21.0 coil "Basis" jumper "Terminal 3" len 750 change 80}
{band "12m" low 24.89 high 24.99 std 24.9 coil "Basis" jumper "Terminal 3" len 530 change 100}
{band "10m" low 28.0 high 29.7 std 28.5 coil "Basis" jumper "Terminal 4" len 1000 change 120}
{band "6m" low 50.0 high 52.0 std 51.0 coil "Basis" jumper "Terminal 5" len 950 change 100}
}
puts "=== Comet HFJ-350M Calculator (Cisco Edition) ==="
puts "Type 'exit' to quit."
while {1} {
puts -nonewline "Band (e.g. 40m) or Freq (MHz): "
flush stdout
set input [string trim [gets stdin]]
if {$input == "exit" || $input == "q"} break
if {$input == ""} continue
set found 0
foreach item $antenna_data {
array set d $item
set clean_band [string map {m ""} $d(band)]
set is_freq [string is double -strict $input]
if {$input == $d(band) || $input == $clean_band || ($is_freq && $input >= $d(low) && $input <= $d(high))} {
puts "\n--- Configuration for $d(band) ---"
puts "Coil: $d(coil)"
puts "Jumper: $d(jumper)"
puts "Std Len ($d(std) MHz): $d(len) mm"
if {$is_freq && $input != $d(std)} {
set diff_khz [expr {($input - $d(std)) * 1000.0}]
set calc_len [expr {round($d(len) - (($diff_khz / $d(change)) * 10.0))}]
puts "Calc Len ($input MHz): $calc_len mm"
}
puts ""
set found 1
break
}
}
if {!$found} { puts "No data found for '$input'\n" }
}
Der finale Touch: Ein Login-Banner
Um die Einrichtung abzurunden und dem Switch eine persönliche Note zu verleihen, habe ich noch einen Login-Banner (Message of the Day) konfiguriert. Das sieht nicht nur professionell aus, sondern ist in Firmenumgebungen oft auch rechtlich vorgeschrieben.
3750g(config)#banner motd #
**************************************************************************
* *
* DO3EET Clean-Lab | Cisco 3750G *
* *
* Authorized Access Only! *
* *
**************************************************************************
#
Hardware-Check: Ist das Gerät fit?
Nach der ganzen Software-Arbeit wollte ich wissen, wie es um die physische Gesundheit des gebrauchten Switches steht. Ein Blick in den show tech-support (oder gezielte show-Befehle) lieferte beruhigende Werte:
- Temperatur: Mit 34°C (
System Temperature State: GREEN) bleibt das Gerät im Leerlauf angenehm kühl. - Lüfter: Ein kurzes
FAN is OKim Log bestätigt, dass die Kühlung ordnungsgemäß funktioniert – bei gebrauchten Enterprise-Geräten oft ein kritischer Punkt (Stichwort: Lagerschaden). - Herzstück: Im Inneren werkelt ein PowerPC 405 Prozessor. Für heutige Verhältnisse fast schon antik, aber für Layer-3-Switching in Hardware immer noch absolut ausreichend.
- Selbsttest: Alle
POST(Power-On Self-Test) Routinen, inklusive des PortASIC-Speichers, meldeten ein sauberesPassed.
Die finale running-config
Hier ist ein Auszug der aktuellen Konfiguration (Passwörter und Secrets wurden maskiert). Diese zeigt alle besprochenen Einstellungen im Zusammenspiel:
Current configuration : 6798 bytes
!
version 15.0
no service pad
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
service unsupported-transceiver
!
hostname 3750g
!
enable secret 5 <ENCRYPTED>
enable password <PASSWORD>
!
username root privilege 15 secret 5 <ENCRYPTED>
vtp domain clean-lab
vtp mode transparent
sdm prefer dual-ipv4-and-ipv6 default
ip domain-name do3eet-clab.internal
!
ip dhcp excluded-address 192.168.254.1 192.168.254.10
!
ip dhcp pool MGMT_POOL
network 192.168.254.0 255.255.255.0
default-router 192.168.254.1
dns-server 8.8.8.8 1.1.1.1
!
energywise domain MyLab security shared-secret 0 <PASSWORD>
!
crypto pki trustpoint TP-self-signed-<ID>
enrollment selfsigned
subject-name cn=IOS-Self-Signed-Certificate-<ID>
rsakeypair TP-self-signed-<ID>
!
crypto pki certificate chain TP-self-signed-<ID>
certificate self-signed 01
<CERTIFICATE_DATA_MASKED>
quit
!
no errdisable detect cause gbic-invalid
spanning-tree mode pvst
spanning-tree extend system-id
!
interface GigabitEthernet1/0/1
description MANAGEMENT_PORT
switchport mode access
spanning-tree portfast
!
interface GigabitEthernet1/0/2
description DISABLED_FOR_SECURITY
shutdown
energywise level 0
!
! ... Interfaces 3 bis 27 analog konfiguriert ...
!
interface GigabitEthernet1/0/28
description DISABLED_FOR_SECURITY
shutdown
energywise level 0
!
interface Vlan1
ip address 192.168.254.1 255.255.255.0
no ip route-cache
ipv6 enable
!
ip http server
ip http authentication local
ip http secure-server
!
access-list 10 permit 192.168.254.0 0.0.0.255
!
snmp-server community <SECRET>
snmp-server location 3750g
snmp-server contact DO3EET
!
no vstack
banner motd ^C
**************************************************************************
* *
* DO3EET Clean-Lab | Cisco 3750G *
* *
* Authorized Access Only! *
* *
**************************************************************************
^C
!
line con 0
line vty 0 15
login local
transport input ssh
!
end
Fazit
Der Cisco 3750G ist trotz seines Alters ein hervorragendes Gerät für das Homelab, wenn man günstig an Layer-3-Features kommen möchte. Man muss jedoch den Firmware-Pfad genau planen, da der begrenzte Flash-Speicher kaum Fehler verzeiht. Mit SSH und IOS 15 ist das Gerät nun bereit für moderne Netzwerktasks.