Conectando-se à instância do servidor SQL na VM via rede somente host

3

Eu configurei uma máquina de desenvolvimento virtual com o Windows Web Server 2008 R2 e instalei o SQL Server 2008 R2 Express nele também. Eu não instalei nenhuma ferramenta SQL nela, porque eu as tenho na máquina host.

A máquina virtual está sendo executada no VMWare Workstation 8.

VM tem 2 NICs

  • Colocado em ponte para que outras pessoas (testadores) possam acessar o aplicativo da web no desenvolvimento
  • Somente host para que eu possa ter uma comunicação mais rápida com esta máquina no meu host

Eu não estou executando o SQL Browser e estou conectando-o diretamente usando o nome machine \ instance, port . Dessa forma, posso conectar-me a ele mesmo que o SQL não seja detectável.

Eu abri a porta de rede do SQL Engine no firewall.

Fatos

Eu posso acessar meu SQL usando o endereço IP em ponte, mas não o endereço IP somente para host. Eu verifiquei Protocolos para SQL Express e habilitei o TCP / IP e verifiquei a guia Endereços IP que mostra 5 IPs:

  • 2 para rede em ponte (v6 e v4)
  • 2 para localhost (v6 e v4)
  • um endereço IP v6 (fe80 :: 100: 7f: fffe% 12) que não está relacionado a nenhuma rede em ponte ou somente host.

Isso de alguma forma explica por que não consigo acessar meu SQL usando uma rede somente de host. Mesmo se eu alterar essas configurações e alterar o IP em ponte para somente um, ainda não consigo acessar meu SQL.

parece que a rede somente de host não é visível para o SQL. Embora esteja funcionando.

Outro fato é que, se eu fizer ping na VM do meu host, obtenho uma resposta na rede em ponte, mas não na rede do host.

Pergunta

Eu suspeito que isso deve estar de alguma forma relacionado às configurações de rede somente de host da VM. Ou talvez não. Daí esta questão. A questão é claro Como posso configurar o servidor SQL na minha VM para que eu possa acessá-lo através da minha máquina host e do host local (porque o aplicativo da web está sendo executado na mesma máquina)? Não quero que o servidor SQL seja acessível por meio de uma rede com ponte, para que ninguém mais possa acessá-lo.

    
por Robert Koritnik 13.02.2012 / 08:33

1 resposta

3

Resolução

Ok, consegui resolver esse problema configurando a rede virtual e configurando o SQL Server.

Configuração de rede virtual

Minha configuração somente de host foi definida como automática, mas usando VMWare esta rede não tem nenhum gateway aplicado a ela, então eu adicionei um gateway padrão para ser o mesmo que o DNS (no meu caso, isso foi 192.168.100.254).

Isso possibilitou que a rede do Windows reconhecesse a rede como não pública, mas sim como privada. Isso significa que certos níveis de segurança são aplicados de maneira diferente.

Agora posso fazer o ping da máquina de um modo ou de outro (do host para o guest da VM e vice-versa). Ambos os pings têm uma resposta que eles não tinham anteriormente, já que a rede era rotulada como pública.

Configuração do SQL Server

Configurar protocolos para a instância do SQL Express foi e configurou as configurações de TCP / IP e na primeira guia (Protocolo) definiu Listen All para Não , o que significa que eu tenho que configurar IPs individuais no segundo tba (endereços IP) em que eu ativou os IPs do host local (v4 e v6) e também alterei o endereço IP v4 para refletir o endereço IP da rede virtual somente host:

  • definir endereço IP como endereço de rede somente host
  • definir Ativado como Sim

Em seguida, limpe todos esses três endereços IP TCP Portas dinâmicas e defina uma porta TCP estática para 1433 que desejo usar.

Voila, funciona

Agora, voltei ao host e tentei conectar o SSMS à minha VM usando o endereço IP em ponte primeiro. Falha. Em seguida, como segunda tentativa, usei o endereço IP somente para host, e consegui me conectar à minha instância do SQL Server. Sucesso .

Isso bloqueou completamente minha instância do SQL Server para a máquina local e meu host de desenvolvimento.

    
por 13.02.2012 / 09:56