Verwenden Sie Supermicro IPMI hinter einem Proxy?


12

Dies ist ein SuperMicro-Server mit einem X8DT3-Motherboard, das einen integrierten IPMI-BMC enthält. In diesem Fall ist der BMC ein Winbond WPCM450 . Ich glaube, dass viele Dell Server ein ähnliches BMC-Modell verwenden.

Eine gängige Praxis bei IPMI besteht darin, es in ein privates, nicht routbares Netzwerk zu isolieren. In unserem Fall sind alle IPMI-Karten in ein privates Verwaltungs-LAN mit der Nummer 192.168.1.0/24 eingesteckt, das keinen Weg nach außen hat. Wenn ich meinen Laptop an das Netzwerk 192.168.1.0/24 anschließe, kann ich überprüfen, ob alle IPMI-Funktionen wie erwartet funktionieren, einschließlich der Remotekonsole.

Ich muss über eine verschlüsselte Verbindung von einem anderen Netzwerk aus auf alle IPMI-Funktionen zugreifen können.

Ich habe versucht, SSH-Port weiterzuleiten. Bei einigen Servern funktioniert dies einwandfrei. Es sind jedoch fast 100 dieser Server vorhanden. Eine SSH-Clientkonfiguration zum Weiterleiten von 6 Ports auf 100 Servern ist unpraktisch.

Also dachte ich, ich würde einen SOCKS-Proxy ausprobieren . Dies funktioniert, aber es scheint, dass die Remotekonsolenanwendung meine systemweiten Proxyeinstellungen nicht befolgt.

  1. Ich richte einen SOCKS-Proxy ein. Durch die ausführliche Protokollierung kann ich die Netzwerkaktivität anzeigen und feststellen, ob Ports weitergeleitet werden.

    ssh -v -D 3333 stefanl@gateway.example.org
    
  2. Ich konfiguriere mein System für die Verwendung des SOCKS-Proxys. Ich bestätige, dass Java die SOCKS-Proxy-Einstellungen verwendet.

  3. Der SOCKS-Proxy funktioniert. Ich verbinde mich mit meinem Webbrowser unter http://192.168.1.100/ mit dem BMC . Ich kann mich anmelden, den Serverzustand anzeigen, den Computer ein- oder ausschalten usw. Da die ausführliche SSH-Protokollierung aktiviert ist, kann ich den Fortschritt verfolgen.

Hier wird es schwierig:

  1. Ich klicke auf die Schaltfläche "Konsole starten", mit der eine Datei mit dem Namen heruntergeladen wird jviewer.jnlp. JNLP-Dateien werden mit Java Web Start geöffnet.

  2. Ein Java-Fenster wird geöffnet. In der Titelleiste steht "Redirection Viewer" in der Titelleiste. Es gibt Menüs für "Video", "Tastatur", "Maus" usw. Damit wird bestätigt, dass Java die Anwendung über den Proxy herunterladen und starten kann.

  3. 60 Sekunden später läuft die Anwendung ab und sagt einfach "Fehler beim Öffnen des Video-Sockets". Hier ist ein Screenshot . Wenn dies funktioniert, würde ich ein Fenster im VNC-Stil sehen. In meinen SSH-Protokollen werden keine Verbindungsversuche zu den Ports 5900/5901 angezeigt. Dies deutet darauf hin, dass die Java-Anwendung die VNC-Anwendung gestartet hat, die systemweiten Proxy-Einstellungen jedoch ignoriert und daher keine Verbindung zum Remote-Host herstellen kann.

Java scheint meine systemweiten Proxy-Einstellungen zu beachten, aber diese VNC-Anwendung scheint sie zu ignorieren.

Kann ich diese VNC-Anwendung zwingen, meine systemweiten Proxy-Einstellungen zu verwenden?

Antworten:


4

Es hört sich so an, als wäre ein VPN tatsächlich die beste Wahl. Verfügen Sie über eine ACL auf dem Router, sodass der einzige nicht lokale Datenverkehr das VPN durchlaufen muss, und Sie sind fertig. Sehr einfach und sicher sowie einfach zu verwalten.


