Nftables

您如何根據 nftables 中的時間對數據包進行不同的過濾?

  • November 12, 2019

例如,我想在 00:00 到 04:00 之間阻止某些流量。這在 nftables 中可能嗎?

(顯然,我可以設置一個在這些時候更改配置的 cron 作業 - 但我想知道是否有實現此目的的 nftables“本機”方式。)

最近有一些更新檔可以做到這一點,但它們還沒有在任何版本中可用。

這是相關的更新檔(但它們是系列的一部分,它們可能不足以單獨應用)。

linux核心:

$$ v5,2/2 $$netfilter: nft_meta: 支持時間匹配

libnftnl(使用者態低級 nftables 庫):

$$ libnftnl,v2,1/2 $$expr: meta: 使 NFT_META_TIME_{NS,DAY,HOUR} 已知

nftables(使用者態命令):

$$ nft,2/4 $$meta:引入新條件“時間”、“日”和“小時”

一些使用範例:

  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-nextnet-next並在 2019 年 9 月 18 日合併為 5.4-rc1 。核心 5.4 可能會在幾週後發布。

所以根據上面的例子,雖然我還不能測試它,這應該是一種在 00:00 到 04:00 之間斷開與本地郵件伺服器的傳入連接的方法,一旦使用核心 5.4、libnftnl 1.1.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
   }
}

引用自:https://unix.stackexchange.com/questions/551821