Compartilhar via


Como forçar o Kerberos a usar o TCP em vez do UDP no Windows

Este artigo descreve como forçar o Kerberos a usar TCP em vez de UDP.

Número original do KB: 244474

Resumo

O pacote de autenticação Kerberos do Windows é o pacote de autenticação padrão no Windows Server 2003, no Windows Server 2008 e no Windows Vista. Ele coexiste com o protocolo de desafio/resposta NTLM e é usado em instâncias em que um cliente e um servidor podem negociar o Kerberos. A RFC (Solicitação de Comentários) 1510 afirma que o cliente deve enviar um datagrama UDP (User Datagram Protocol) para a porta 88 no endereço IP do KDC (Centro de Distribuição de Chaves) quando um cliente entrar em contato com o KDC. O KDC deve responder com um datagrama de resposta à porta de envio no endereço IP do remetente. O RFC também afirma que o UDP deve ser o primeiro protocolo tentado.

Observação

O RFC 4120 agora torna o RFC 1510 obsoleto. O RFC 4120 especifica que um KDC deve aceitar solicitações TCP e deve escutar essas solicitações na porta 88 (decimal). Por padrão, o Windows Server 2008 e o Windows Vista tentarão o TCP primeiro para Kerberos porque o padrão MaxPacketSize agora é 0. Você ainda pode usar o valor do Registro MaxPacketSize para substituir esse comportamento.

Uma limitação no tamanho do pacote UDP pode causar a seguinte mensagem de erro no logon do domínio:

Erro de log de eventos 5719
Fonte: NETLOGON

Nenhum controlador de domínio do Windows NT ou Windows 2000 está disponível para o domínio de domínio. Ocorreu o seguinte erro:

No momento, não há servidores de logon disponíveis para atender à solicitação de logon.

Além disso, a ferramenta Netdiag pode exibir as seguintes mensagens de erro:

  • Mensagem de erro 1

    Teste de lista DC. . . . . . . . . . . : Falha [AVISO] Não é possível chamar DsBind para COMPUTERNAMEDC.domain.com (159.140.176.32). [ERRO_CONTROLADOR_DE_DOMÍNIO_NÃO_ENCONTRADO]

  • Mensagem de erro 2

    Teste de Kerberos. . . . . . . . . . . : Falha [FATAL] Kerberos não tem um tíquete para MEMBERSERVER$.] Os logs de eventos do Windows XP que são sintomas desse problema são SPNegotiate 40960 e Kerberos 10.

Mais informações

Importante

Esta seção, método ou tarefa contém etapas que descrevem como modificar o Registro. Entretanto, sérios problemas poderão ocorrer caso você modifique o Registro incorretamente. Portanto, certifique-se de seguir essas etapas com atenção. Para proteção acrescida, faça backup do Registro antes de modificá-lo. Em, é possível restaurar o Registro caso ocorra um problema. Para obter mais informações sobre como fazer backup e restaurar o Registro, consulte Como fazer backup e restaurar o Registro no Windows.

Se você usar UDP para Kerberos, seu computador cliente poderá parar de responder (travar) quando você receber a seguinte mensagem: Carregando suas configurações pessoais.

Por padrão, o tamanho máximo dos pacotes de datagrama para os quais o Windows Server 2003 usa UDP é de 1.465 bytes. Para Windows XP e Windows 2000, esse máximo é de 2.000 bytes. O TCP (Transmission Control Protocol) é usado para qualquer pacote de datagrama maior que esse máximo. O tamanho máximo dos pacotes de datagrama para os quais o UDP é usado pode ser alterado modificando uma chave e um valor do Registro.

Por padrão, o Kerberos usa pacotes de datagrama UDP sem conexão. Dependendo de vários fatores, incluindo histórico de SID (identificador de segurança) e associação ao grupo, algumas contas terão tamanhos de pacote de autenticação Kerberos maiores. Dependendo da configuração de hardware da rede privada virtual (VPN), esses pacotes maiores precisam ser fragmentados ao passar por uma VPN. O problema é causado pela fragmentação desses grandes pacotes UDP Kerberos. Como o UDP é um protocolo sem conexão, os pacotes UDP fragmentados serão descartados se chegarem ao destino fora de ordem.

Se você alterar MaxPacketSize para um valor de 1, forçará o cliente a usar TCP para enviar tráfego Kerberos pelo túnel VPN. Como o TCP é orientado à conexão, é um meio de transporte mais confiável através do túnel VPN. Mesmo que os pacotes sejam descartados, o servidor solicitará novamente o pacote de dados ausente.

Você pode alterar MaxPacketSize para 1 para forçar os clientes a usar o tráfego Kerberos sobre TCP. Para fazer isso, siga estas etapas:

  1. Abra o Editor do Registro.

  2. Localize e clique na subchave do Registro: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters.

    Observação

    Se a chave Parâmetros não existir, crie-a agora.

  3. No menu Editar, aponte para Novo e clique em Valor DWORD.

  4. Digite MaxPacketSize e pressione ENTER.

  5. Clique duas vezes em MaxPacketSize, digite 1 na caixa Dados do valor, clique para selecionar a opção Decimal e clique em OK.

  6. Feche o Editor do Registro.

  7. Reinicie seu computador.

Essa é a abordagem de solução para Windows 2000, XP e Server 2003. Windows Vista e mais recentes usam um padrão de "0" para MaxPacketSize, que também desativa o uso de UDP para o cliente Kerberos.

O modelo a seguir é um modelo administrativo que pode ser importado para a Diretiva de Grupo para permitir que o valor MaxPacketSize seja definido para todos os computadores corporativos que executam o Windows Server 2003, Windows XP ou Windows 2000. Para exibir as configurações de MaxPacketSize no Editor de Objeto de Diretiva de Grupo, clique em Mostrar Somente Diretivas no menu Exibir para que Mostrar Somente Diretivas não esteja selecionado. Este modelo modifica as chaves do Registro fora da seção Políticas. Por padrão, o Editor de Objeto de Diretiva de Grupo não exibe essas configurações do Registro.