iptables: qual a diferença entre filtro e mangle

1

Estou usando o iptables para marcar o pacote e quero rotear com base nas marcas.

Primeiro adicionei a regra ip:

sudo ip rule add fwmark 1 prohibit

(O "proibir" é apenas para teste, vou alterá-lo para alguma tabela de rotas mais tarde.)

Então comecei a marcar os pacotes:

sudo iptables -A OUTPUT -d 192.168.1.0/24 -j MARK --set-mark 1

Mas o computador ainda pode acessar as redes 192.168.1.0/24.

Após um longo tempo pesquisando e lutando, eu tentei:

sudo iptables -t mangle -A OUTPUT -d 192.168.1.0/24 -j MARK --set-mark 1

Funciona e a conexão foi bloqueada.

No primeiro caso, a tabela padrão do filtro é usada. Então, minha pergunta é qual é a diferença entre a tabela mangle e a tabela de filtros? Qual deles deve ser usado em quais casos? Pelo que entendi, todas essas tabelas serão consultadas antes da política de roteamento, então por que a tabela de filtros não funciona corretamente?

    
por platinor 02.08.2013 / 09:13

2 respostas

4

mangle é para alterar pacotes (modificando), enquanto filter destina-se apenas a filtrar pacotes.

Uma conseqüência disso é que, em LOCAL_OUT , depois de percorrer as tabelas e obter a decisão de filtragem, mangle pode tentar refazer a decisão de roteamento, supondo que a decisão de filtragem não seja descartar ou assumir o controle da decisão pacote, chamando ip_route_me_harder , enquanto filter apenas retorna a decisão de filtragem.

Detalhes em net/ipv4/netfilter/iptable_mangle.c e net/ipv4/netfilter/iptable_filter.c .

    
por 02.08.2013 / 11:57
0

Talvez o alvo MARK só possa ser usado com a tabela Mangle e nenhum outro. Verifique este .

    
por 24.09.2013 / 14:22