nftablesで時間によってパケットを異なるようにフィルタリングする方法は?

nftablesで時間によってパケットを異なるようにフィルタリングする方法は?

たとえば、00:00~04:00までの特定のトラフィックをブロックしたいとします。 nftablesでこれは可能ですか?

(明らかに、この時点で設定を変更するためにcronジョブを設定できますが、これを行うためのnftables "デフォルト"メソッドがあるかどうか疑問に思います。)

答え1

これを行う最近のパッチがありますが、まだどのバージョンでも利用できません。

以下は関連パッチです(ただし、シリーズの一部であるため、単独で適用するには不十分な場合があります)。

Linuxカーネル:
[v5,2/2] netfilter: nft_meta: 時間一致のサポート

libnftnl(ユーザーモードの下位レベルのnftablesライブラリ):
[libnftnl,v2,1/2] expr: メタ: NFT_META_TIME_{NS,DAY,HOUR} を通知します。

nftables(ユーザーモードコマンド):
[nft,2/4] 元: 「時間」、「曜日」、「時」という新しい条件を導入

いくつかの使用例:

  time < "2019-06-06 17:00" drop;
  time < "2019-06-06 17:20:20" drop;
  time < 12341234 drop;
  day "Saturday" drop;
  day 6 drop;
  hour >= 17:00 drop;
  hour >= "17:00:01" drop;
  hour >= 63000 drop;

[...]
私たちは、クロスタイムレンジ(例:23:15-03:22)を正しく処理するために、範囲内で左右の値を交換します。

2019年8月17日にカーネルパッチが提出されましたが、必ずこれを経なければなりません。nf - 次Next ネットワークそして5.4-rc1にマージ 2019年9月18日。カーネル5.4は数週間以内にリリースされる予定です。

したがって、上記の例に基づいてまだテストしていませんが、カーネル5.4、libnftnl 1.1を使用すると、00:00から04:00の間にローカルメールサーバーに着信接続を切断する方法になる可能性があります. .5 実行中ですか?そしてnftables 0.9.3? :

#!/usr/sbin/nft -f

table inet filter {
    chain input {
        type filter hook input priority 0; policy accept;
        tcp dport 25 hour 00:00-04:00 drop
    }
}

関連情報