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.
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 [email protected]
Ich konfiguriere mein System für die Verwendung des SOCKS-Proxys. Ich bestätige, dass Java die SOCKS-Proxy-Einstellungen verwendet.
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:
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.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.
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?
quelle
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:
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.
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.
quelle
netcat
. Wie frustrierend.-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.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.
quelle