Eu queria saber sobre a semântica deipset(8)
.
É possível adicionar uma regra que corresponda a um conjunto iptables
e depois manipular o conjunto, ou posso apenas criar um conjunto e trocá-lo por um conjunto mais antigo para aplicá-lo a uma iptables
regra que corresponda ao nome?Ou seja, posso adicionar/remover de/para um conjunto de IP ad hoc ou posso trocar conjuntos inteiros enquanto os conjuntos estão em uso ativo?
A razão pela qual pergunto é a seguinte. Digamos que eu crie um conjunto
ipset create PCs hash:ip
ipset add PCs 1.1.1.1
ipset add PCs 2.2.2.2
... etc. E uma regra que permite acesso ao HTTP:
iptables -A INPUT -p tcp --dport 80 -m set --set PCs src -j ACCEPT
O que acontece quando corro:
ipset add PCs 3.3.3.3
a iptables
regra agora terá efeito imediato também para IP 3.3.3.3?
Eu vi que é possível manipular -j SET --add-set ...
conjuntos de IP ad hoc dentro das iptables
regras. Isso me faz pensar que deveria funcionar manipular um conjunto em qualquer ponto.
Contudo, o ipset
local do projeto parece sugerir que trocar um conjunto novo (ajustado) por outro é a melhor alternativa. Seja via ipset swap
ou via ipset restore -!
.
Alguém pode esclarecer isto?
Responder1
Você pode adicionar e remover IPs de seus conjuntos já definidos instantaneamente. Esta é uma das ideias por trás dos IPsets: se isto não fosse possível, toda a set
extensão de iptables
não faria muito sentido.
O objetivo principal ipset
era permitir que você definisse (também dinamicamente) classes de correspondências (por exemplo, para colocar hosts maliciosos na lista negra dinamicamente, sem a necessidade de adicionar magicamente uma regra para cada host).
trecho dopágina inicial do ipset
- armazene vários endereços IP ou números de porta e compare com a coleção do iptables de uma só vez
- atualizar dinamicamente as regras do iptables em endereços IP ou portas sem perda de desempenho
- expresse conjuntos de regras complexos baseados em portas e endereços IP com uma única regra iptables e se beneficie da velocidade dos conjuntos de IP