Usando o Supermicro IPMI por trás de um proxy?

12

Este é um servidor SuperMicro com uma placa-mãe X8DT3 que contém um BMC On-board IPMI. Neste caso, o BMC é um Winbond WPCM450 ). Acredito que muitos servidores Dell usem esse modelo BMC semelhante.

Uma prática comum com o IPMI é isolá-lo a uma rede privada, não roteável. No nosso caso, todas as placas IPMI estão conectadas a uma rede privada de gerenciamento em 192.168.1.0/24, que não tem rota para o mundo externo. Se eu conectar meu laptop na rede 192.168.1.0/24, posso verificar se todos os recursos da IPMI funcionam como esperado, incluindo o console remoto.

Eu preciso acessar todos os recursos da IPMI de uma rede diferente, por meio de algum tipo de conexão criptografada.

Eu tentei o encaminhamento de porta SSH. Isso funciona bem para alguns servidores, no entanto, temos cerca de 100 desses servidores e manter uma configuração de cliente SSH para encaminhar 6 portas em 100 servidores é impraticável.

Então, pensei em testar uma procuração do SOCKS . Isso funciona, mas parece que o aplicativo Remote Console não obedece às configurações de proxy do sistema.

  1. Eu configurei um proxy SOCKS. O registro detalhado permite que eu veja a atividade da rede e se as portas estão sendo encaminhadas.

    ssh -v -D 3333 [email protected]
    
  2. Eu configuro meu sistema para usar o proxy SOCKS. Confirmo que o Java está usando as configurações de proxy do SOCKS.

  3. O proxy SOCKS está funcionando. Eu me conecto ao BMC no link usando meu navegador da web. Eu posso fazer login, ver o Funcionamento do Servidor, ligar ou desligar a máquina, etc. Como o registro em log detalhado do SSH está ativado, posso ver o progresso.

Aqui é onde é complicado:

  1. Clico no botão "Iniciar Console", que baixa um arquivo chamado jviewer.jnlp . Os arquivos JNLP são abertos com o Java Web Start.

  2. Uma janela Java é aberta. A barra de título diz "Redirection Viewer" na barra de título. Existem menus para "Vídeo", "Teclado", "Mouse", etc. Isso confirma que o Java pode fazer o download do aplicativo por meio do proxy e iniciar o aplicativo.

  3. 60 segundos depois, o aplicativo atinge o tempo limite e simplesmente informa "Erro ao abrir o soquete de vídeo". Aqui está uma imagem . Se isso funcionasse, eu veria uma janela no estilo VNC. Meus logs SSH não mostram tentativas de conexão para as portas 5900/5901. Isso sugere que o aplicativo Java iniciou o aplicativo VNC, mas que o aplicativo VNC ignora as configurações de proxy do sistema e, portanto, não consegue se conectar ao host remoto.

O Java parece obedecer às configurações de proxy do meu sistema, mas esse aplicativo VNC parece ignorar isso.

Existe alguma maneira de eu forçar este aplicativo VNC a usar minhas configurações de proxy em todo o sistema?

    
por Stefan Lasiewski 03.11.2011 / 00:58

3 respostas

4

Parece que uma VPN pode ser sua melhor aposta. Ter uma ACL no roteador para que o único tráfego não-local tenha que atravessar a VPN e pronto. Muito simples e seguro, além de fácil de gerenciar.

    
por 03.11.2011 / 01:04
19

Eu descobri que é melhor não usar um proxy socks para isso, mas sim encaminhar todas as portas necessárias em um IP do host local. Para evitar qualquer serviço existente, eu uso um IP diferente de 127.0.0.1. Supondo que você escolheu 127.0.0.2, e seu servidor atrás do proxy é 192.168.1.1, este é o comando ssh a ser usado:

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

Depois, você pode navegar pelo link e usar o KVM como de costume.

As portas TCP encaminhadas são 5900 e 5901 para controle e vídeo, 5120 para CD virtual e 5123 para disquete virtual (não testei as duas últimas). Adicionado -C para compressão, embora eu não saiba se alguma coisa enviada é adequada para compressão.

Outro método, um pouco mais confortável (e, em teoria, melhor desempenho) no linux, é usar sshuttle , que transmite de forma transparente todas as conexões TCP via ssh usando iptables e um interpretador python no servidor proxy.

sshuttle -r user@proxy-server 192.168.1.1

Dica: o sshuttle está sendo empacotado no Debian.

O que eu ainda não consegui encaminhar é a porta UDP 623, que pode ser usada para ipmitool, uma conexão CLI para o IPMI. Não are vários tutoriais sobre isso, mas nenhum funcionou para mim. De qualquer forma, o Java KVM está bem o suficiente.

    
por 06.11.2011 / 00:16
2

Tente tsocks , ele deve permitir que você execute qualquer processo por meio de um proxy SOCKS definindo LD_PRELOAD que deve funcionar em todos os subprocessos, consulte < href="http://blog.kagesenshi.org/2006/12/using-tsocks-to-tranparently-use-socks.html"> isto por exemplo uso. Claro, se você estiver usando o ssh para criar um proxy SOCKS, você ainda terá o problema UDP, mas isso deve contornar o problema do subprocesso.

    
por 02.09.2012 / 23:34