web-dev-qa-db-ja.com

単一のルールでinetとinet6のIPセットを一致させる方法はありますか?

同じルール内に1つのIPv4と1つのIPv6IPセット(ipset(8))を含めることは可能ですか?

IPv4アドレスの1つのセットとIPv6アドレスの別のセットにそれぞれ依存するいくつかのルールがありますが、それ以外は同じです。


ipset(8)には希望に満ちた機能があることを付け加えておきますが、目前の問題に対する解決策はありません。

list:set
    The list:set type uses a simple list in which you can store set names.
    [...]
    Please note: by the ipset command you can add, delete and test the
    setnames in a list:set type of set, and not the presence of a set's
    member (such as an IP address).
6
0xC0000022L

richard は正しかったことがわかりました。 list:setタイプは確かに解決策ですが、誤解を招くものではないにしても、ドキュメントの文言はやや紛らわしいと思います。

ipset restoreで使用する次のコンテンツを指定することができます。

create dns4 hash:ip family inet
create dns6 hash:ip family inet6
create dns  list:set
add dns dns4
add dns dns6

次に、ipset addを使用してメンバーセットにIPを追加できます(つまり、それぞれdns4dns6)、ただし、タイプlist:setスーパーセットdns)には適用されません。

ただし、SET-j SET --add-set dns src --exist)ターゲットは、実際にはIPをdnsに追加するように指示でき、それが可能なセットにのみ追加されます。この場合は、 familyオプション。これは、追加およびIP(またはネットワークまたは...)の対象となる可能性のあるセットが増えると難しくなります。その場合、最初のセットがエントリの追加に使用されます。

つまり、list:setを使用すると、ルールの数を半分にすることができます。そうしないと、IPv4およびIPv6ルールごとに設定されたIPを、それ以外は同じルールとそれぞれ一致させる必要があります。

4
0xC0000022L