我需要nftables
对源自特定主机的所有流量应用规则,但数据包不一定包含正确的 FQDN,因此我需要依赖 IP 地址。问题在于,为 FQDN 返回了多个冗余 IP,这些 IP 可能会不时更改顺序/优先级,甚至可能被完全替换。
因为返回了多个 IP,所以我必须使用可变的 name set
,但我需要定期更新该集,以确保我们有最新的 IP 列表进行匹配。
named
我们的服务器上有 BIND9 ( ),所以我的想法是我可以有一个 cron 作业脚本:
- 使用以下命令刷新 FQDN 的本地 dns 解析器
rdnc flushname...
: - 然后挖掘它来更新解析器缓存
dig +short...
, nft add element...
与新人一起奔跑,- 刷新旧的命名集
nft delete element...
这是解决这个问题的正确方法吗?或者我是否过度思考了已经以另一种方式解决的问题?
答案1
您应该在删除旧元素之前创建新元素。这样总有一组可以匹配,不会因为防火墙更新而丢失数据包。短暂的间隙可能不会造成任何问题,但没有理由不这样做。
答案2
实际上,您可以通过 nft -f 使用 nftables 原子加载行为。在该文件中,您将首先对集合发出刷新,然后仅添加当前 DNS 挖掘返回的元素。无需删除不再包含在集合中的内容,因为您是从头开始声明集合内容的。应该更容易实施...