1
VPN eignet sich hervorragend als Verbindung zu mehreren IPMI-Computern. Richten Sie einfach einen modernen (128 MB, schnelle CPU wie den Asus RT-N16) Router mit Tomato und OpenVPN ein, und es ist ein Vergnügen. OpenVPN könnte einfacher einzurichten sein , ja, aber wenn es einmal eingerichtet ist, funktioniert es!
Jeff Atwood

Endlich habe ich SOCKS aufgegeben und benutze ein VPN. Ich werde wahrscheinlich mit OpenVPN gehen.
Stefan Lasiewski

21

Ich habe herausgefunden, dass es am besten ist, dafür keinen Socks-Proxy zu verwenden, sondern alle Ports weiterzuleiten, die auf einer lokalen Host-IP erforderlich sind. Um vorhandenen Diensten auszuweichen, verwende ich eine andere IP als 127.0.0.1. Angenommen, Sie haben 127.0.0.2 ausgewählt und Ihr Server hinter dem Proxy ist 192.168.1.1. Dies ist der zu verwendende Befehl ssh:

ssh user @ proxy-server -L127.0.0.2: 443: 192.168.1.1: 443 -L127.0.0.2: 5900: 192.168.1.1: 5900 -L127.0.0.2: 5901: 192.168.1.1: 5901 -L127 .0.0.2: 5120: 192.168.1.1: 5120 -L127.0.0.2: 5123: 192.168.1.1: 5123-C

Dann können Sie https://127.0.0.2 durchsuchen und das KVM wie gewohnt verwenden.

Die weitergeleiteten TCP-Ports sind 5900 und 5901 für Steuerung und Video, 5120 für virtuelle CDs und 5123 für virtuelle Disketten (die beiden letzteren habe ich nicht getestet). -C für die Komprimierung hinzugefügt, obwohl ich nicht weiß, ob etwas gesendet für die Komprimierung geeignet ist.

Eine weitere, etwas komfortablere (und theoretisch leistungsstärkere) Methode unter Linux ist die Verwendung von sshuttle , das alle TCP-Verbindungen über ssh mit iptables und einem Python-Interpreter auf dem Proxy-Server transparent weiterleitet.

sshuttle -r Benutzer @ Proxy-Server 192.168.1.1

Hinweis: sshuttle wird in Debian gepackt.

Was ich noch nicht weiterleiten konnte, ist der UDP-Port 623, der für ipmitool, eine CLI-Verbindung für IPMI, verwendet werden kann. Es gibt mehrere Tutorials dazu, aber keines hat für mich geklappt. Auf jeden Fall ist Java KVM gut genug.


Ich sehe, dass SSH nur TCP-Verkehr weiterleitet, nicht UDP-Verkehr. IPMI (Port 623 / UDP) und Serial-over-LAN (Port 6666 / UDP) sind nur UDP und erfordern daher eine Art funky UDP-zu-TCP-Konvertierung mit netcat. Wie frustrierend.
Stefan Lasiewski

1
Der erste Befehl ssh funktioniert (Weboberfläche und Java-Remotekonsole), mit der Ausnahme, dass das Mounten von virtuellen CDs nur funktioniert, wenn Sie auch 623 ( -L127.0.0.2:623:192.168.1.1:623) weiterleiten . Vielen Dank für die Auflistung der erforderlichen Ports. Dies ist so viel einfacher als das Einrichten eines VPN.
basic6

2

Versuchen Sie tsocks , sollte es lassen Sie jeden Prozess über einen SOCKS - Proxy laufen durch LD_PRELOAD einstellen , die in allen Teilprozessen funktionieren sollte, sehen dies zum Beispiel Nutzung. Wenn Sie mit ssh einen SOCKS-Proxy erstellen, haben Sie natürlich immer noch das UDP-Problem, aber dies sollte das Problem des Unterprozesses umgehen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.