Quando se trata de filtragem/gerenciamento de pacotes, eu nunca sei o que está acontecendo dentro do kernel. Existem tantas ferramentas diferentes que atuam nos pacotes, seja do espaço do usuário (modificando subsistemas do espaço do kernel) ou diretamente no espaço do kernel.
Existe algum lugar onde cada ferramenta documente a interação com outras ferramentas, ou onde elas atuam. Eu sinto que deveria haver um diagrama em algum lugar especificando o que está acontecendo para pessoas que não são técnicas o suficiente para ler o código do kernel.
Então aqui está o meu exemplo:
Um pacote é recebido em uma das minhas interfaces de rede e eu tenho:
- UFW
- iptables
- Subsistema IPv4 (roteamento)
- IPVs
- eBPF
Ok, então eu sei que UFW é um frontend para iptables, e iptables é um frontend para Netfiler. Então agora estamos no espaço do kernel e nossas ferramentas são Netfiler, IPVs, IPv4 e eBPF.
Novamente, as interações entre o Netfilter e os subsistemas IPv4 são fáceis de encontrar, pois são subsistemas muito antigos (não de uma maneira ruim), então a falta de documentos seria muito estranho. Este diagrama é uma visão geral da interação:
Mas e os IPVs e eBPF? Qual é a ordem real na qual os subsistemas do kernel agem sobre os pacotes quando esses dois estão no kernel?
Eu sempre encontro pessoas incríveis que tentam entrar nas entranhas e ajudar os outros a entender, por exemplo, http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.filter_rules.html
Mas isso não deveria ser documentado de forma mais oficial? Eu não estou procurando uma explicação aqui sobre como esses submódulos interagem, eu sei que eu poderia encontrá-la pesquisando. Minha pergunta é mais geral sobre por que não há documentação oficial que realmente tente explicar o que está acontecendo dentro desses subsistemas do kernel. Está documentado em algum lugar que eu simplesmente não conheço? Existe alguma razão para não tentar explicar essas ferramentas?
Peço desculpas se não estou fazendo sentido. Acabei de começar a aprender sobre essas coisas.