Nftables
您如何根據 nftables 中的時間對數據包進行不同的過濾?
例如,我想在 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-next、net-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 } }