有多少人觉得 nftables 比 iptables 更好?

2018-09-21 11:13:25 +08:00
 mytry

最近研究了下 iptables 的后继者 nftables。感觉这玩意还是挺有趣的,在用户态把网络规则编译成字节码,然后由内核的虚拟机执行。尽管和 iptables 一样都是基于 netfilter 的,但灵活性高多了。

之前使用 iptables 匹配大量数据时,还得需要 ipset 配合,而在 nftables 里内置查表查集合的功能,这点是非常方便的。

不过觉得 nftables 的槽点还是很多。

第一个就是语法太晦涩了。比如判断语句都不用加 if、查表都不用索引符号,等等。稍微长一点的语句要是不换行的话,就很难读懂了。

只能自己通过续行、缩进,来快速识别哪些是条件,哪些是动作。比如开头几行没缩进的是条件,有缩进的是动作,一行一个,这样就相对好理解一些:

当然 nftables 本质上仍是基于规则的,其实算不上语言,所以也不指望像编程那样控制网络了。


第二个是性能问题。在普通的场合下 nftables 还没有 iptables 性能高,比如这里有个测试 https://developers.redhat.com/blog/2017/04/11/benchmarking-nftables/

大致原因是 iptables 的规则是线性存储的,访问会更快一些。(当然添加删除时会慢得多)

这就是很大一个槽点了,既然都用字节码了,为什么不再加个 JIT 编译器,编译成机器指令呢。事实上 iptables 里对于复杂的匹配,还可以使用 BPF 匹配器(类似 tcpdump 规则),那个性能还是很的。

另外最近 Linux 4.18 还真出了一个 bpfilter,据说比 nftables/iptables 都先进的。不过暂时还没使用。。。

10126 次点击
所在节点    程序员
6 条回复
lihongjie0209
2018-09-21 11:15:57 +08:00
生产环境有什么用什么, 没得选
20150517
2018-09-21 11:18:04 +08:00
还是用 iptables,因为我懒得学
likuku
2018-09-21 11:20:21 +08:00
云端环境的话,都是优先使用 VPC 之类云平台自己的防火墙的,不推荐容易把自己锁死在家门外的 OS 内置防火墙,
且不说 OS 自带防火墙不便 API 化批量自动管理,维护成本更高
iRiven
2018-09-21 13:08:42 +08:00
iptables 比较顺手,nftables 比较先进 好像。
mytry
2018-09-21 13:49:47 +08:00
@likuku 简单的规则一般都在云平台上配置,比如封 IP 封端口等等,复杂的策略貌似不容易实现,而且不同的云平台支持的策略都不一样吧。之前用阿里云,好像只支持最基本的一些拦截策略,而且规则还有 100 条上限。。。
jimzhong
2018-09-21 19:42:29 +08:00
目前还用 iptables。以后都会被 ebpf 取代把。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/491454

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX