Isolando Problemas onde o ISA Server Parece ser o Culpado – Sessão 2

Por: Yuri Diógenes

1. Introdução

Na sessão passada vimos inicialmente o quão importante é o entendimento do problema antes mesmo de prosseguir com a obtenção de dados. Os questionamentos também fazem parte deste trabalho inicial, que por sua vez é um elemento fundamental na hora da resolução do problema.

Nesta sessão dois iremos sobre um outro cenário onde o servidor ISA parecia ser de fato o culpado pelo problema, porém após o levantamento correto das informações do ambiente e do software de terceiros em uso, foi possível observar que o ISA não estava causando de fato o problema.

Vejamos então do que se trata.

2. Cenário – Não é Possível Estabelecer uma Conexão VPN Site-to-Site entre o Servidor ISA e um Firewall de Terceiros

Neste cenário a empresa tem uma parceria com uma outra empresa e ambas precisam trocar informações via rede. Para fazer isso de forma segura usando a Internet eles resolveram criar uma VPN Site-to-Site. A empresa tinha um servidor ISA e o parceiro usava uma solução de terceiros para VPN, foi acordado que a conexão entre eles seria realizada via protocolo PPTP e que todo o tráfego dentro do túnel VPN seria liberado.

Durante o levantamento das informações foi também visto que a topologia em uso era a mostrada abaixo:

 

Figura 1 – Topologia levantada pelo administrador dos servidores Windows

O cliente da empresa que tem o servidor ISA já fez toda configuração da VPN usando o artigo oficial que descreve passo a passo como implementar este tipo de configuração no lado do servidor ISA.

No lado do Parceiro foi verificado que ele tem outras empresas conectadas neste concentrador VPN sem nenhum problema. O parceiro diz que não há problema de configuração no lado dele pois ele está usando o mesmo modelo que tem para outras empresas.

Após verificar todo o histórico e também a topologia apresentada as seguintes perguntas foram feita ao cliente:

· O modem também funciona como roteador?

o Resposta: Sim.

· O seu modem implementa lista de controle de acesso (ACL)?

o Resposta: Não Sei

· O modem também funciona como firewall?

o Resposta: Não Sei.

Como é possível observar uma das tarefas do engenheiro de suporte também é ajudar ao cliente a entender melhor o próprio ambiente J.

3.2. Coletas

A coleta deverá ser basicamente a mesma usada na Sessão 1 mostrada semana passada (ver item 3.2. do Artigo Isolando Problemas onde o ISA Server Parece ser o Culpado – Sessão 1). Adicionalmente, para este tipo de cenário também é importante usar uma outra ferramenta de teste que é o PPTP Ping. O PPTP ping é formado pelos seguintes utilitários:

  • PPTPCLNT – versão cliente que vai ser usada para enviar os testes PPTP.
  • PPTPSRV – versão servidor que vai ser usada para assegurar que o servidor esteja ouvindo conexões PPTP.

Dentro de um cenário normal o que esperamos é que quando o cliente PPTP envie uma tentativa de conexão para o servidor PPTP então tenhamos a validação que o protocolo 47 (GRE - Generic Route Encapsulation) e a porta TCP 1723 estejam corretamente liberadas e acessíveis no lado do servidor.

Nota: Para maiores informações sobre o protocolo 47 ver o artigo “VPN Tunnels - GRE Protocol 47 Packet Description and Use” no Microsoft Technet.

Segue abaixo um exemplo de um tráfego correto com o uso do PPTP Ping:

Figura 2 – Teste com PPTP Ping – Lado Cliente.

Figura 3 – Teste com PPTP Ping – Lado do Servidor.

Para efetuar o download do PPTP Ping você precisa instalar as ferramentas de suporte do Windows XP SP2 em um cliente e copiar os executáveis (pptpclnt.exe e pptpsrv.exe) para ambos servidores em questão. Neste caso é preciso copiar ambos tanto na empresa quando no parceiro e efetuar o teste em ambas direções, ou seja, hora um vai ser o cliente, hora o outro vai ser. Isso é necessário, pois ambos lados da VPN podem iniciar o pedido de conexão, então os servidores podem agir tanto quanto cliente quanto como servidor.

3.3. Análise

A coleta de dados foi fundamental para a determinação da causa raiz, porém o uso do utilitário PPTP Ping mostrou exatamente o que estava ocorrendo com mais nitidez do ponto de vista técnico. Vejamos a captura:

· O teste inicial foi usando o PPTPSRV no lado do parceiro e o PPTPCLNT no lado do da empresa. É feito um “3 Way Handshake” entre o servidor do parceiro e o servidor da empresa:

192.168.3.4 192.168.3.8 TCP TCP: Flags=.S......, SrcPort=1289, DstPort=1723, Len=0, Seq=640629435, Ack=0, Win=65535 (scale factor not found)

192.168.3.8 192.168.3.4 TCP TCP: Flags=.S..A..., SrcPort=1723, DstPort=1289, Len=0, Seq=4099648897, Ack=640629436, Win=16384 (scale factor not found)

