Mark Raymond Asked: 2019-11-13 12:20:20 +0800 CST2019-11-13 12:20:20 +0800 CST 2019-11-13 12:20:20 +0800 CST 您如何根据 nftables 中的时间对数据包进行不同的过滤? 772 例如,我想在 00:00 到 04:00 之间阻止某些流量。这在 nftables 中可能吗? (显然,我可以设置一个在这些时候更改配置的 cron 作业 - 但我想知道是否有实现此目的的 nftables“本机”方式。) nftables 1 个回答 Voted Best Answer A.B 2019-11-13T13:34:31+08:002019-11-13T13:34:31+08:00 最近有一些补丁可以做到这一点,但它们还没有在任何版本中可用。 这是相关的补丁(但它们是系列的一部分,它们可能不足以单独应用)。 linux内核: [v5,2/2] netfilter:nft_meta:支持时间匹配 libnftnl (userland low level nftables library): [libnftnl,v2,1/2] expr: meta: Make NFT_META_TIME_{NS,DAY,HOUR} nftables (userland command): [nft,2/4] meta: 引入新条件 'time', 'day' 和 'hour' 一些使用示例: 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 } }
最近有一些补丁可以做到这一点,但它们还没有在任何版本中可用。
这是相关的补丁(但它们是系列的一部分,它们可能不足以单独应用)。
linux内核:
[v5,2/2] netfilter:nft_meta:支持时间匹配
libnftnl (userland low level nftables library):
[libnftnl,v2,1/2] expr: meta: Make NFT_META_TIME_{NS,DAY,HOUR}
nftables (userland command):
[nft,2/4] meta: 引入新条件 'time', 'day' 和 'hour'
虽然内核补丁是在 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?: