Um contador TPROXY pode aumentar enquanto a aplicação não recebe nada. A regra correspondeu, mas a entrega local continua dependente do encaminhamento por políticas e de um socket recetor compatível.

O TPROXY do Linux consegue intercetar tráfego sem reescrever o destino como o DNAT faz. Por isso, os pacotes endereçados a um destino não local têm de chegar a um socket local elegível.

Siga o caminho de entrega

  1. O tráfego chega ao anfitrião de interceção pela interface e família de endereços previstas.
  2. A regra de interceção e a marca do pacote identificam a política de entrega local.
  3. Uma regra de política correspondente escolhe uma rota que entrega os pacotes localmente.
  4. O proxy usa um ouvinte transparente suportado com a opção de socket necessária.

O exemplo IPv4 do kernel exige suporte da aplicação para IP_TRANSPARENT. Um ouvinte normal no mesmo porto, ou uma definição global de ligação não local, não comprovam esse suporte.

ObservaçãoVerificação seguinte
Nenhum pacote de entrada relevanteCaminho do tráfego e interface de entrada
Os pacotes chegam; o contador de interceção não se moveFamília de endereços, cadeia e condições de correspondência
A regra corresponde; a entrega local falhaMarca e seleção da rota de política
O socket escuta; a aplicação não vê nadaCapacidade de socket transparente e proprietário do ouvinte
O pedido começa; as respostas seguintes falhamCorrespondência de socket estabelecido e rotas de retorno

Guarde a configuração carregada e o espaço de nomes de rede com cada observação. Uma regra posterior pode substituir uma marca ou escolher outra rota. Se a interceção ocorrer no anfitrião enquanto o ouvinte corre num contentor, uma rota local válida do anfitrião não entrega automaticamente nesse contentor.

Contar com os pacotes posteriores

O exemplo do kernel inclui a correspondência de socket e um caminho DIVERT que marca os pacotes dos sockets transparentes. Omiti-lo pode deixar o tráfego posterior noutro caminho mesmo quando a interceção inicial tem sucesso.

Use o modo transparente suportado pela aplicação e a documentação do kernel correspondente para cada família de endereços. Um comando de rota local IPv4 não configura IPv6, e o suporte numa família não comprova o comportamento do socket da outra.

O TPROXY também não gera negociação SOCKS. Um componente de transparente para SOCKS continua a ter de descobrir o destino e negociar com o seu servidor a montante.

Passar de REDIRECT

Registe como a aplicação existente obtém o destino original. O REDIRECT altera o destino e depende do mecanismo de recuperação adequado; o TPROXY precisa do seu socket transparente e da disposição de encaminhamento. Escolha conforme a aplicação e a política de endereço de origem.

Combine os contadores com a rota escolhida, a capacidade do socket e o registo da aplicação antes de mudar de modo de interceção. Numa distribuição que forneça os meios necessários, um passo de entrega em falta é um melhor ponto de partida do que recompilar o kernel.

Artigos relacionados