192.168.3.8 TCP TCP: Flags=....A... , SrcPort=1289, DstPort=1723, Len=0, Seq=640629436, Ack=4099648898, Win=65535 (scale factor not found)

· Em seguida a transmissão é feita na porta TCP 1723 e a resposta é feita com sucesso:

192.168.3.4 192.168.3.8 TCP TCP: Flags=...PA..., SrcPort=1289, DstPort=1723, Len=2, Seq=640629436 - 640629438, Ack=4099648898, Win=65535 (scale factor not found)

+ Ethernet: Etype = Internet IP (IPv4)

+ Ipv4: Next Protocol = TCP, Packet ID = 25870, Total IP Length = 42

- Tcp: Flags=...PA..., SrcPort=1289, DstPort=1723, Len=2, Seq=640629436 - 640629438, Ack=4099648898, Win=65535 (scale factor not found)

SrcPort: 1289

DstPort: 1723

SequenceNumber: 640629436 (0x262F3ABC)

AcknowledgementNumber: 4099648898 (0xF45BAD82)

+ DataOffset: 80 (0x50)

+ Flags: ...PA...

Window: 65535 (scale factor not found)

Checksum: 59567 (0xE8AF)

UrgentPointer: 0 (0x0)

PPTPPayload: Binary Large Object (2 Bytes)

192.168.3.8 192.168.3.4 TCP TCP: Flags=...PA..., SrcPort=1723, DstPort=1289, Len=46, Seq=4099648898 - 4099648944, Ack=640629438, Win=65533 (scale factor not found)

+ Ethernet: Etype = Internet IP (IPv4)

+ Ipv4: Next Protocol = TCP, Packet ID = 3079, Total IP Length = 86

- Tcp: Flags=...PA..., SrcPort=1723, DstPort=1289, Len=46, Seq=4099648898 - 4099648944, Ack=640629438, Win=65533 (scale factor not found)

SrcPort: 1723

DstPort: 1289

SequenceNumber: 4099648898 (0xF45BAD82)

AcknowledgementNumber: 640629438 (0x262F3ABE)

+ DataOffset: 80 (0x50)

+ Flags: ...PA...

Window: 65533 (scale factor not found)

Checksum: 64939 (0xFDAB)

UrgentPointer: 0 (0x0)

PPTPPayload: Binary Large Object (46 Bytes)

· A segunda etapa dos testes realizado por esta ferramenta é a tentativa de acesso para o protocolo GRE (47). O resulta é mostrado abaixo:

192.168.3.4 192.168.3.8 GRE GRE: Protocol = 0x6c6c, Flags = .RK.s........... Version 1

+ Ethernet: Etype = Internet IP (IPv4)

+ Ipv4: Next Protocol = GRE, Packet ID = 25873, Total IP Length = 52

- Gre: Protocol = 0x6c6c, Flags = .RK.s........... Version 1

- flags: .RK.s........... Version 1

C: (0...............) Checksum Absent

R: (.1..............) Offset Present

K: (..1.............) Key Present

S: (...0............) Sequence Number Absent

ssr: (....1...........) Strict Source Route Present

Recur: (.....000........) Recursion Control

A: (........0.......) Acknowledgment sequence number Absent

ReservedFlags: (.........1100...)

Version: (.............101) 5

NextProtocol: 0x6c6c

Este pacote é enviado seis vezes do parceiro para o servidor ISA da empresa e o servidor ISA não responde. Revendo os traces do servidor ISA é possível notar que a tentativa de conexão GRE nunca chegou de fato na placa externa do servidor ISA.

4. Conclusão

Após este teste ficou claro que o modem na realidade é muito mais que apenas um simples modem. O cliente revisou a configuração do modem via uma simples interface web disponível no modem e pode ver o mesmo funcionava como roteador e firewall. Porém, o firewall do modem era muito simples e apenas permitia o filtro / mapeamento de portas TCP e UDP, não permitindo a configuração de regras por protocolo (por exemplo pelo protocolo 47 – GRE). Com isso ficou explicado o comportamento mostrado nas capturas de rede, ou seja, vimos que a conexão na porta 1723 TCP acontecia, porém a negociação GRE era iniciada por um lado (parceiro) mas o servidor da empresa nem chegava a receber este pacote.

Este tipo de exemplo é muito importante na prática, como dito anteriormente muitas vezes não é que o cliente esteja tentando ocultar o fato do Modem ter mais funcionalidades, na realidade muitas vezes nem ele mesmo sabe se o Modem (ou outro equipamento) tem tais funcionalidades que podem impactar na comunicação. Por isso é de suma importância que o engenheiro de suporte entre em cena para clarificar o cenário e validar se as informações repassadas estão realmente corretas.

Como recomendação adicional para cenários onde o ISA Server está atrás de um Modem DSL ou Cable Modem veja o artigo “How to use the Windows Server 2003 Routing and Remote Access Service or ISA Server 2006 or ISA Server 2004 with a DSL router for Internet Access” no Microsoft Technet.