Usando o Supermicro IPMI atrás de um proxy?

12

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

Uma prática comum com o IPMI é isolá-lo em uma rede privada e não roteável. No nosso caso, todos os cartões IPMI são conectados a uma LAN de gerenciamento privado em 192.168.1.0/24, que não tem rota para o mundo externo. Se eu conectar meu laptop à rede 192.168.1.0/24, posso verificar se todos os recursos IPMI funcionam conforme o esperado, incluindo o console remoto.

Preciso acessar todos os recursos IPMI de uma rede diferente, através 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 é impraticável manter uma configuração de cliente SSH para encaminhar 6 portas em 100 servidores.

Então pensei em tentar um proxy SOCKS . Isso funciona, mas parece que o aplicativo Remote Console não obedece às minhas configurações de proxy em todo o sistema.

  1. Eu configurei um proxy SOCKS. O log 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 em http://192.168.1.100/ usando meu navegador da web. Posso efetuar login, visualizar a integridade do servidor, ligar ou desligar a máquina etc. Como o registro detalhado do SSH está ativado, posso ver o progresso.

Aqui é onde fica 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 "Visualizador de redirecionamento" na barra de título. Existem menus para "Vídeo" "Teclado" "Mouse" etc. Isso confirma que o Java é capaz de baixar o aplicativo através do proxy e iniciar o aplicativo.

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

O Java parece obedecer às minhas configurações de proxy em todo o sistema, mas esse aplicativo VNC parece ignorá-lo.

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

Stefan Lasiewski
fonte

Respostas:

4

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

MDMarra
fonte
1
A VPN está funcionando muito bem para nós como um canal para várias máquinas IPMI. Basta configurar um roteador moderno (128mb, rápido, como o Asus RT-N16) com Tomato e OpenVPN e isso funciona muito bem. O OpenVPN pode ser mais fácil de configurar , sim, mas uma vez configurado, ele funciona!
21412 Jeff Atwood
Finalmente, estou desistindo de SOCKS e estou usando uma VPN. Provavelmente irei com o OpenVPN.
Stefan Lasiewski
21

Eu descobri que é melhor não usar um proxy de meias para isso, mas encaminhar todas as portas necessárias em um IP de 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 em https://127.0.0.2 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 compactação, embora eu não saiba se alguma coisa enviada é adequada para compactação.

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

sshuttle -r usuário @ proxy-servidor 192.168.1.1

Dica: sshuttle está sendo empacotado no Debian.

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

korkman
fonte
Vejo que o SSH encaminha apenas o tráfego TCP, não o tráfego UDP. IPMI (porta 623 / UDP) e Serial-over-LAN (porta 6666 / UDP) são apenas UDP e, portanto, requerem algum tipo de conversão UDP-TCP para funky usando netcat. Que frustrante.
Stefan Lasiewski
1
O primeiro comando ssh funciona (interface da web e console remoto java), exceto que a montagem virtual do CD não parece funcionar, a menos que você também encaminhe 623 ( -L127.0.0.2:623:192.168.1.1:623). Obrigado por listar as portas necessárias. Isso é muito mais fácil do que configurar uma VPN.
precisa saber é o seguinte
2

Experimente o tsocks , ele deve permitir que você execute qualquer processo através de um proxy SOCKS, configurando LD_PRELOAD, que deve funcionar em todos os subprocessos; veja isso por exemplo, uso. Obviamente, se você estiver usando o ssh para criar um proxy SOCKS, ainda terá o problema do UDP, mas isso deve contornar o problema do subprocesso.

Mike
fonte