Estou usando um gerador de tráfego para configurar uma conexão TCP que deve passar por um firewall do Cisco ASA.
Minha topologia fica assim:
+------------------+
| CISCO ASA |
+------------+ | |
| Client +-------+Outside |
| 10.1.202.1| |10.1.202.254 |
| | | | +------------+
+------------+ | Inside| |Server |
| 10.1.102.254+--------+10.1.102.19 |
| | | |
+------------------+ +------------+
A conexão deve ser estabelecida de um host na rede externa (10.1.202.1/24) para um servidor na rede interna (10.1.102.19/24).
Eu vejo em Wireshark que a SYN
passa o firewall (. 10,1 (1/2) 02,254), o SYN-ACK não passar e cair (ver capturas: dentro da interface e o fora-de interface ).
De show asp drop
sou informado de que os quadros são descartados devido ao seguinte motivo:
TCP failed 3 way handshake (tcp-3whs-failed)
Não estou usando o ARP, mas uso o endereço MAC da interface do firewall, que é o gateway padrão.
Eu crio o SYN
, SYN-ACK
e ACK
como o seguinte:
SYN: (cliente (externo) para servidor (interno))
**Ethernet**
Destination MAC: <Mac Address of the Firewall-Interface>
Source MAC: <Mac Address of the Sending Device-Interface>
**IP**
Source IP: 10.1.202.1
Destination IP: 10.1.102.19
Default Gateway: 10.1.202.254
**TCP**
Source Port: 9000
Destination Port: 8000
Sequence number: 0
Acknowledgement number: 0
Synchronize: 1
Acknowledgement: 0
SYN-ACK: (servidor (interno) para cliente (externo)) (isso não passa o firewall)
**Ethernet**
Destination MAC: <Mac Address of the Firewall-Interface>
Source MAC: <Mac Address of the Sending Device-Interface>
**IP**
Source IP: 10.1.102.19
Destination IP: 10.1.202.1
Default Gateway: 10.1.102.254
**TCP**
Source Port: 8000
Destination Port: 9000
Sequence number: 0
Acknowledgement number: 1
Synchronize: 1
Acknowledgement: 1
ACK: (cliente (externo) para servidor (interno))
**Ethernet**
Destination MAC: <Mac Address of the Firewall-Interface>
Source MAC: <Mac Address of the Sending Device-Interface>
**IP**
Source IP: 10.1.202.1
Destination IP: 10.1.102.19
Default Gateway: 10.1.202.254
**TCP**
Source Port: 9000
Destination Port: 8000
Sequence number: 1
Acknowledgement number: 1
Synchronize: 0
Acknowledgement: 1
Além disso, minha topologia é como a seguir:
O cliente gerador de tráfego (rede externa) está conectado a um switch no qual uma VLAN é adicionada. O switch está conectado à interface externa do firewall. Na rede interna, o gerador de tráfego é conectado ao switch em que as tags VLAN são adicionadas e o switch é conectado à interface interna do firewall.
Alguém pode me dizer por que o ASA deixa cair o SYN-ACK
?
Desde já, obrigado!
EDITAR:
Conforme sugerido por Ron Trunk, desabilitei a randomização dos números de sequência usando:
desativação de número de sequência aleatória
Adicionado captura da interface interna e externa .
Atualizado os arquivos de captura
Respostas:
À revelia, o ASA randomiza os números de sequência no aperto de mão (para impedir seqüestros de sessão). Portanto, seus números de sequência não coincidem. Você pode desativar esse recurso.
fonte
service-policy <name> interface <interface>
). Obrigado pela sua dica.Na sua captura interna , existem dois pacotes que vão do Servidor (10.1.102.19) para o Cliente (10.1.202.1), mas eles são provenientes de diferentes endereços MAC.
Isso parece estranho, mas provavelmente não é seu problema. Tanto quanto eu posso interpretar, seu problema é o seguinte:
Parece que o próprio servidor responde naturalmente ao seu pacote SYN criado com o RST-ACK no pacote nº 23 (da tampa interna, veja acima) - provavelmente porque a porta 8000 está fechada. Isso solicitará que o Firewall encaminhe o RST para o exterior (pacote nº 23 na tampa externa) e limpe essa conexão de sua tabela de estados.
Mas o pacote SYN-ACK criado é acionado no 25 (da tampa interna), solicitando um RST do Firewall (26) porque não há entrada na tabela de conexão relacionada a esse fluxo.
fonte
SYN-ACK
não passa no firewall. Atualizei os arquivos de captura das interfaces internas / externas para o estado atual.Você pode executar o seguinte em seu ASA, por favor:
// Ativar todas as capturas para todos os asp asp
// Mostra o buffer de captura que deve identificar por que o handshake está falhando
Deve mostrar algo semelhante ao seguinte, mas para o seu tipo específico de queda:
Lembre-se de que uma regra básica para o ASA é que, para iniciar o tráfego de uma interface de segurança mais baixa (Fora) para uma interface de segurança mais alta (Dentro), deve haver uma entrada explícita da ACL para permitir a passagem desse tráfego. Sem ver sua configuração ASA, é difícil dizer o que pode estar causando os problemas.
fonte
Você está descrevendo a operação normal / padrão do ASA. Somente conexões TCP estabelecidas são permitidas de FORA para DENTRO. Você pode desativar isso configurando o desvio de estado TCP .
fonte