Usi Supermicro IPMI dietro un proxy?


12

Questo è un server SuperMicro con una scheda madre X8DT3 che contiene un BMC IPMI integrato. In questo caso, BMC è un Winbond WPCM450 ). Credo che molti server Dell utilizzino questo modello BMC simile.

Una pratica comune con IPMI è isolarla in una rete privata non instradabile. Nel nostro caso tutte le schede IPMI sono collegate a una LAN di gestione privata al 192.168.1.0/24 che non ha percorso verso l'esterno. Se collego il mio laptop alla rete 192.168.1.0/24, posso verificare che tutte le funzionalità IPMI funzionino come previsto, inclusa la console remota.

Devo accedere a tutte le funzionalità IPMI da una rete diversa, tramite una sorta di connessione crittografata.

Ho provato il port forwarding SSH. Questo funziona bene per alcuni server, tuttavia, abbiamo quasi 100 di questi server e mantenere una configurazione client SSH per inoltrare 6 porte su 100 server non è pratico.

Quindi ho pensato di provare un proxy SOCKS . Funziona, ma sembra che l'applicazione Remote Console non obbedisca alle mie impostazioni proxy a livello di sistema.

  1. Ho installato un proxy SOCKS. La registrazione dettagliata mi consente di vedere l'attività di rete e se le porte vengono inoltrate.

    ssh -v -D 3333 stefanl@gateway.example.org
    
  2. Configuro il mio sistema per utilizzare il proxy SOCKS. Confermo che Java sta utilizzando le impostazioni del proxy SOCKS.

  3. Il proxy SOCKS funziona. Mi collego al BMC su http://192.168.1.100/ usando il mio browser web. Posso accedere, visualizzare lo stato del server, accendere o spegnere la macchina, ecc. Poiché la registrazione dettagliata SSH è abilitata, posso vedere i progressi.

Ecco dove diventa difficile:

  1. Faccio clic sul pulsante "Avvia console" che scarica un file chiamato jviewer.jnlp. I file JNLP vengono aperti con Java Web Start.

  2. Si apre una finestra Java. La barra del titolo dice "Redirection Viewer" nella barra del titolo. Ci sono menu per "Video" "Tastiera" "Mouse", ecc. Ciò conferma che Java è in grado di scaricare l'applicazione attraverso il proxy e avviare l'applicazione.

  3. 60 secondi dopo, l'applicazione scade e dice semplicemente "Errore nell'apertura della presa video". Ecco uno screenshot . Se funzionasse, vedrei una finestra in stile VNC. I miei registri SSH non mostrano tentativi di connessione alle porte 5900/5901. Ciò suggerisce che l'applicazione Java ha avviato l'applicazione VNC, ma che l'applicazione VNC ignora le impostazioni proxy a livello di sistema e non è quindi in grado di connettersi all'host remoto.

Java sembra obbedire alle mie impostazioni proxy a livello di sistema, ma questa applicazione VNC sembra ignorarla.

Esiste un modo per forzare questa applicazione VNC a utilizzare le mie impostazioni proxy a livello di sistema?

Risposte:


4

Sembra che una VPN possa effettivamente essere la soluzione migliore. Avere un ACL sul router in modo che il solo traffico non locale debba attraversare la VPN e il gioco è fatto. Molto semplice, sicuro e facile da gestire.


1
La VPN funziona perfettamente per noi come canale per più macchine IPMI. Basta installare una moderna CPU (128 MB, veloce come l'Asus RT-N16) con Tomato e OpenVPN e funziona a meraviglia. OpenVPN potrebbe essere più facile da configurare , sì, ma una volta installato funziona!
Jeff Atwood,

Finalmente mi arrendo con SOCKS e utilizzo una VPN. Probabilmente andrò con OpenVPN.
Stefan Lasiewski,

21

Ho capito che è meglio non usare un proxy socks per questo, ma invece inoltrare tutte le porte necessarie su un IP localhost. Per eludere qualsiasi servizio esistente, utilizzo un IP diverso da 127.0.0.1. Supponendo che tu abbia scelto 127.0.0.2 e che il tuo server dietro il proxy sia 192.168.1.1, questo è il comando ssh da usare:

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

Quindi puoi navigare su https://127.0.0.2 e utilizzare KVM come al solito.

Le porte TCP inoltrate sono 5900 e 5901 per controllo e video, 5120 per CD virtuale e 5123 per floppy virtuale (non ho provato le ultime due). Aggiunto -C per la compressione, anche se non so se qualcosa inviato è adatto per la compressione.

Un altro metodo leggermente più comodo (e, in teoria, con prestazioni migliori) su Linux, è usare sshuttle , che inoltra in modo trasparente tutte le connessioni TCP tramite ssh usando iptables e un interprete python sul proxy-server.

sshuttle -r user @ proxy-server 192.168.1.1

Suggerimento: sshuttle viene impacchettato in Debian.

Quello che non potevo ancora inoltrare è la porta UDP 623, che può essere utilizzata per ipmitool, una connessione CLI per IPMI. Ci sono diversi tutorial su questo, ma nessuno ha funzionato per me. Comunque, Java KVM è abbastanza bene.


Vedo che SSH inoltra solo il traffico TCP, non il traffico UDP. IPMI (porta 623 / UDP) e Serial-over-LAN (Porta 6666 / UDP) sono solo UDP e quindi richiedono una sorta di conversione funky da UDP a TCP netcat. Che frustrante.
Stefan Lasiewski,

1
Il primo comando ssh funziona (interfaccia web e console remota java), tranne per il fatto che il montaggio del cd virtuale non sembra funzionare se non si inoltra anche 623 ( -L127.0.0.2:623:192.168.1.1:623). Grazie per aver elencato le porte richieste. Questo è molto più semplice della configurazione di una VPN.
basic6,

2

Prova tsocks , dovrebbe permetterti di eseguire qualsiasi processo attraverso un proxy SOCKS impostando LD_PRELOAD che dovrebbe funzionare in tutti i sottoprocessi, vedi questo esempio per l'utilizzo. Naturalmente, se stai usando ssh per creare un proxy SOCKS, avrai ancora il problema UDP, ma questo dovrebbe aggirare il problema dei sottoprocessi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.