Eu tenho o sistema onde eu corro vários contêineres. Cada container é um sistema linux com um propósito específico e cada container possui um servidor ssh habilitado. Eu quero fazer uma entidade que gerencie novas conexões ssh para a máquina host e rotear essa conexão de forma transparente para um contêiner específico (que também tem um ssh escutando) com base em um critério. Eu sei que posso rotear conexões para um container usando o ProxyCommand, por exemplo. Meu problema é que eu quero reencaminhar a conexão para outro contêiner "on the fly" com base em outros critérios, por exemplo: Se a máquina host detectou que uma conexão com o contêiner A começa a baixar um binário reencaminhar a conexão ssh de forma transparente para o contêiner B e inicie o download lá. Eu quero fazer isso de uma forma que o usuário do sistema não perceba que ele está em um contêiner e a conexão é roteamento entre contêineres diferentes enquanto ele estiver usando o sistema.
Um exemplo completo que pode ajudar a entender é: Um cliente se conecta ao ssh. Essa conexão é feita na máquina host que possui os contêineres A e B em execução. A máquina host possui um processo que redireciona essa conexão ssh de entrada para o contêiner A por padrão (ou com base em alguma condição). A máquina host continua analisando o que o cliente está fazendo no contêiner A, farejando os pacotes e verificando os comandos passados pelo cliente. Se a máquina host detectar algum comando específico, como "wget", a máquina host redirecionará a conexão ssh do contêiner A para o contêiner B de forma transparente, de modo que o cliente não perceba que o contêiner foi alterado e o download será iniciado no contêiner B.
EstouusandooDockereoscontêineresquetrocarãoaconexãosempreterãoomesmoambiente(mesmosistemaoperacionaleversão).
Editar:
Euqueroumamaneiradefazerissocomalgumtipodereencaminhamentodaconexãoparaaplicaressametodologiaemoutroscasoscomoesteexemplo:EutenhoohostXquetemorecipienteA.QuandooclienteseconectaaohostX,aconexãosshéreencaminhadoparaohostYqueestánamesmaredecomumsshdeescuta.Comoantes,combaseemumacondição,ohostXredirecionaosshdohostYparaocontainerAdeformatransparenteparaousuário.
Comopossofazerissocomroteamento,iptablesouqualqueroutrométodoqueredirecioneaconexão?
Editar2:
Basicamenteeuprecisodeumamaneiraderedirecionarosshdeumamáquinaparaoutrasemumareconexãonotável.Ocasomaissimpleséumamáquina(A)quemanipulaaconexãodocliente.UmclientedaInternetseconectaaessamáquina(A)queredirecionaaconexãoparaamáquina(B)comoProxyCommand.Sóparasimplificarvamosimaginarquetemosumtimerquedepoisde5minutosexecutaumscriptnamáquina(A)quefazamágica.Oqueeuqueroéumamaneiraqueeupossarotearestaconexãosshdamáquina(B)paraamáquina(C).ApartecomplicadaéqueeuqueroqueessamudançadeBparaCnãosejapercebidapelousuário(cliente).Euqueroqueoclientenãopercebaqueaconexãofoiroteadaeamáquinaqueeleestavainicialmenteconectadomudouenquantoeleestavausando.Então,paraessa"ilusão" eu imagino se existe uma maneira de manter a conexão original viva para o cliente mas direcionar a conexão na máquina (A), de B para C e quando o cliente executar o próximo comando ao invés da máquina (B) máquina (C) executará esse comando.