Leia uma linha de estado que diz Security Associations (1 up, 0 connecting) e ela parece o relatório de um túnel a funcionar. Duas sub-redes passam tráfego por ele ao mesmo tempo, por isso o número parece estar a mentir. Não mente; conta associações IKE, e uma delas pode alojar várias filhas. Leia os inventários antes de tocar numa proposta ou numa rota.

Porque é que o título e o tráfego não concordam

A saída antiga do stroke chama ao seu total associações de segurança e deriva-o do gestor de associações IKE. Cada associação IKE estabelecida contribui com uma, independentemente de quantas CHILD SA estão por baixo. Um único pai IKEv2 costuma transportar várias filhas, uma por par de seletores de tráfego, e os seletores negociados de uma filha podem cobrir mais do que um endereço ou prefixo. O número de endereços na sua configuração não tem, por isso, relação fixa com o número do título.

A saída moderna mostra por vezes um total em vez da formulação antiga “up”, e um daemon gerido pelo swanctl não é de todo conduzido pelas definições antigas do stroke. Não tome como certo nem a formulação nem a regra de contagem entre versões.

Compare três inventários antes de mudar o que quer que seja

Comece pelo que está carregado, depois pelo que está negociado, depois pelo que realmente move pacotes. São três perguntas diferentes e cada uma tem o seu próprio comando.

swanctl --list-conns
swanctl --list-sas

A primeira lista as definições de ligação que o daemon aceitou. A segunda lista as associações IKE estabelecidas com as suas filhas, e é aí que aparece a hierarquia real. Uma definição presente num ficheiro mas ausente da primeira lista nunca foi carregada, e nenhuma quantidade de novas tentativas do iniciador o corrige. Se em vez disso executar a interface antiga, o par equivalente é ipsec statusall e a mesma lista do swanctl, conforme o plugin que possui a configuração. Não misture ferramentas entre dois daemons no mesmo host e espere uma única resposta coerente.

swanctl --list-sas --raw | head -40
ip -s xfrm state

A forma em bruto mantém os identificadores e os seletores visíveis para comparação, e a lista de estado do núcleo mostra o que a pilha julga ter instalado. Quando o daemon e o núcleo discordam, ou o daemon foi reiniciado em torno de uma filha existente, ou o objeto do núcleo foi removido por baixo.

Leia a hierarquia, não o total

Um pai estabelecido ilustrativo com duas filhas parece um único nó com duas filhas por baixo, cada uma etiquetada com o seu estado e modo. Despeje a saída real e conte as filhas você mesmo em vez de ler um resumo que alguém colou de um painel.

swanctl --list-sas
swanctl --list-conns --raw | grep -A4 'accounting'

Um pai com duas filhas instaladas é um túnel saudável de duas sub-redes. Um pai com uma filha instalada e outra ausente é outra situação, e os seletores da filha em falta são o que há a comparar com a proposta do lado remoto. Durante a renovação de chaves, uma filha antiga e a sua substituta podem aparecer juntas durante uma janela curta. Guarde a marca temporal com a instantânea, porque uma contagem feita a meio da renovação parece duplicação e uma feita depois parece perda.

Carregado, instalado e tráfego que passa

Uma filha em estado instalado tem parâmetros negociados e uma entrada no núcleo. Mas não necessariamente transportou um pacote: os seletores podem ser mais estreitos do que o tráfego que espera, e uma rota pode enviar esse tráfego para outro sítio antes de o túnel o ver. Envie um fluxo que corresponda aos seletores negociados a partir de um host autorizado, e depois leia os contadores da filha em vez do título. Um contador que fica em zero enquanto gera tráfego correspondente aponta para o encaminhamento ou para a política, não para o IKE.

swanctl --initiate --child accounting
swanctl --list-sas --raw | grep -E 'bytes|packets'

Iniciar uma filha com nome é uma ação deliberada com um resultado visível, e separa “a ligação está inativa porque ninguém a pediu” de “a ligação não consegue subir”. Uma política de armadilha a pedido comporta-se exatamente como o primeiro caso, por isso leia a definição de início da ligação antes de lhe chamar falha.

Quando a contagem está mesmo errada

Se falta uma definição no inventário carregado, veja o carregamento da configuração e qual instância do daemon está a correr. Se está carregada mas nunca negoceia, compare propostas, contexto de autenticação e seletores com o par, uma filha de cada vez. Altere um elemento por tentativa e registe o identificador que alterou. Reverter uma proposta é trivial quando sabe qual é; é adivinhação depois de três edições que nunca foram separadas.

Corrija primeiro a leitura errada. A maioria dos relatos de um segundo túnel “em falta” termina com duas filhas instaladas sob um único pai, e a única coisa que alguma vez esteve avariada era a linha de resumo em que as pessoas confiavam em vez da hierarquia.

Artigos relacionados