Reroute conexão mysql através de máquina externa

1

Eu quero (como um primeiro passo para um proxy mysql externo) redirecionar o tráfego da conexão local do mysql (em uma VM) para um proxy externo (no host) que, em seguida, o encaminha de volta para a VM, que então dará para o servidor mysql. Eu estou usando esta configuração como a única coisa que eu quero manipular é a configuração do mysql (a porta usada) para ser principalmente independente de webapp.

Deve ser mais ou menos assim:

MYSQLClient
  |
 :4446 incoming connection on port of guest (1)
  +--------------:3305+ rerouted to host (2)
                      |
  +:8888--------------+ which then routes it back to the guest (3)
  |
 :4444 which is then routed to the MYSQLServer port (4)
  |
 MYSQLServer               

Estou usando as diferentes etapas

(1)   nc -k -l -v 4446 | nc 192.168.72.1 3305
(2/3) nc -k -l -v 3305 | nc 192.168.72.128 8888
(4)   nc -k -l -v 8888 | nc localhost 4444

Eu configurei o mysql para escutar na porta 4444. Eu quero manter (4) mesmo que você possa configurar o mysql para escutar em conexões externas, bem como manter as alterações no arquivo de configuração no mínimo e deixar o mysql pensar que a conexão estabelecida vem do localhost.

Agora, para o problema, sou experiência:

  • Eu não posso usar uma ordem arbitrária dos comandos. Eu tenho que usar a ordem inversa como mais nenhuma conexão será estabelecida e quebra assim que eu tento enviar dados. Isso me causará uma grande dor de cabeça assim que eu tentar automatizar essa configuração, pois parece impossível sincronizar isso com a inicialização do sistema convidado.

  • não funciona com o mysql. O Telnet, entretanto, contanto que você deixe o nc para a porta do mysqlserver. Mas assim que isso for usado, também (4) irá quebrar ao tentar se conectar ao telnet. Conectar-se com o cliente mysql não terá nenhum efeito e simplesmente não funcionará - nenhuma conexão será estabelecida e após digitar a senha do mysql, nada mais acontecerá.

Estou completamente louco considerando essa configuração? Se não, como posso fazer isso (realmente) funcionar?

Uma solução que não envolva nc e resolva a questão geral como descrita no primeiro parágrafo será aceita com a mesma alegria que a correção da configuração nc. O problema descrito acima deve descrever apenas a minha abordagem atual para uma solução.

    
por Sim 02.03.2016 / 15:26

1 resposta

3
O redirecionamento é muito mais apropriado do que o nc para redirecionar portas.

Enquanto o nc é mais leve e apropriado para testes one-shot, para um uso mais sério, o redirecionamento é mais apropriado; O nc também não se presta a manipular reconexões ou erros sem o suporte de ferramentas auxiliares e configurações mais complicadas como ter xinetd .

O

redir também é uma ferramenta muito leve que lida muito bem redirecionando uma porta TCP para outra com o processamento inerente de novas tentativas / erros.

Redirecionamentos de porta TCP com redirecionamento

Suppose that the ip address of our system is 1.1.1.1 and we would like to redirect all the traffic which coming from port 80 to a remote server with ip address of 2.2.2.2 and port 8080. Simply, we want redir utility to redirect connections coming to 1.1.1.1 on port 80 to 2.2.2.2 port 8080. We have to run redir such as below to do so:

redir --laddr=1.1.1.1 --lport=80  --caddr=2.2.2.2 --cport=8080
    
por 06.03.2016 / 14:12