A conexão de banco de dados de spoofs é local em vez de remota

1

Estou tentando conectar um de nossos clientes "como está" a programas a um banco de dados remoto em vez de local, eles acham que o codificaram para funcionar dessa maneira, mas por algum motivo o programa trava ao tentar se conectar para um banco de dados remoto. Eu não tenho o código-fonte, então não posso cavar muito mais do que isso e a empresa não fornece atualizações ou modificações personalizadas. Eu posso conectar com sucesso ao banco de dados através de SqlDbx e HeidiSQL, então eu sei que o servidor está configurado corretamente.

É por isso que preciso encontrar uma maneira de falsificar uma conexão remota na porta 1433 para aparecer como uma conexão de banco de dados local com o programa. Pensei em editar o arquivo hosts, mas ele provavelmente irá travar outros programas se eu ligar o host local a outro IP que não o 127.0.0.1.

Alguma idéia?

ATUALIZAÇÃO:

Eu tentei resolvê-lo de outras maneiras, como sugerido, mas tentei tudo o que posso imaginar.

  • São as mesmas versões de todos os programas
  • O TCP / IP funciona em vez de pipes nomeados no localhost e com trabalhos com sqlviewers como sqldbx e heidisql
  • Autenticação funciona com sqlviewers
  • A confirmação é apenas os campos necessários para a cadeia de conexão do banco de dados

A única coisa que consigo ver é que há algo que a restringe de dentro do código sobre o qual não tenho controle.

    
por spydon 11.11.2013 / 05:30

2 respostas

3

Essencialmente, você está tentando contornar o que parece ser uma implementação ruim de outra pessoa. Isso parece razoável para mim e, às vezes, isso é uma necessidade. Se este programa está realmente "travando" ao tentar se conectar a um banco de dados, mas não a outro, ao contrário de, oh, você sabe, exibir uma mensagem de erro, isso é muito fraco.

Eu tenho uma solução de espera para isso no Linux ("redir") ... mas não no Windows; no entanto, encontrei isso na máquina do Google:

link

Eu testei agora com a versão "Cygwin" - não é necessário instalar, tem um exe e uma DLL e "funcionou" no meu laptop com Windows 7. Um pequeno bônus, ele tem uma opção --log-to-stdout que, combinada com > em um arquivo, registra os bytes cheirados do fluxo (pode ser uma leitura interessante). Eu não tenho um SQL Server à mão, mas eu testei com alguns outros serviços TCP e parece funcionar como pretendido - ele escuta em um soquete local, e quando as conexões entram, ele faz uma conexão com um soquete designado uma máquina remota e liga as extremidades dos tubos. Ouvindo em 1433, "deveria" fazer o truque.

Vai no meu kit de ferramentas, de qualquer forma.

    
por 12.11.2013 / 03:14
2

Embora você possa usar técnicas como o encaminhamento de porta SSH para fazer uma soquete TCP de escuta remota aparece como um local, provavelmente não seria de qualquer ajuda.

Se o seu cliente estiver "travando" na conexão, é muito provável que ele não pare de fazer isso apenas porque você está usando um endereço IP de destino diferente.

Pode haver várias razões pelas quais o software está funcionando bem ao se conectar a um banco de dados local, mas se torna problemático com um banco de dados remoto, incluindo, entre outros,

  • problemas de versão
  • uso de diferentes protocolos (pipes nomeados vs. TCP / IP)
  • problemas de autenticação (a autenticação integrada pode funcionar localmente, mas interromper para sistemas remotos)
  • problemas de configuração

Você deve direcionar seus esforços para o diagnóstico do problema, em vez de tentativas duvidosas de solução alternativa.

    
por 11.11.2013 / 22:21