nftablesで名前で名前付きインタフェースセットを作成するには?

nftablesで名前で名前付きインタフェースセットを作成するには?

コレクションの使用nftables本当に素晴らしい。私は現在私のルールセットで次の文をたくさん使いますnftables.conf

iifname {clients0, dockernet} oifname wan0 accept \
    comment "Allow clients and Docker containers to reach the internet"

上記のルールの{clients0, dockernet}一つ匿名(インライン)インターフェイスセット。ルールを繰り返し繰り返すのではなく、ファイルの上部に次のようなインタフェースセットを定義したいと思います。名前付きセットnftablesから。これマンページ(Debianバスター)さまざまな種類のコレクションに対してこれを行う方法を示します。ipv4_アドレスipv6_アドレスエーテルの住所inet_protoinet_serviceそして表示。しかし、名前や文字列などの単純な基本型で、インターフェイスでは機能しないようです。

次の方法がありますが、与えられたエラーでは機能しません。

  1. タイプ省略:

    table inet filter {
      set myset {
        elements = {
          clients0,
          dockernet,           
        }
      }
      [...]
    }
    

    結果: Error: set definition does not specify key

  2. 使用法stringのタイプ:

    table inet filter {
      type string;
      set myset {
        elements = {
          clients0,
          dockernet,           
        }
      }
      [...]
    }
    

    結果: Error: unqualified key type string specified in set definition

上部に表示される匿名性セットの名前を指定する方法は本当にありませんか?

ベストアンサー1

検索してバージョン0.9.0のソースコード:

static const struct datatype *datatypes[TYPE_MAX + 1] = {

[...]

  [TYPE_IFINDEX]      = &ifindex_type,

[...]

  [TYPE_IFNAME]       = &ifname_type,
};

それから彼らがどこにいるのかを調べてくださいはい 限られた:

const struct datatype ifindex_type = {
  .type       = TYPE_IFINDEX,
  .name       = "iface_index",
  .desc       = "network interface index",

[...]

const struct datatype ifname_type = {
  .type       = TYPE_IFNAME,
  .name       = "ifname",
  .desc       = "network interface name",

(この回答を書くとき)、必須タイプはiface_index(例:)iif loifname(例:)です。iifname "lo"nftマニュアルページには文書化されていません。

nft add set inet filter if-index-set '{ type iface_index;  }'
nft add set inet filter if-name-set '{ type ifname;  }'

nft add element inet filter if-index-set '{ lo }'
nft add element inet filter if-name-set '{ lo }'

nft add chain inet filter input '{ type filter hook input priority 0; }'
nft add rule inet filter input iif @if-index-set counter
nft add rule inet filter input iifname @if-name-set counter

気づく名前があれば2022年5月31日に、コレクションにワイルドカードサポートが追加されました。nftables 1.0.3。名前付きセットを使用する必要があり、flags intervals最後のワイルドカードは*+iptables)。

おすすめ記事