PIX/ASA 7.x e IOS: Fragmentação de VPN Índice Introdução Pré-requisitos Requisitos Componentes Utilizados Diagrama de Rede Produtos Relacionados Convenções Informações de Apoio Problemas de Fragmentação Tarefa Principal Descoberta da Fragmentação Soluções para Problemas de Fragmentação Verificação Troubleshooting Erro de Criptografia de VPN Problemas de RDP e Citrix Introdução Este documento orienta você pelos passos necessários para resolver os problemas que podem ocorrer com a fragmentação de um pacote. Um exemplo de problema de fragmentação é a capacidade de enviar pings para um recurso de rede quando não é possível conectar ao mesmo recurso via um aplicativo específico, como e-mail ou bancos de dados. Pré-requisitos Requisitos Certifique-se de atender a estes requisitos antes de tentar esta configuração: Conectividade entre peers VPN Componentes Utilizados Este documento não se restringe a versões de software e hardware específicas. Diagrama de Rede Este documento utiliza a seguinte configuração de rede:
Produtos Relacionados Esta configuração também pode ser utilizada com estas versões de hardware e software: Roteadores IOS Dispositivos de segurança PIX/ASA Convenções Consulte Convenções de Dicas Técnicas da Cisco para obter mais informações sobre as convenções de documentos. Informações de Apoio O protocolo IP oferece suporte ao tamanho máximo de 65.536 bytes por pacote, mas a maioria dos protocolos da camada de enlace é capaz de trabalhar com um tamanho muito menor chamado de unidade de transmissão máxima (MTU). Com base na MTU aceita, talvez seja necessário dividir (fragmentar) um pacote IP para transmiti-lo através de um tipo específico de mídia de enlace. Nesse caso, o destino deverá remontar os fragmentos para reconstituir o pacote IP original completo. Quando uma VPN é usada para proteger os dados entre dois peers VPN, informações adicionais são incluídas nos dados originais, o que pode exigir a fragmentação. Esta tabela lista os campos que potencialmente devem ser adicionados aos dados protegidos para que seja possível implementar uma conexão VPN. Observe que vários protocolos podem ser necessários, o que pode aumentar o tamanho do pacote original. Por exemplo, se você usa uma conexão IPSEC L2L DMVPN entre dois roteadores Cisco em que um túnel GRE foi implementado, as seguintes informações adicionais são necessárias: ESP, GRE e o cabeçalho IP externo. Se você possui uma conexão de cliente de software IPSec para um gateway de VPN quando o tráfego passa por um dispositivo de endereço, estas informações adicionais são necessárias para o Network Address Translation-Traversal (NAT-T), bem como o cabeçalho IP externo da conexão de modo de túnel. Problemas de Fragmentação Quando a origem envia um pacote para um destino, ela adiciona um valor no campo de sinalizadores de controle dos cabeçalhos IP que afeta a fragmentação do pacote por dispositivos intermediários. O sinalizador de controle possui três bits, mas somente os dois primeiros são usados para a fragmentação. Se o segundo bit for definido como 0, o pacote poderá ser fragmentado. Se ele for definido como 1, o pacote não poderá ser
fragmentado. O segundo bit é normalmente chamado de bit Don't Fragment (DF). O terceiro bit especifica quando a fragmentação ocorre, se este pacote fragmentado é ou não o último fragmento (definido como 0) ou se há mais fragmentos (definido como 1) que compõem o pacote. Há quatro áreas que podem criar problemas quando a fragmentação é necessária: Sobrecarga nos ciclos da CPU e memória adicionais são necessárias pelos dois dispositivos que executam a fragmentação e a remontagem. Se um fragmento for perdido a caminho do destino, o pacote não poderá ser remontado e o pacote inteiro deverá ser fragmentado e enviado outra vez. Isso cria problemas adicionais de vazão, especialmente em situações em que o tráfego em questão possui limitação de velocidade e a origem envia o tráfego acima do limite permitido. A filtragem de pacotes e os firewall stateful podem enfrentar dificuldades para processar os fragmentos. Quando a fragmentação ocorre, o primeiro fragmento contém um cabeçalho IP externo, o cabeçalho interno, como TCP, UDP, ESP e outros, e parte do payload. Os fragmentos subseqüentes do pacote original contratam um cabeçalho IP externo e a continuação do payload. O problema com este processo é que alguns firewalls precisam ver as informações do cabeçalho interno em cada um dos pacotes para tomar decisões inteligentes de filtragem. Se essas informações não estiverem presentes, eles poderão inadvertidamente descartar todos os pacotes, com exceção do primeiro. A origem no cabeçalho IP do pacote pode definir o terceiro bit de controle como Don't Fragment, o que significa que, se um dispositivo intermediário receber um pacote e precisar fragmentá-lo, ele não poderá fazê-lo. Em vez disso, o dispositivo intermediário descartará o pacote. Tarefa Principal Descoberta da Fragmentação A maioria das redes é do tipo Ethernet com um valor padrão de MTU de 500 bytes normalmente usado para pacotes IP. Para descobrir se há fragmentação ou se ela é necessária mas não pode ser feita (bit DF ativado), ative sua sessão de VPN. Em seguida, você poderá usar qualquer um dos quatro procedimentos a seguir para descobrir a fragmentação. Envie um ping para um dispositivo localizado na outra extremidade. Pressupõe-se que o uso de pings é permitido no túnel. Se houver êxito, tente acessar um aplicativo por meio do mesmo dispositivo. Por exemplo, se um servidor de Microsoft E-mail ou de Área de Trabalho Remota estiver do outro lado do túnel, abra o Outlook e tente baixar seus e-mails ou conectar remotamente ao servidor. Se isso não funcionar e a resolução de nomes estiver correta, haverá uma boa chance do problema ser a fragmentação. Em um dispositivo Windows, execute C:\>ping -f -l packet_size_in_bytes destination_ip_address. 3. 4. A opção -f é usada para especificar que o pacote não pode ser fragmentado. A opção -l é usada para especificar o tamanho do pacote. Experimente primeiro com um tamanho de pacote de 500. Por exemplo, ping -f -l 1500 19168.100. Se a fragmentação for necessária mas não puder ser executada, você receberá uma mensagem semelhante a: Packets need to be fragmented but DF set. Nos roteadores Cisco, execute o comando debug ip icmp e use o comando extended ping. Se a mensagem ICMP:dst (x.x.x.x) fragmentation needed and DF set, unreachable sent to y.y.y.y, onde x.x.x.x é um dispositivo de destino e y.y.y.y é o seu roteador, for exibida, um dispositivo intermediário está informando que a fragmentação é necessária, mas como você ativou o bit DF na solicitação de echo, ele não pode executar a fragmentação para encaminhar o pacote para o próximo salto. Nesse caso, diminua gradualmente o tamanho da MTU dos pings até identificar um que funcione. Nos Cisco Security Appliances, use um filtro de captura. ciscoasa(config)#access-list outside_test permit tcp any host 1721 eq 80 Nota: Quando a origem é definida como any, o administrador pode monitorar qualquer Network Address Translation (NAT). ciscoasa(config)#access-list outside_test permit tcp host 1721 eq 80 any Nota: Quando as informações de origem e destino são invertidas, o tráfego de retorno pode ser capturado. ciscoasa(config)# capture outside_interface access-list outside_test interface outside O usuário precisa iniciar uma nova sessão com o aplicativo X. Após a nova sessão do aplicativo X ter sido iniciada, o administrador do ASA deve executar o comando show capture outside_interface. Soluções para Problemas de Fragmentação Há diferentes modos de resolver problemas de fragmentação. Eles são discutidos nesta seção. Método 1: Definição de MTU Estática A definição de uma MTU estática pode resolver problemas de fragmentação. Alteração da MTU no roteador: Observe que, ao definir manualmente a MTU no dispositivo, você informa ao dispositivo, o qual atua como um gateway VPN, para fragmentar os pacotes recebidos antes de protegê-los e enviá-los pelo túnel. Isso é preferível a deixar que o roteador proteja o tráfego e o fragmente em seguida, mas o dispositivo o fragmenta.
Aviso: Se você alterar o tamanho da MTU em qualquer interface de dispositivo, os túneis terminados nessa interface serão interrompidos e recriados. Nos roteadores Cisco, use o comando ip mtu para ajustar o tamanho da MTU na interface em que uma VPN é terminada. router (config)# interface type [slot_#/] port_# router (config-if)# ip mtu MTU_size_in_bytes Alteração da MTU no ASA/PIX: Em dispositivos ASA/PIX, use o comando mtu para ajustar o tamanho da MTU no modo de configuração global. Por padrão, a MTU é definida como 1500. Por exemplo, se houver uma interface em seu security appliance chamada Outside (onde a VPN é terminada) e você determinou (por meio das medidas relacionadas na seção Descoberta da Fragmentação) que deseja usar 1380 como o tamanho do fragmento, use este comando: security appliance (config)# mtu Outside 1380 Método 2: Tamanho Máximo do Segmento TCP O tamanho máximo do segmento TCP pode resolver problemas de fragmentação. Nota: Este recurso funciona somente com o TCP. Os demais protocolos IP devem usar outra solução para os problemas de fragmentação. Mesmo que você defina a MTU de IP no roteador, isso não afetará a negociação entre os dois hosts de extremidade no handshake tridirecional de TCP com o MSS TCP. Alteração do MSS no roteador: A fragmentação ocorre com o tráfego TCP porque esse tipo de tráfego é normalmente usado para transportar grandes quantidades de dados. O TCP oferece suporte a um recurso chamado tamanho máximo de segmento (MSS) TCP que permite que dois dispositivos negociem um tamanho adequado para o tráfego TCP. O valor do MSS é configurado estaticamente em cada dispositivo e representa o tamanho do buffer usado para acomodar pacotes inesperados. Quando dois dispositivos estabelecem conexões TCP, eles comparam o valor do MSS local ao valor da MTU no handshake tridirecional: o valor menor é enviado para o peer remoto. Os dois peers usam então o menor dos dois valores trocados. Para configurar esse recurso, faça o seguinte: Nos roteadores Cisco, use o comando tcp adjust-mss na interface em que a VPN é terminada. router (config)# interface type [slot_#/] port_# router (config-if)# ip tcp adjust-mss MSS_Size_in_bytes Alteração do MSS no ASA/PIX: Para garantir que o tamanho máximo do segmento TCP não exceda o valor definido e que o máximo não seja inferior a um tamanho especificado, use o comando sysopt connection no modo de configuração global. Para restaurar a configuração padrão, use a forma no deste comando. O valor máximo padrão é 1380 bytes. O recurso mínimo é desativado por padrão (definido como 0). Para alterar o limite máximo padrão do MSS, faça o seguinte: security appliance (config)# sysopt connection tcp-mss MSS_size_in_bytes Nota: Se você definir um tamanho máximo superior a 1380, os pacotes poderão ser fragmentados em função do tamanho da MTU (1500 por padrão). Números elevados de fragmentos podem prejudicar o desempenho do security appliance quando ele usa o recurso de Frag Guard. Se você definir o tamanho mínimo, o servidor TCP será impedido de enviar pacotes de dados TCP pequenos para o cliente, afetando assim o desempenho do servidor e da rede. Para alterar o limite mínimo do MSS, faça o seguinte: security appliance (config)# sysopt connection tcp-mss minimum MSS_size_in_bytes security appliance (config)# sysopt connection tcp-mss minimum MSS_size_in_bytes Nota: Consulte a seção Configuração do MPF para Permitir Pacotes que Excedem o MSS do documento Problema do PIX/ASA 7.X: MSS Excedido - Os Clientes HTTP Não Conseguem Navegar para Alguns Sites para obter mais informações sobre como permitir pacotes que excederam o MSS.
Método 3: Descoberta da MTU do Caminho (PMTUD) A PMTUD pode resolver problemas de fragmentação. O principal problema com o MSS TCP é que o administrador precisa saber qual valor configurar em seu roteador para impedir o surgimento da fragmentação. Isso poderá ser um problema se houver mais de um caminho entre você e o local de VPN remoto, ou, ao fazer uma consulta inicial, você descobrir que a segunda ou terceira menor MTU, em vez da menor, é baseada na decisão de roteamento usada em sua consulta inicial. Com a PMTUD, você pode determinar um valor de MTU para os pacotes IP que evita a fragmentação. Se as mensagens de ICMP forem bloqueadas por um roteador, a MTU do caminho será interrompida e os pacotes com o bit DF ativado serão descartados. Use o comando set ip df para limpar o bit DF e permitir que o pacote seja fragmentado e enviado. A fragmentação pode diminuir a velocidade do encaminhamento de pacotes na rede, mas é possível usar listas de acesso para limitar o número de pacotes nos quais o bit DF é limpo. Três problemas podem fazer com que a PMTUD não funcione: Um roteador intermediário pode descartar o pacote e não responder com uma mensagem de ICMP. Isso não é muito comum na Internet, mas pode ser em uma rede em que os roteadores estão configurados para não responder com mensagens de ICMP de inacessibilidade. Um roteador intermediário pode responder com uma mensagem de ICMP de inacessibilidade mas, no fluxo de retorno, um firewall bloqueia a mensagem. Essa é uma ocorrência mais comum. A mensagem de inacessibilidade de ICMP encontra seu caminho de volta a origem, mas a origem ignora a mensagem de fragmentação. Esse é o menos comum dos três problemas. Se o primeiro problema ocorrer, você poderá limpar o bit DF no cabeçalho IP colocado pela origem ou ajustar manualmente o tamanho do MSS TCP. Para limpar o bit DF, um roteador intermediário deve alterar o valor de 1 para 0. Normalmente, isso é feito por um roteador em sua rede antes do pacote sair da rede. Esta é uma simples configuração de código que faz isso em um roteador IOS: Router (config) # access-list ACL_# permit tcp any any Router (config) # route-map route_map_name permit seq# Router (config-route-map) # match ip address ACL_# Router (config-route-map) # set ip df 0 Router (config-route-map) # exit Router (config) # interface type [slot#/]port # Router (config-if) # ip policy router-map route_map_name Túneis PMTUD e GRE Por padrão, um roteador não faz PMTUD nos pacotes de túnel GRE que ele gera. Para permitir a PMTUD em interfaces de túneis GRE e fazer com que o roteador participe do processo de ajuste da MTU de dispositivos de origem/destino para o tráfego que cruza o túnel, use esta configuração: Router (config) # interface tunneltunnel_# Router (config-if) # tunnel path-mtu-discovery 3. O comando tunnel path-mtu-discovery habilita a PMTUD para a interface do túnel GRE de um roteador. O parâmetro de temporizador de duração opcional especifica o número de minutos após o qual a interface do túnel redefine o tamanho máximo descoberto da MTU, menos 24 bytes para o cabeçalho da GRE. Se você especificar infinite para o temporizador, ele não será usado. O parâmetro min-mtu especifica o número mínimo de bytes que forma o valor da MTU. PIX/ASA 7.x - Limpeza do Bit Don't Fragment (DF) ou manuseio de arquivos grandes ou pacotes. Você ainda não é capaz de acessar adequadamente a Internet, arquivos grandes ou aplicativos por meio do túnel devido à seguinte mensagem de erro de tamanho de MTU: PMTU-D packet 1440 bytes greater than effective mtu 1434, dest_addr=10.70.25.1, src_addr=10.10.97.55, prot=tcp Para resolver esse problema, certifique-se de limpar o bit DF da interface externa do dispositivo. Configure a política de bit DF para pacotes IPSec com o comando crypto ipsec df-bit no modo de configuração global. pix(config)# crypto ipsec df-bit clear-df outside O bit DF com recurso de túneis de IPSec permite especificar se o security appliance pode limpar, definir ou copiar o bit Don't Fragment (DF) do cabeçalho encapsulado. O bit DF no cabeçalho IP determina se um dispositivo tem permissão para fragmentar um pacote.
Use o comando crypto ipsec df-bit no modo de configuração global para configurar o security appliance para especificar o bit DF em um cabeçalho encapsulado. Ao encapsular o tráfego IPSec no modo de túnel, use a configuração clear-df para o bit DF. Esta configuração permite que o dispositivo envie pacotes maiores que o tamanho da MTU disponível. Esta configuração também é apropriada se você não conhece o tamanho da MTU disponível. Nota: Se problemas de fragmentação e perda de pacotes ainda forem observados, uma outra opção é ajustar manualmente o tamanho da MTU com o comando ip mtu tunnel interface. Neste caso, o roteador fragmenta o pacote antes de protegê-lo. Este comando pode ser usado em conjunto com a PMTUD e/ou o MSS TCP. Verificação No momento, não há procedimento de verificação disponível para esta configuração. A Output Interpreter Tool (somente clientes registrados) (OIT) oferece suporte a determinados comandos show. Use a OIT para exibir uma análise da saída do comando show. Troubleshooting Erro de criptografia de VPN Suponha que o túnel IPSec tenha sido estabelecido entre o roteador e o PIX. Se houver mensagens de erro de criptografia informando que pacotes foram perdidos, siga estes passos para resolver o problema: Execute um rastreamento de varredura do cliente para o servidor para descobrir qual é a melhor MTU a ser usada. Você também pode usar o teste de ping: ping -l 1400 19168.1 -f 19168.1 é um endereço IP do computador remoto. Continue a reduzir o valor de 1400 de 20 em 20 até receber uma resposta. Nota: O valor mágico que funciona na maioria dos casos é 1300. 3. Após o tamanho máximo apropriado do segmento ser atingido, ajuste-o adequadamente para os dispositivos em uso: On the PIX Firewall: sysopt connection tcpmss 1300 No roteador: ip tcp adjust-mss 1300 Problemas de RDP e Citrix Problema: É possível enviar pings entre as redes VPN, mas o Remote Desktop Protocol (RDP) e as conexões Citrix não podem ser estabelecidas pelo túnel. Solução: O problema pode ser o tamanho da MTU no PC por trás do PIX/ASA. Defina o tamanho da MTU como 1300 para o computador cliente e tente estabelecer a conexão Citrix pelo túnel VPN. 1992-2014 Cisco Systems Inc. Todos os direitos reservados. Data da Geração do PDF: 8 Junho 2009
http://www.cisco.com/cisco/web/support/br/106/1066/1066735_fragmentation.html