A SA filha do IPsec está ativa, mas os contadores de pacotes ficam em zero
Contadores de pacotes em zero numa SA filha instalada geralmente significam que nada correspondeu a ela. Siga um fluxo fixado pelos contadores, rota, seletores e origem.
Você subiu o túnel, o temporizador de rekey está contando e as duas direções continuam lendo zero pacotes. Nada nesse par de números diz que o peer rejeitou o seu túnel: uma CHILD SA instalada com contadores ociosos é o estado normal de uma associação que nada correspondeu ainda. O trabalho é provar que um pacote deveria ter correspondido e então achar o ponto em que ele saiu do caminho que os seletores descrevem. Faça isso uma vez, em ordem, e mantenha a requisição idêntica entre as execuções.
O que um contador zerado realmente prova
Uma CHILD SA é um par de seletores mais as chaves e o SPI que cifram o tráfego que cai dentro dessas faixas. Instalá-la significa apenas que os dois peers concordaram com essas faixas e com as chaves derivadas; o kernel vai mantê-la por horas sem que um único pacote chegue. Portanto a pergunta nunca é se o túnel existe, mas se algum pacote enviado pelo seu teste caiu dentro das faixas negociadas pelos dois peers. Se nenhum caiu, os contadores ficam em zero e a associação expira sem uso no fim do seu tempo de vida.
Essa distinção muda o que você inspeciona primeiro. Uma proposta rejeitada, uma falha de autenticação ou uma IKE SA morrendo aparecem no log ou na lista de SA, não como um zero silencioso. Um túnel que negocia limpo e depois fica ocioso aponta antes para a correspondência, o roteamento ou a origem do tráfego de teste.
Envie um fluxo que você consiga descrever antes de enviá-lo
Escolha um destino dentro da sub-rede protegida e abra uma conexão nova para ele; uma página carregada há uma hora pode vir do cache, e uma resposta em cache nunca toca o túnel. Depois anote quatro valores enquanto a requisição ainda é hipotética: o endereço de origem que a aplicação vai vincular, o destino, a família de endereços e o nome ou par de seletores da filha que você observa. Esse registro é o que transforma um contador plano numa afirmação testável.
O endereço de origem é o valor que as pessoas pulam, e é ele que mais quebra o teste. Um laptop com endereço com fio, endereço Wi-Fi e endereço de túnel pode vincular qualquer um deles dependendo da consulta de rota, e só um pode estar dentro da faixa negociada. Use uma ferramenta que permita fixar a origem, como ping -I 10.1.0.5 10.2.0.9 ou curl --interface 10.1.0.5, para que o pacote não escolha outro endereço em silêncio. Quando a execução fixada move os contadores e a não fixada não move, você encontrou um problema de roteamento, não de IPsec.
Quais números ler, e onde eles moram
No Linux, ip -s xfrm state imprime cada associação com uma linha lifetime current: cujo total de bytes e de pacotes pertence só àquela SA, seguida de uma linha stats: para replay e contagem de erros. Num peer strongSwan, swanctl --list-sas imprime uma linha in e uma linha out por filha instalada, cada uma terminando num total de bytes e num total de pacotes; as ferramentas stroke mais antigas chamam o mesmo par de bytes_i e bytes_o. Leia as duas direções separadamente, porque a que ficou plana é o achado. Somá-las esconde exatamente a assimetria que você procura.
As duas visões são por associação, então um rekey instala um novo par de SPI e sua linha de base volta a zero sem nada quebrado. Anote o SPI que você observa antes de o temporizador de rekey disparar, ou vai comparar uma SA nova com um número velho. Se o de saída sobe enquanto o de entrada fica plano, o seletor correspondeu e a resposta nunca voltou, o que desloca a investigação para o encaminhamento do peer e para a política dele. A documentação de configuração do IKEv2 do strongSwan cobre o ciclo de vida da SA filha e o tempo de rekey por trás desses números.
O ponto de observação é uma variável separada da origem do pacote. Um offload de hardware pode incrementar os contadores da associação enquanto uma captura de software na interface não mostra nada, porque pacotes com offload pulam o gancho onde a captura fica, e a entrada pode divergir do mesmo jeito. Quando os dois discordam, use os contadores para responder se algo correspondeu e a captura para responder como o pacote era.
Rota, seletores e onde o pacote nasceu
Compare três coisas lado a lado: a rota que o kernel escolhe para o seu destino, a política que dirige o tráfego para o túnel e o par de seletores negociado pela filha. ip route get 10.2.0.9 from 10.1.0.5 nomeia a interface e a origem que o kernel usaria, que muitas vezes não é o par que você supôs. ip xfrm policy mostra os modelos e seletores instalados localmente, enquanto swanctl --list-sas mostra o que o peer aceitou. Uma consulta que manda o pacote sair pela interface física nunca chega à política, então os contadores não podem mover.
As incompatibilidades vêm em várias formas que parecem idênticas a partir de um contador. Um destino IPv6 fora de um seletor IPv4, um endereço de origem da sub-rede errada e uma política mais estreita que a filha produzem o mesmo zero. Corrija primeiro a causa mais estreita, porque alargar um seletor só para deslocar um número muda o que o túnel protege.
Depois há a origem do pacote, a armadilha que um gateway arma para o próprio operador. O tráfego que o gateway gera é comparado com a política de saída, enquanto um pacote que ele encaminha por um cliente é comparado com a política de encaminhamento, então um ping da caixa pode funcionar num caminho que nenhum cliente percorre.
Uma mudança reversível e um relatório que sobrevive à revisão
Mude um único elemento, repita a requisição idêntica e leia os mesmos contadores. Limpar todas as regras de firewall ou trocar todos os seletores de uma vez vai mover um número e destruir a evidência que lhe dizia por quê. Se a segunda execução ainda mostra zero, você eliminou uma hipótese em vez de desperdiçar a tarde.
Escreva o achado numa forma que outra pessoa consiga reproduzir: nome da filha, faixas aceitas, a origem que você fixou, o destino que testou, a direção que ficou em zero e o SPI que você lia. Essa frase separa uma associação que ninguém usou de uma aplicação remota que recebeu o tráfego e o recusou. Reverta a mudança quando ela não moveu os contadores, e guarde o registro; a próxima pessoa começa onde você parou. Nada no túnel precisou ser reconstruído para nada disso, e é esse o ponto de verificar a correspondência antes de tocar na configuração.