Iptables: como agrupar facilmente regras em cadeia?

1

Eu tenho algumas regras do netfilter assim:

iptables -I INPUT -j NFQUEUE -p udp --dport 4444
iptables -t mangle -I INPUT -j MARK --set-mark 100 -p udp --dport 4444
iptables -I OUTPUT -j NFQUEUE -p udp --sport 4444
iptables -t mangle -I OUTPUT -j MARK --set-mark 200 -p udp --sport 4444

Eu preciso de uma maneira simples de agrupar essas regras, visar excluí-las todas juntas, como esta

iptables -N MYCHAIN

iptables -I MYCHAIN -j NFQUEUE -p udp --dport 4444
iptables -t mangle -I MYCHAIN -j MARK --set-mark 100 -p udp --dport 4444
iptables -I MYCHAIN -j NFQUEUE -p udp --sport 4444
iptables -t mangle -I MYCHAIN -j MARK --set-mark 200 -p udp --sport 4444

# Fast deleting
iptables -F MYCHAIN 
iptables -X MYCHAIN 

Mas isso não funciona, certamente eu tenho que conectar a cadeia padrão com MYCHAIN, mas não sei como. Existem soluções melhores ou mais simples?

    
por Emilio 27.05.2011 / 16:16

1 resposta

1

Sua cadeia está na tabela de filtros (desde que você não especificou uma tabela quando foi criada, ela acaba lá por padrão), mas você está tentando referenciá-la a partir da tabela mangle, onde ela não existe. / p>

Você precisaria especificar a tabela correta, assim:

iptables -t mangle -N MYCHAIN

Além disso, para usar o destino NFQUEUE, você precisa ter o módulo do kernel nfnetlink_queue carregado. A meta MARK precisa ser definida na cadeia PREROUTING da tabela mangle. No seu exemplo acima, ele é definido na cadeia INPUT.

Então, para resumir, para que isso funcione, você provavelmente precisará fazer algo assim:

iptables -t mangle -N MYCHAIN
iptables -t mangle -I MYCHAIN -j NFQUEUE -p udp --dport 4444
iptables -t mangle -I MYCHAIN -j MARK --set-mark 100 -p udp --dport 4444
iptables -t mangle -I MYCHAIN -j NFQUEUE -p udp --sport 4444
iptables -t mangle -I MYCHAIN -j MARK --set-mark 200 -p udp --sport 4444

E, em seguida, faça referência a isso nas tabelas relevantes, da seguinte forma:

iptables -t mangle -I PREROUTING -j MYCHAIN

A limpeza e a exclusão da cadeia não devem ocorrer no mesmo arquivo de script, pois elimina efetivamente qualquer possibilidade de as regras serem executadas.

    
por 27.05.2011 / 17:05