ID do artigo: 287932 - Última revisão: sábado, 14 de maio de 2011 - Revisão: 7.0

INFORMAÇÕES: Portas TCP necessárias para comunicação com SQL Server por meio de um firewall

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Expandir tudo | Recolher tudo

Sumário

Este artigo documenta as portas TCP/IP mínimas necessárias para se comunicar com um SQL Server por meio de um firewall.

Mais Informações

O SQL Server é um aplicativo Winsock que se comunica através de TCP/IP usando os soquetes da biblioteca de rede. O SQL Server monitora as conexões que entram por uma porta em particular. A porta padrão para o SQL Server é a 1433. Ela não precisa ser a 1433, mas é o número oficial de soquete Internet Assigned Number Authority (IANA) do SQL Server.

Um aplicativo cliente se comunica com o SQL Server usando a biblioteca de rede Dbmssocn.dll do lado do cliente (ou Dbnetlib.dll para o SQL Server 2000) e qualquer cliente usando Microsoft Data Access Components (MDAC) 2.6.

Quando o cliente estabelece uma conexão TCP/IP, é feito um handshake de três vias. O cliente abre uma porta de origem e envia o tráfego para a porta de destino, que por padrão é a 1433. A porta de origem em uso é randômica, mas sempre maior que 1024. Por padrão, quando um aplicativo solicita um soquete de um sistema para uma chamada de saída, é fornecida uma porta entre os valores 1024 e 5000. Para obter informações adicionais, consulte "Detalhes de implementação de TCP/IP em Windows 2000" no seguinte site do Microsoft Developer Network (MSDN) (em inglês):
http://www.microsoft.com/technet/itsolutions/network/deploy/depovg/tcpip2k.mspx (http://www.microsoft.com/technet/itsolutions/network/deploy/depovg/tcpip2k.mspx)
O servidor (neste caso, o SQL Server) se comunica com o cliente através do envio de tráfego a partir da 1433 de volta à porta estabelecida pelo cliente.

O melhor modo de observar este comportamento é traçar uma comunicação cliente-servidor usando o Microsoft Network Monitor ou uma ferramenta sniffer de rede. Para configurar o firewall, você deve permitir o tráfego a partir de *QUALQUER PORTA* para 1433 e a partir da 1433 para *QUALQUER PORTA*, onde *QUALQUER PORTA* é uma porta maior do que 1024.
*QUALQUER PORTA* -> 1433
1433 -> *QUALQUER PORTA*
Além de usar o Monitor de rede Microsoft, você também pode usar o utilitário TCP/IP Netstat para ilustrar isto. Acionar o netstat -an a partir de uma janela de comando do MS-DOS traz os seguintes resultados, mostrando três conexões estabelecidas com o SQL Server. Este exemplo usa 157.54.178.42 como endereço IP do SQL Server e 157.54.178.31 como endereço IP do cliente. As portas abertas pelo cliente são 1746, 1748 e 1750 respectivamente.
Protocolo  Endereço local          Endereço externo        Estado
 TCP    157.54.178.42:1433     0.0.0.0:0              LISTENING
 TCP    157.54.178.42:1433     157.54.178.31:1746     ESTABLISHED
 TCP    157.54.178.42:1433     157.54.178.31:1748     ESTABLISHED
 TCP    157.54.178.42:1433     157.54.178.31:1750     ESTABLISHED
					
O software de firewall deve permitir que esta alocação dinâmica ocorra através do uso de regras. Se ocorrer, você pode configurar 1433 -> *QUALQUER PORTA* estabelecida. Isto abrirá dinâmicamente a porta de resposta depois de um syn seguido de um syn/ack através de uma inspeção de pacote com monitoração de estado.

Não há como limitar o número de portas TCP de origem para a conexão de um cliente SQL Server. Isso vai totalmente contra o propósito de ter o cliente alocado em uma porta dinâmica nova, não utilizada ainda. Este é um padrão TCP/IP definido pelos aplicativos Winsock. Isto não é uma limitação da comunicação do cliente SQL Server.

Além disso, uma instância nomeada do SQL Server 2000 usará uma porta de destino dinâmica, por padrão. Esta porta deverá ser alterada para uma porta fixa antes de configurar o firewall. O SQL Server Network Utility deve ser utilizado para configurar a porta de destino. Consulte o Server Books Online para obter informações sobre como usar o SQL Server Network Utility.

Caso contrário, o computador cliente precisaria abrir uma porta UDP aleatória e a porta 1434 do servidor UDP seria utilizada para enviar um nome da instância e, se a instância estiver agrupada, a versão da instância SQL, o número da porta TCP detectada pela instância e o pipe nomeado usado pela instância. Contudo, se o objetivo é minimizar o número de portas abertas no firewall, um número de porta estática deve ser escolhido para a instância padrão e qualquer instância nomeada. Os computadores cliente precisariam ser configurados para conectar em um ServerName ou instância ServerName e um número de porta específica.

Para obter informações adicionais, clique nos seguintes números para consultar os artigos na Base de Dados de Conhecimento da Microsoft:
216415  (http://support.microsoft.com/kb/216415/PT-BR/ ) COMO: Configurar um SQL Server com um servidor Proxy
148942  (http://support.microsoft.com/kb/148942/PT-BR/ ) Como capturar o tráfego de rede com o monitor de rede
169292  (http://support.microsoft.com/kb/169292/PT-BR/ ) Noções básicas sobre a leitura de rastreamento TCP/IP
269882  (http://support.microsoft.com/kb/269882/PT-BR/ ) COMO: Usar ADO para conectar a um SQL Server atrás de um firewall

A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 6.5 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
Palavras-chave: 
kbsqlmanagementtools kbinfo KB287932