Ativar a aceleração NAT por hardware pode tornar uma configuração de VPN mais rápida e também pode fazer com que uma política de encaminhamento deixe de se aplicar a alguns pacotes sem qualquer erro. Qual dos dois acontece depende do que o caminho rápido salta, e isso varia entre firmware, versão do kernel e o tipo de aceleração em uso. O menu de definições raramente diz qual acabou de ativar.

Duas afirmações merecem ser separadas antes de culpar o acelerador: a de que uma regra deixou de ser aplicada e a de que um contador deixou de ser atualizado. Não são a mesma observação.

Três acelerações diferentes são misturadas numa só

O offload de encaminhamento, a aceleração criptográfica e o offload do canal de dados do túnel são mecanismos separados que muitas vezes partilham um único switch. O offload de encaminhamento permite que fluxos estabelecidos saltem parte da pilha normal, a aceleração criptográfica torna o trabalho de cifra mais barato, e o offload do túnel move a encapsulação para o hardware. Um router que acelera tráfego encaminhado comum pode deixar o tráfego do túnel totalmente no caminho lento, o que é um resultado de desempenho e não uma mudança de política. Também existe o inverso, em que o tráfego do túnel é descarregado enquanto a política em volta continua a ser avaliada.

As flowtables do Linux são o caso documentado que mais vale a pena ler, já que fluxos estabelecidos podem ser entregues a um caminho rápido. A sua contabilização e tratamento de estado passam então a diferir do encaminhamento clássico, e é por isso que os contadores começam a parecer estranhos.

Um contador que para de mexer prova pouco

Os contadores de regras contam os pacotes que passam pela regra, e um fluxo descarregado pode nunca mais passar por ela depois do primeiro pacote. Isso produz um contador que congela enquanto o tráfego continua, e parece exatamente um desvio se confiar no número. Observar o contador continua a ser útil como pista de que o fluxo saiu do caminho contado. O resto do diagnóstico tem de vir de onde os pacotes realmente vão.

A inferência oposta falha igualmente mal. Um download rápido não mostra que as suas regras de exceção e o tratamento de falhas continuam a aplicar-se, porque exercita um fluxo e não a política.

Três condições decidem se o offload quebra a política

A primeira condição é se o caminho rápido consulta o hook de que a sua política depende, porque uma política expressa em marcas e rotas sobrevive mais vezes do que uma construída sobre filtragem por pacote. A segunda é se o firmware permite sequer a combinação, porque algumas compilações desativam o offload automaticamente quando um túnel ou uma funcionalidade de firewall está ativa. A terceira é se o tráfego é elegível, já que a aceleração costuma estar ligada a fluxos estabelecidos e pode excluir pacotes fragmentados ou invulgares. Onde as três favorecem a aceleração, a política continua a aplicar-se, e onde a primeira falha nenhuma quantidade de ajuste a restaura.

Leia a documentação do fabricante para a combinação que está a executar, e não para o modelo de router em geral. As versões de firmware mudam estas respostas em silêncio.

Teste a política, não o débito

Meça o que a política deve garantir antes de medir a rapidez com que funciona. Os comandos abaixo mostram se uma flowtable está instalada, o que o rastreio de ligações vê e de que endereço o cliente sai. Compare uma ligação nova depois da alteração, já que uma estabelecida pode manter o caminho antigo.

nft list flowtables
conntrack -L | head -n 20
curl -sS --max-time 8 https://api.ipify.org; echo
ping -c 3 192.168.50.20

Uma entrada de flowtable que cobre o tráfego do túnel diz-lhe que o caminho rápido está em jogo, e a tabela de ligações mostra se o fluxo é rastreado como espera. A verificação de endereço confirma a saída quando a política diz respeito à saída para a internet, enquanto o ping confirma um destino privado que deve continuar acessível. Execute o mesmo conjunto com a aceleração desligada e depois ligada, e compare os resultados e não os tempos.

Registe a definição anterior para que a experiência continue reversível. Uma instrução genérica para desativar o offload em todo o lado conta como uma solução alternativa, não como uma descoberta.

Artigos relacionados