O roteamento via Cisco ASA está mudando os números da seqüência TCP / ACK

7

Nossa rede tem um appliance VPN dedicado que fica dentro da rede do escritório. Temos um Cisco ASA com uma rota estática que encaminha as sub-redes de VPN para o appliance VPN. Portanto, uma solicitação típica do cliente para o site remoto ( 192.168.161.28 -> 192.168.101.28 ) ocorre:

Client            ASA               Local VPN         Remote VPN       Remote Server
192.168.161.28 -> 192.168.161.17 -> 192.168.161.10 -> 192.168.101.1 -> 192.168.101.28

Com esta rota, o firewall no endpoint VPN remoto de 192.168.101.1 rejeita o handshake TCP de 3 vias:

Status: A TCP packet was rejected because it has an invalid sequence number or an invalid acknowledgement number

No entanto, se eu ignorar o ASA (com uma rota estática nas máquinas cliente diretamente):

Client            Local VPN         Remote VPN       Remote Server
192.168.161.28 -> 192.168.161.10 -> 192.168.101.1 -> 192.168.101.28

Os fluxos TCP estão corretamente apertados e tudo está tranquilo.

O que poderia ser? Existem algumas regras de inspeção no ASA que poderiam estar quebrando isso? Eu suspeito que é porque a rota de retorno do tráfego é diferente da rota de envio (ou seja, os pacotes vão diretamente do ponto de extremidade da VPN para o cliente, em vez de passar pelo ASA como eles estão na mesma rede).

    
por Mark Henderson 27.05.2013 / 01:50

2 respostas

5

Desabilitando a randomização do ACK no ASA resolve esse problema (este cenário corresponde a Exemplo B - Múltiplas opções da Internet Caminhos ):

access-list tcp_bypass extended permit tcp 192.168.161.0 255.255.255.0 any
class-map tcp_bypass
match access-list tcp_bypass
policy-map tcp_bypass_policy
class tcp_bypass
set connection advanced-options tcp-state-bypass
set connection timeout idle 0:10:00
service-policy tcp_bypass_policy interface inside

Essa solução é uma droga, não deixe de ler as implicações antes de fazer isso.

    
por 27.05.2013 / 02:14
4

O mais provável é que o firewall (192.168.101.1) perca o SYN-ACK porque ele é roteado em uma rota diferente e, como é um firewall com estado, ele o rejeita.

  1. A envia SYN de B a Z enquanto é inspecionado por C.
  2. B envia SYN-ACK diretamente para A (porque B está na mesma sub-rede e tem a rota padrão para A)
  3. A envia ACK para B até Z enquanto é inspecionado por C e é descartado porque nunca viu SYN-ACK.

Isso é comumente chamado de roteamento assimétrico.

    
por 27.05.2013 / 02:45