Acontece que richard estava certo. O tipo list:set
é de fato a solução, embora eu ache que a redação da documentação é um tanto confusa, se não enganosa.
É possível ter, digamos, o seguinte conteúdo a ser usado com ipset restore
:
create dns4 hash:ip family inet
create dns6 hash:ip family inet6
create dns list:set
add dns dns4
add dns dns6
você pode usar ipset add
para adicionar IPs aos conjuntos de membros (ou seja, dns4
e dns6
respectivamente), mas não ao super conjunto ( dns
) do tipo list:set
.
No entanto, o objetivo SET
( -j SET --add-set dns src --exist
) pode realmente ser informado para adicionar o IP a dns
e só adicionará ao conjunto para o qual é possível, o que no nosso caso depende da opção family
. Isso será mais difícil com mais conjuntos que podem ser qualificados para adicionar e IP (ou rede ou ...). Nesse caso, o primeiro será usado para adicionar a entrada.
Isso significa que list:set
pode ser usado para reduzir pela metade o número de regras, caso contrário você teria que corresponder a um conjunto de IPs por regra IPv4 e IPv6, respectivamente, com uma regra idêntica.