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.
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]
Eu configuro meu sistema para usar o proxy SOCKS. Confirmo que o Java está usando as configurações de proxy do SOCKS.
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:
Clico no botão "Iniciar console", que baixa um arquivo chamado
jviewer.jnlp
. Os arquivos JNLP são abertos com o Java Web Start.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.
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?
fonte
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:
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.
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.
fonte
netcat
. Que frustrante.-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.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.
fonte