Estou tentando entender claramente o que exatamente o br_netfilter
módulo do kernel Linux faz (sei que tem algo a ver com rede).
Minha pergunta simples que estou fazendo aqui é a seguinte:
Qual é um exemplo de algo que POSSO fazer com este módulo habilitado e que NÃO POSSO fazer quando ele está desabilitado? Achei que tinha algo a ver iptables
, mas ao desabilitar/habilitar o módulo sempre consegui executar os mesmos iptables
comandos.
Nota: como eu não tinha certeza de que não mataria meu computador desabilitando um módulo do kernel, criei uma instância de teste do AWS EC2 para testar isso.
EDIT: Para esclarecer, o que eu gostaria de ver é um conjunto simples de etapas, também conhecido como executar comandos X, Y, Z, que quando habilitado, o sistema age conforme o esperado, quando desabilitado, não.
Primeiro, para que esse módulo seja útil para você, primeiro você deve conectar o tráfego entre duas ou mais interfaces de rede (física ou virtual).
Por exemplo, se você deseja executar máquinas virtuais QEMU/KVM em seu sistema e poder apresentar as máquinas virtuais à rede como endereços IP separados (= nenhum encaminhamento de porta necessário para configurar serviços em VMs), você pode executar um ponte entre a interface de rede física do seu sistema host e as interfaces de rede virtuais das suas VMs.
Ou se você deseja criar
hostapd
seu próprio ponto de acesso WiFi e não deseja que a rede sem fio seja uma sub-rede IP separada, execute uma ponte entre as interfaces de rede com e sem fio.Basicamente, uma vez que a saída de
brctl show
orip link show type bridge
não é uma lista vazia, você poderáebtables
configurar restrições no tráfego que passa pela(s) ponte(s), com base em endereços MAC.Se esses dois comandos não mostrarem saída,
br_netfilter
não serão úteis para você, porque você não está usando o subsistema quebr_netfilter
estaria filtrando. E mesmo que eles mostrem saída, se tudo o que você precisa é de filtragem baseada em MAC em suas pontes, você ainda não precisa dobr_netfilter
módulo.Mas e se você quiser filtrar por endereços IP ou portas TCP/UDP em sua ponte? Então você poderia correr
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
. É isso que habilita obr_netfilter
módulo e permite que você apliqueiptables
regras também ao tráfego em ponte.Exemplo não testado, supondo que entendi corretamente:
Você está executando um host de virtualização, que executa uma máquina virtual KVM que possui uma interface de rede virtual nomeada
vifX
conforme vista no host. A rede virtual é implementada por meio de uma pontebr0
, à qual estão anexadas a interface físicaeno1
e a interface virtualvifX
. A VM tem endereço IP/máscara 10.6.6.6/24. Dentro do mesmo segmento de rede, acessível diretamente viaeno1
, existe outro servidor físico com endereço/máscara IP 10.6.6.100/24.Inicialmente, as conexões SSH podem ser estabelecidas de 10.6.6.100 a 10.6.6.6 e vice-versa. Você gostaria de permitir conexões de 10.6.6.100 a 10.6.6.6, mas bloquear conexões SSH de saída de 10.6.6.6.
Você criaria as regras FORWARD do iptables de rastreamento de conexão padrão, por interface de rede:
Mas inicialmente não funciona, porque você não está roteando o tráfego entre a VM e o mundo externo; você está fazendo uma ponte . Portanto, você também permite
br_netfilter
aplicar asiptables
regras ao tráfego em ponte:Agora, o host físico 10.6.6.100 pode usar SSH na VM 10.6.6.6, mas a VM não pode fazer conexões SSH de saída para a porta 22 em qualquer lugar. Nem mesmo para outros hosts no mesmo segmento de rede.
Mais informações
ebtables
aqui: https://ebtables.netfilter.org/index.htmlEspecificamente sobre
br_netfilter
e como ativá-lo: https://ebtables.netfilter.org/documentation/bridge-nf.html